티스토리 뷰

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

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


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


하지만 Multi-Process에서 각각의 Process는 독립적으로 수행되며 별개의 Memory를 가지고 있지만 Multi-Thread의 경우 각각의 Thread는 Process내의 Memory를 공유한다. 또한 Process간에 전환인 Context Switching보다 Thread간의 전환인 Thread Switching이 비용이 저렴하며 속도도 빠르다. 

하지만 Multi-Thread의 단점은 실제 시간으로 동시에 수행되지만 실질적으로 어떤 Thread가 먼저 수행될지는 알 수 없다는 점이다. 그렇기 때문에 Race Condition 즉, 동시 접근으로 인한 데이터의 오류가 발생 할 수 있다는 점이다. 이 점을 해결하기 위한 방법은 다른 포스트에서 다루기로 하겠다.

 

Multi-ThreadMulti-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는 정상적으로 작동하게 된다.

 

 

http://darknata.blog.me/70091304768 - 컴퓨터 구조 및 운영 체제


댓글