CS/운영체제

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

mhko411 2021. 11. 22. 23:31
728x90

멀티 스레드

멀티 스레드란?

싱글 스레드는 하나의 프로세스에서 하나의 작업만이 가능했다. 하지만 멀티 스레드는 하나의 프로세스에 여러 개의 스레드가 존재하고 각각 여러 개의 일을 수행하도록 한다.

 

멀티 스레드를 사용하는 이유

각각의 프로세스는 별도의 메모리를 갖고 있으며 프로세스끼리 통신을 할 때는 IPC를 통해 할 수 있다. 하지만 스레드는 코드, 데이터, 힙 영역을 공유하며 고유의 스택 영역을 갖고 있고 힙 영역을 통해 스레드끼리 통신을 할 수 있어 비교적 간단하다.

 

또한 CPU를 점유하고 있는 프로세스를 교체하는 작업인 문맥 교환이 일어날 때 현재 실행 중인 프로세스를 PCB에 저장하고 다음 차례인 프로세스의 정보를 가져와 실행시키는 작업이 많이 일어나게 되면 자원의 소모가 늘어나고 처리량이 저하된다. 하지만 스레드의 문맥 교환은 캐시 메모리를 비울 필요가 없기 때문에 시스템의 처리량이 증가하여 프로그램의 응답 시간이 단축된다.

 

멀티 스레드의 장점

  • 멀티 프로세스는 별도의 메모리를 차지하지만 멀티 스레드는 코드, 데이터, 힙 영역은 공유하고 스택 영역만 따로 차지하기 때문에 비교적 적은 공간을 차지하고 문맥 교환도 빠르다.
  • 스레드끼리 통신할 때 별도의 자원을 사용하지 않고 전역 공간이나 힙 영역을 사용하여 간단하게 통신할 수 있다.

멀티 스레드의 단점

  • 스레드 간의 자원을 공유하기 때문에 하나의 스레드가 오류가 발생하면 전체 스레드가 종료될 수 있다.
  • 스레드끼리 전역 공간을 공유하기 때문에 여러 개의 스레드가 하나의 전역 변수를 사용하는 충돌이 발생할 수 있다.

멀티 프로세스

멀티 프로세스란?

하나의 응용 프로그램을 여러 개의 프로세스로 구성하여 각각의 프로세스가 하나의 태스크를 처리하는 것이다. 여러 개의 CPU를 통해 병렬로 처리할 수 있다.

 

멀티 프로세스의 장점

  • 프로세스는 독립된 메모리 공간을 사용하기 때문에 하나의 프로세스가 오류가 발생하여 종료되더라도 다른 프로세스에 영향을 끼치지않아 안전성이 확보된다.

멀티 프로세스의 단점

  • 프로세스는 독립된 메모리 공간을 차지하기 때문에 문맥 교환시에 오버헤드가 발생한다. 오버 헤드는 CPU를 점유하고 있는 프로세스를 교체할 때 발생하는 시간과 메모리를 의미한다.

정리

스레드는 코드, 데이터, 힙 영역을 공유하고 독립된 스택 영역만 확보하기 때문에 문맥 교환이 일어났을 때 스택만 전환하면 되기 때문에 전환 속도가 빠르다. 하지만 프로세스는 전체 메모리 영역을 전환해야 하기 때문에 오버헤드가 크다.

 

하지만 스레드는 공유하는 영역이 있기 때문에 하나의 스레드가 오류가 발생하면 다른 스레드도 종료되지만 프로세스는 독립된 영역을 차지하기 때문에 다른 프로세스에 영향을 끼치지 않는다.