본문 바로가기

C.E/OS

Thread - Multi-Thread VS Multi-Process

Multi-Thread는 하나의 Process내에 여러개의 Thread 즉, 흐름이 존재한다.

 

Multi-Process는 여러개의 Process가 존재한다.

 

Multi-Thread와 Multi-Process는 둘다 여러개의 흐름이 동시에 존재한다는 점에서는 동일하다.

 

하지만 Multi-Process에서 각각의 Process는 독립적으로 수행되며 별개의 Memory를 가지고 있지만 Multi-Thread의 경우

 

각각의 Thread는 Process내의 Memory를 공유한다. 또한 Process간에 전환인 Context Switching보다 Thread간의 전환인

 

Thread Switching이 비용이 저렴하며 속도도 빠르다. 하지만 Multi-Thread의 단점은 실제 시간으로 동시에 수행되지만 실질적으로

 

어떤 Thread가 먼저 수행될지는 알 수 없다는 점이다. 그렇기 때문에 Race Condition 즉, 동시 접근으로 인한 데이터의 오류가

 

발생 할 수 있다는 점이다. 이 점을 해결하기 위한 방법은 다른 포스트에서 다루기로 하겠다.

 

Multi-Thread와 Multi-Process의 차이점은 인터넷상에서 확인하면 더욱 확실하게 알 수 있다.

 

만일 여기 두 개의 시스템이 존재한다고 하자. 하나의 시스템은 Server에 Client가 접속 할때 마다 하나의 Thread를 늘리고

 

또 다른 시스템에서는 하나의 process를 늘린다고 생각해 보자. 즉 ,Multi-Thread방식과 Multi-Process방식이다.

 

Multi-Process의 경우에는 Client가 늘어날수록 Process를 생성하기 때문에 Memory의 소비가 크고 느려진다.

 

Multi-Thread의 경우에는 Client가 늘어나도 Thread만 생성하기 때문에 메모리의 소비가 작고 빠르다.

 

하지만 만일 Multi-Thread방식을 사용하는 시스템에서 하나의 Thread에 오류가 발생했다고 생각하자.

 

하나의 Thread에서 오류가 발생할 경우 해당 Process가 종료되기 때문에 모든 Thread가 종료되고 Process에

 

접속되어있던 모든 Client가 종료되버린다.

 

Multi-Process방식에서 오류가 났다면 해당하는 하나의 Process만 종료고 나머지 Process에는 영향을 끼치지

 

않지 때문에 오류가 발생한 하나의 Client만이 종료될뿐 나머지 Process는 정상적으로 작동하게 된다.

 

 

 

'C.E > OS' 카테고리의 다른 글

CPU Scheduling - DIspatcher  (0) 2013.12.09
CPU Scheduling - CPU Scheduling  (0) 2013.12.09
Thread - Thread란?  (0) 2013.12.09
Process - InterProcess Communication(IPC)_2  (0) 2013.12.09
Process - InterProcess Communication(IPC)_1  (0) 2013.12.09