하루에 한 문제
멀티 프로세스와 멀티 스레드 본문
멀티 프로세스
장점: 안정성이 높음, 하나의 프로세스가 멈추더라도 다른 프로세스는 동작 가능, 동기화 작업 필요없음
단점: 각각 독립된 메모리 영역을 가지고 있어 통신을 위해 IPC등을 사용해야함, Context Switching으로 인한 성능 저하
멀티 스레드
장점: 프로그램의 응답시간 단축, Context Switching이 일어나도 적은 오버헤드를 가짐(스택영역만 일어남), 자원의 공유로 메모리 낭비를 줄일 수 있음
단점: 동기화문제, 하나의 쓰레드에 문제가 생기면 프로세스 전체에 영향을 줄 수 있음
멀티 스레드는 멀티 프로세스에 비해 상당한 이점을 가진다
1. Context Switching시 공유 메모리 만큼의 오버헤드가 줄어든다.
2. Stack영역을 제외한 Heap, Data, Code 영역을 공유함으로써 메모리 낭비를 줄일 수 있다.
즉 계산기와 메모장 처럼 서로 완전히 상관없는 프로그램이라면 멀티 프로세스가 좋지만 서로 관련된 기능들은 멀티 스레드로 구현하는 것이 훠어얼씬 좋다.
멀티 스레드의 효율성과 안정성 문제
- 여러 개의 스레드가 동일한 데이터 공간을 공유하면서 이들을 수정한다는 점에 필연적으로 생기는 문제이다.
- 멀티 프로세스의 방식의 프로그램에서 하나의 프로세스가 자신의 데이터 공간을 망가뜨린다면 그것은 해당 프로세스의 중단을 야기할 것이다.
- 하지만 멀티 스레드 방식의 프로그램에서는 하나의 스레드가 자신이 사용하던 데이터 공간을 망가뜨린다면 그 결과는 하나의 데이터 공간을 공유하는 모든 스레드를 작동불능 상태로 만들어 버릴 것이다.
이러한 문제에 대비하기 위해 Critical Section 기법이 존재한다. 이는 다음에 알아보자~
참고
'CS > 운영체제' 카테고리의 다른 글
Context Switching(문맥교환) (0) | 2021.05.18 |
---|---|
스케줄러 (scheduler) + Job,Ready,Device Queue란? (0) | 2021.05.18 |
프로세스 간 통신 (IPC, Inter Process Communication) (0) | 2021.05.18 |
Thread(쓰레드)란? (0) | 2021.05.17 |
프로세스 (0) | 2021.05.17 |
Comments