멀티 프로세싱이란?

멀티프로세싱, 멀티 태스킹, 멀티 프로그래밍, 멀티 쓰레딩 ... 멀티, 멀티, 멀티 ...


참으로 많이 들어보긴했는데, 컴퓨터공학을 전공한 학부 졸업생치고 이 4가지 정확히 구분할 학생 거의 없다고 확신합니다.

이 용어들은 취업면접에서 기본적으로 다루는 개념이기도 하고, 학부 이후에 대학원에 진학한다면 당연히 알고 있어야 하는 기본적인 내용이지만, 4개의 용어들이 이름도 비슷비슷하고 그게 그거인거 같기도 하고... 


그래서 이 4가지 용어부터 시작해서 앞으로 조금씩 정리해 나갈려고 합니다.



멀티프로세싱(Multi-processing)


용어의 단어부터 확인하면 그 의미를 유추할 수 있을 것 같습니다.

'멀티'라는 단어와 '프로세싱'이라는 단어가 합쳐졌으니 여러 개의 프로세싱, 여러 개의 프로세서라는 의미가 생각나지 않나요?


단어 그대로 하나의 프로세서가 아니라 여러 개의 프로세서가 서로 협력적으로 일을 처리하는 것을 가리킵니다.

많은 양의 작업을 빠른 시간에 처리하기 위해서는 단일 프로세서가 처리하는 것보다 멀티 프로세서로 처리하는 것이 빠를겁니다.


즉, 여러 개의 프로세서가 작업을 병렬처리 하는 것으로 정의하는 것이 정확한 개념일 것입니다.


위 개념도(?)가 잘 표현해주고 있습니다. 프로세서(여기선 CPU)들이 JOB(작업)을 하나씩 전담해서 처리하는 것이 아니고,

하나의 작업을 처리할때에도 여러개의 프로세서가 협력적으로 작업을 처리하는 것을 나타내고 있습니다.


그럼 여기서 의문점이 생길 수 있는데, "아니 그럼, 그냥 CPU들이 하나씩 JOB 맡아서 순서대로 일하는 거랑 무슨 차이입니까?" 라고 물으실 수도 있습니다. 몇가지 장점이 있으니깐 멀티 프로세싱을 사용하겠죠?


우선, 멀티 프로세싱을 이용할 경우 여러개의 단일 프로세싱보다 비용이 절약될 수 있습니다. 이는 프로세서가 주변장치, 대용량 저장장치, 전원공급장치를 서로 공유하고 있기 때문입니다. 만약에 여러 프로그램이 동일한 데이터집합에 대해 연산을 한다면, 하나의 디스크에 데이터를 저장하고 모든 프로세서가 이들을 공유하게 하는 것이 아무래도 좀 더 비용이 저렴합니다.


또한 기능들이 여러 개의 프로세서에 적절히 분산된다면 한 프로세서가 고장나더라도 시스템이 정지하는 것이 아니라 단지 속도만 느려지게 됩니다. 10개의 프로세서 중에 1개가 고장나면 나머지 9개의 프로세서가 고장난 프로세서의 작업을 나누어 실행하게 되는데 이때 전체 시스템이 완전히 정지하는 것이 아니라 단지 10% 정도 느려질 뿐입니다. 이처럼 신뢰성도 증가하는 장점이 있습니다.


이 멀티 프로세싱에는 2가지 종류가 있습니다.

바로 대칭형 멀티 프로세싱(SMP, Symmetric Multi-processing, 대칭형 다중 처리)과 비대칭형 멀티 프로세싱(AMP, Asymmetric Multi-processing)입니다.


SMP는 운영체계와 메모리를 공유하는 여러 프로세서가 프로그램을 수행하는 것을 말합니다. SMP에서는 프로세서가 메모리와 입출력 버스 및 데이터 path를 공유하며, 하나의 운영체계가가 모든 프로세서를 관리합니다. 자원들을 서로 공유하면서 동기화가 필요하다는 말이죠.


AMP는 각 프로세서가 특정된 일을 맡아서 합니다. 주 프로세서가 전체 시스템을 통제하고 다른 프로세서들은 주인의 명령을 따르거나 또는 미리 정해진 일을 수행합니다. 이 방식은 주-중속(master-slave) 시스템의 형태로서 주 프로세서가 종속 프로세서들을 스케쥴하고 일을 할당합니다.



멀티프로세싱은 이제 확실하게 이해하시겠죠?


나중에 더 자세히 공부하게 될 때 내용을 더 자세히 기술하도록 하겠습니다.





<멀티 태스킹이란?> 글 바로가기

<멀티 프로그래밍이란?> 글 바로가기


이 글을 공유하기

댓글(2)

  • 대학생
    2016.04.12 19:13

    멀티 프로세싱이 이렇다면 parallel processing과의 차이점은 뭔가요 ?

    제가 아는바로는 multiprocessing은 processor마다 다른 job을 동시에 처리하는것으로 알고 있고 , parallel processing이 지금 올려두신 것처럼 processor들이 협력하여 하나의 일을 더욱 빠르게 처리하는것으로 알고있는데요.

    제가 알고있는것이 틀린것인지, 아니면 parallel processing이 multiprocessing안에 포함되는 개념인건지 궁금합니다.

  • ㅇㅇ
    2019.03.08 21:00

    이해도 쉽구 내용도 너무 좋아요! 감사합니다

Designed by JB FACTORY