멀티프로세스와 멀티쓰레드의 특징에 대해 설명해주세요.
•
두 방법은 동시에 여러 작업을 수행하는 점에서 동일하지만, 각각의 장단이 있으므로 적용하는 시스템에 따라 적합한 동작 방식을 선택하고 적용해야 합니다.
•
멀티 스레드는 하나의 프로세스에 여러 스레드로 자원을 공유하며 작업을 나누어 수행하는 것입니다.
◦
멀티 스레드는 적은 메모리 공간을 차지하고 Context Switching이 빠른 장점이 있지만, 동기화 문제와 하나의 스레드 장애로 전체 스레드가 종료 될 위험을 갖고 있습니다.
•
멀티 프로세스는 두개 이상 다수의 프로세서(CPU)가 협력적으로 하나 이상의 작업(Task)을 동시에 처리하는 것입니다. (병렬처리)
◦
프로세스 자체는 독립적이기 때문에 다른 프로세스에 영향을 주지 않아 안정성이 높지만, 멀티 스레드보다 많은 메모리공간과 CPU 시간을 차지하는 단점이 있습니다.
추가질문 :
각 장단점을 자세히 설명할 수 있을까요?
•
멀티스레드의 장단점
◦
시스템 자원소모 감소 (자원의 효율성 증대)
◦
시스템 처리율 향상 (처리비용 감소)
◦
간단한 통신 방법으로 프로그램 응답시간 단축
◦
자원을 공유하기에 동기화 문제가 발생할 수 있다. (병목현상, 데드락 등)
◦
주의 깊은 설계가 필요하고 디버깅이 어렵다. (불필요 부분까지 동기화하면, 대기시간으로 인해 성능저하 발생)
◦
하나의 스레드에 문제가 생기면 전체 프로세스가 영향을 받는다.
◦
단일 프로세스 시스템의 경우 효과를 기대하기 어렵다.
•
멀티프로세스의 장단점
◦
독립된 구조로 안전성이 높은 장점이 있다.
◦
프로세스 중 하나에 문제가 생겨도 다른 프로세스에 영향을 주지 않아, 작업속도가 느려지는 손해정도는 생기지만 정지되거나 하는 문제는 발생하지 않는다.
◦
Context Switching이 자주 일어나서 주소 공간의 공유가 잦아지면 캐시 메모리 초기화 등 무거운 작업이 진행되고 시간이 소모되는 등 오버헤드가 발생한다.
◦
(CPU에서 여러 프로세스를 돌아가면서 작업을 처리하는 데 이 과정을 Context Switching라 한다. 실행중인 프로세스가 대기하게 되면, 작업상태를 보관하게 됬다가, 복구하는 작업)