본문 바로가기
Computer Science/운영체제

[운영체제] 멀티 쓰레드와 멀티 프로세스

by KeepCoding 2020. 5. 19.

[멀티 스레드] (Multi Thread)

 

 

멀티스레드란?

하나의 프로세스 내에서 둘 이상의 스레드가 자원을 공유하며 동시에 작업을 수행하는 것을 뜻 한다.

 

 

장점:

1. 하나의 프로세스에서 다수의 작업을 각각 스레드를 이용하여 동시에 작동시킬 수 있다.

2. Code, Data, Heap영역은 공유하고 Stack영역만 따로 보유하기 때문에 Cash Memory 초기화 작업이 필요 없고 Context Switching 비용이 저렴하다.

3. 스레드 간의 데이터 교환은 Data, Heap영역을 통해 가능하다.

 

 

단점:

1. 여러 개의 스레드가 동시에 같은 메모리에 접근할 때 원치 않은 값을 읽어오거나 수정될 수 있다. 

2. 위 1번 문제를 해결하기 위해 대표적으로 Critical Section, Mutex 등 기법이 있지만 이로 인해 오버헤드가 발생할 수 있기 때문에 동기화 작업 시 주의가 필요하다.

 

 

 

 

 

[멀티 프로세스](Multi Process)

 

 

멀티 프로세스란?

두 개 이상의 프로세서가 협력적으로 작업을 동시에 처리하는 것을 뜻한다.

 

장점:

1. 위 그림을 보면 하나의 프로세서가 하나의 작업을 수행하는 것이 아니라 다수의 작업이 다수의 프로세서에 의해서 처리되고 있다. 그렇기 때문에 만약 프로세서 중 하나가 문제가 생겨도 약간의 속도 저하만 발생하고 작업이 정지되는 현상을 방지할 수 있다.

2. 하나의 프로그램에서 독립적으로 실행되는 여러 개의 프로그램을 구현할 수 있다. 대표적으로 운영체제.

 

 

단점:

1. 프로세스마다 Code, Data, Heap, Stack영역을 할당받기 때문에 메모리 공유가 되지 않는다.

2. 프로세스 간 데이터 공유 시 IPC라는 기법을 통해야 한다.

3. Cash Memory 초기화 작업이 필요하기 때문에 Context Switching 시 오버헤드가 발생할 수 있다.

댓글