멀티 프로세스와 멀티 스레드 개념을 이해하려면 동시성과 병렬성을 알아야 한다
동시성: 하나의 코어에서 여러 작업을 번갈아 가면서 처리하는 방식
- cpu는 한 번에 하나의 작업만 처리할 수 있어 여러 작업을 조금씩 돌아가면서 처리한다
- 이 작업을 콘텍스트 스위칭이라고 한다
병렬성: CPU가 여러개(멀티 코어) 있어 각 CPU에서 각 작업을 동시에 처리하는 방식
- 물리적인 시간 관점에서 동시에 여러 작업이 처리된다
멀티 프로세스: 응용프로그램 하나를 여러 프로세스로 구성하는 것을 의미
- 멀티 프로세스 환경에서는 한 프로세스가 죽어도 다른 프로세스에 영향을 주지 않는다
- 그래서 응용 프로그램을 프로세스 하나로 구성하는 것보다 여러 개로 구성하는 것이 안정적이다
- 그러나 시간과 메모리 공간을 많이 사용한다는 단점이 있다
- 앞서 말했듯이 cpu는 콘텍스트 스위칭을 하며 작업을 한다
- 이 때 CPU에서 기존에 처리하던 프로세스가 할당받은 메모리 영역을 다른 프로세스에서 사용할 수 있게 교체하며 시간과 메모리가 필요한데 이를 오버헤드라고 한다
- 또한 프로세스는 독립적인 메모리를 할당받는다
- 따라서 프로세스 간에 공유할 자원이 있다면 IPC를 통해 프로세스 간에 자원을 공유해야 한다
- 그래서 공유할 메모리를 직접 참조하는 것보다 비효율적이다
멀티 스레드: 스레드 여러 개 생성해 스레드들이 각자 다른 작업을 처리하는 것을 의미
- 멀티 스레드는 스레드 간에 힙, 데이터, 코드 영역을 공유한다
- 그래서 콘텍스트 스위칭 할 때 오버헤드가 적게 발생
- IPC를 사용하지 않아도 되어 멀티 프로세스의 단점을 보완할 수 있다
- 따라서 독립적인 메모리 공간을 갖는 프로세스 여러 개 생성하는 것보다 스레드를 여러개 생성하는 것이 자원을 효율적으로 사용 가능
- 스레드 간 자원 공유가 프로세스 간 자원 공유보다 시스템 처리 비용이 적고 프로그램 응답 시간도 단축된다
- 하지만 스택 영역을 다른 스레드와 함께 사용하므로 공유 자원에 대한 동기화가 필수다
- 또한 스레드에 문제가 생기면 프로세스 내 다른 스레드에 영향을 미칠 수 있다\
'CS' 카테고리의 다른 글
10. 콘텍스트 스위칭 (0) | 2024.03.12 |
---|---|
8. 운영체제 - 프로세스 상태도 (0) | 2024.03.05 |
7. 운영체제 - 프로세스의 생성 (0) | 2024.03.05 |
6. 운영체제 - PCB(Process Control block) (0) | 2024.03.05 |
5. 운영체제 - 프로세스와 스레드 (0) | 2024.03.05 |