Related to: Operating System
멀티 프로세스(Multi Process)와 멀티 스레드(Multi Thread)
프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이고 스레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위이다.
https://wooody92.github.io/os/%EB%A9%80%ED%8B%B0-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EB%A9%80%ED%8B%B0-%EC%8A%A4%EB%A0%88%EB%93%9C/
설명
- Multi-process
- 두개 이상 다수의 프로세서(
CPU)가 협력적으로 하나 이상의 작업(Task)을 동시에 처리하는 것 - 각 프로세스 간 메모리 구분이 필요하거나 독립된 주소 공간을 가져야 할 경우 사용
- 장점
- 하나의 프로세스가 죽더라도 다른 프로세스에 영향을 주지 않아 안정성이 높음
- 프로세스 중 하나에 문제가 생겨도 다른 프로세스에 영향을 주지 않아, 작업속도가 느려지는 손해정도는 생기지만 정지되거나 하는 문제는 발생하지 않음
- 여러개의 프로세스가 처리되어야 할 때 동일한 데이터를 사용하고, 이러한 데이터를 하나의 디스크에 두고 모든 프로세서(
CPU)가 이를 공유하면 비용적으로 저렴
- 하나의 프로세스가 죽더라도 다른 프로세스에 영향을 주지 않아 안정성이 높음
- 단점
- 멀티 스레드보다 많은 메모리공간과 CPU 시간을 차지
Context Switching과정에서 캐시 메모리 초기화 등 무거운 작업이 진행되고 시간이 소모되는 등 오버헤드가 발생
- 두개 이상 다수의 프로세서(
- Multi-thread
- 하나의 프로세스에 여러 스레드로 자원을 공유하며 작업을 나누어 수행하는 것
- 장점
- 멀티 프로세스보다 적은 메모리 공간을 차지하고
Context Switching이 빠름- 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어 자원을 효율적으로 관리
- 프로세스 내 작업이므로, 캐시 메모리를 비울 필요가 없음
- 프로세스 간의 통신보다 스레드 간의 통신 비용이 적음
- 멀티 프로세스보다 적은 메모리 공간을 차지하고
- 단점
- 하나의 스레드 장애로 전체 스레드가 종료 될 위험
- 자원을 공유하기에 동기화 문제가 발생할 수 있음
- 병목현상
- 데드락
- 주의 깊은 설계가 필요, 디버깅의 어려움
- Context Switching
CPU는 한번에 하나의 프로세스만 실행 가능CPU에서 여러 프로세스를 돌아가면서 작업을 처리하는 데, 이 과정이Context Switching- 프로세스가 대기를 하면서 해당 프로세스의 상태(
Context)를 보관하고, 대기하고 있던 다음 순서의 프로세스가 동작하면서 이전에 보관했던 프로세스의 상태를 복구하는 작업