하루에 한 문제

멀티 프로세스와 멀티 스레드 본문

CS/운영체제

멀티 프로세스와 멀티 스레드

dkwjdi 2021. 5. 18. 00:41

멀티 프로세스

장점: 안정성이 높음, 하나의 프로세스가 멈추더라도 다른 프로세스는 동작 가능, 동기화 작업 필요없음

단점: 각각 독립된 메모리 영역을 가지고 있어 통신을 위해 IPC등을 사용해야함, Context Switching으로 인한 성능 저하

멀티 스레드

장점: 프로그램의 응답시간 단축, Context Switching이 일어나도 적은 오버헤드를 가짐(스택영역만 일어남), 자원의 공유로 메모리 낭비를 줄일 수 있음

단점: 동기화문제, 하나의 쓰레드에 문제가 생기면 프로세스 전체에 영향을 줄 수 있음

 

 

멀티 스레드는 멀티 프로세스에 비해 상당한 이점을 가진다

1. Context Switching시 공유 메모리 만큼의 오버헤드가 줄어든다.

2. Stack영역을 제외한 Heap, Data, Code 영역을 공유함으로써 메모리 낭비를 줄일 수 있다.

 

즉 계산기와 메모장 처럼 서로 완전히 상관없는 프로그램이라면 멀티 프로세스가 좋지만 서로 관련된 기능들은 멀티 스레드로 구현하는 것이 훠어얼씬 좋다.

 

멀티 스레드의 효율성과 안정성 문제

  • 여러 개의 스레드가 동일한 데이터 공간을 공유하면서 이들을 수정한다는 점에 필연적으로 생기는 문제이다.
  • 멀티 프로세스의 방식의 프로그램에서 하나의 프로세스가 자신의 데이터 공간을 망가뜨린다면 그것은 해당 프로세스의 중단을 야기할 것이다. 
  • 하지만 멀티 스레드 방식의 프로그램에서는 하나의 스레드가 자신이 사용하던 데이터 공간을 망가뜨린다면 그 결과는 하나의 데이터 공간을 공유하는 모든 스레드를 작동불능 상태로 만들어 버릴 것이다.
    이러한 문제에 대비하기 위해 Critical Section 기법이 존재한다. 이는 다음에 알아보자~


 

참고

https://dheldh77.tistory.com/entry/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C%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

https://devuna.tistory.com/21

'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