코딩뚠뚠

[OS 공부] 멀티스레드 & 멀티프로세스 본문

공부/OS 공부

[OS 공부] 멀티스레드 & 멀티프로세스

로디네로 2021. 1. 9. 23:58
반응형

 

멀티스레드

 

하나의 응용프로그램을 여러개의 스레드로 구성하고 각 스레드로 하여금 하나의 작업을 처리하도록 하는 것.

 

웹 서버는 대표적 멀티스레드 응용 프로그램이다.

 


장점 :

 

시스템 자원 소모가 감소된다. (효율성증대)

 - 프로세스를 이용하여 동시에 처리하던 일을 스레드로 구현할 경우 메모리 공간과 시스템 자원 소모가 줄어들게 된다. 스레드 간의 통신이 필요한 경우에도 별도의 자원을 이용하는 것이 아니라 전역 변수의 공간 또는 동적으로 할당된 공간인 Heap 영역을 이용하여 데이터를 주고받을 수 있다.

 

시스템 처리량 증가 (비용감소)

 - 스레드 간 데이터를 주고받는것이 간단해짐

 - 스레드의 context switching은 프로세스와는 달리 캐시 메모리를 비울 필요가 없기 때문에 더 빠르다

 

간단한 통신방법으로 인한 프로그램 응답 시간 단축

 - 스레드는 프로세스 내의 스택 영역을 제외한 모든 메모리를 공유하기 때문에 통신의 부담이 적다.


단점 : 

 

주의 깊은 설계가 필요함

디버깅이 까다로움

단일 프로세스 시스템일 경우 효과 기대가 어려움

다른 프로세스에서 스레드를 제어할 수 없음

멀티스레드의 경우 자원 공유의 문제가 발생

하나의 스레드에 문제가 발생하면 전체 프로세스가 영향받음

 


 

멀티 프로세스

 

하나의 응용프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것

 


장점 :

 

여러 개의 자식 프로세스 중 하나에 문제가 발생하면 그 자식 프로세스만 죽는 것 이상으로 다른 영향이 확산되지 않음.


단점 :

 

Context Switching 에서의 오버헤드 발생

 

 - Context Switching 과정에서 캐시메모리 초기화 등 무거운 작업이 진행되고 많은 시간이 소모되는 오버헤드가 발생하게 된다.

 

 - 프로세스는 각각의 메모리영역을 할당받았기 때문에 프로세스 사이에서 공유하는 메모리가 없어 Context Switching이 발생하면 캐쉬에 있는 모든 데이터를 리셋하고 다시 캐쉬 정보를 불러와야 한다.

 

 - 프로세스 사이의 어렵고 복잡한 통신기법

 

 - 프로세스는 각각의 독립된 메모리영역을 할당받았기 때문에 하나의 프로그램에 속하는 프로세스들 사이의 변수를 공유할 수 없다.

 


 

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

 

멀티스레드는 멀티 프로세스보다 적은 메모리 공간을 가지고 문맥 전환이 빠르다는 장점

 

오류로 하나의 스레드가 종료되면 전체 스레드가 구동하지 못할 수 있다는점, 동기화 문제의 단점

 

멀티프로세스는 하나의 프로세스가 죽더라도 다른 프로세스에는 영향을 끼치지 않고 정상적으로 수행된다.

 

멀티스레드보다 많은 메모리공간과 CPU 시간을 차지한다는 단점

 

-> 적용해야 하는 시스템에 따라 적합한 동작방식을 선택하고 적용해아한다.

 


 

Context Switching ?

 

CPU에서 여러 프로세스를 돌아가면서 작업을 처리하는 과정

 

동작중인 프로세스가 대기를 하면서 해당 프로세스의 상태(Context)를 보관하고, 대기하고 있던 다음 순서의 프로세스가 동작하면서 이전에 보관했던 프로세스의 상태를 복구하는 작업을 말함.

 

 

반응형

'공부 > OS 공부' 카테고리의 다른 글

[OS 공부] 프로세스 동기화  (0) 2021.01.27
[OS 공부] 동기&비동기  (0) 2021.01.17
[OS 공부] CPU 스케줄러  (0) 2021.01.13
[OS 공부] 스케줄러  (0) 2021.01.10
[OS 공부] 프로세스와 스레드  (0) 2021.01.09