본문 바로가기

공부/CS

[운영체제] 프로세스와 스레드의 차이

반응형

프로세스

: 프로그램이 실행 가능하도록 메모리에 올라가면 프로세스가 된다.

: 운영체제로부터 메모리에 공간(스택,힙,데이터,코드)을 할당 받는다.

 

스레드

: 하나의 프로세스 안에서 힙,데이터,코드 영역을 공유하며 스택 영역만 따로 갖고 동작한다.

 

 

 

 

멀티 프로세스와 멀티 스레드의 공통점

  • 병렬로 처리하여 응답 속도를 향상시킨다.
  • 컨텍스트 스위칭을 통해 다른 프로세스/스레드로 전환되며 이 점 때문에 무조건 많은 수의 멀티 프로세스, 멀티 스레드는 비효율적일 수 있다. (하지만 스레드의 컨텍스트 스위칭이 훨씬 가볍다)
  • 프로세스의 IPC 또는 멀티 스레드에서의 공유 공간에서 동기화 문제가 발생할 수 있다.

 

멀티 프로세스와 멀티 스레드의 차이

  • 프로세스는 독립된 공간을 사용하여 문제가 발생하여도 다른 프로세스에 영향을 주지 않지만 스레드는 문제 발생 시 해당 프로세스에 문제가 생기므로 모든 스레드가 영향을 받는다.
  • 프로세스는 프로세스마다 독립된 공간을 가져 공유하려면 IPC라는 별도의 기술이 필요하지만 스레드는 힙, 데이터, 코드 영역은 공유하므로 다른 스레드끼리 더 빠른 속도로 자원을 공유할 수 있다.
  • 기존 프로그램을 멀티 프로세스로 변경 시, 코드를 분리하여 독립적인 작업을 만들고 IPC 매커니즘을 구현해야 하며 멀티 스레드로 변경 시, 기존 코드에 스레드 생성 코드를 추가하고 동기화 문제를 해결해야 한다.
  • 프로세스의 오버헤드(컨텍스트 스위칭, 생성/종료 비용)보다는 스레드의 오버헤드가 더 적다.
  • 스레드는 공간을 공유하기 때문에 프로세스보다 효율적인 메모리 자원 사용이 가능하다.

 

언제 멀티 프로세스를 쓰고, 언제 멀티 스레드를 쓸까?

 

멀티 스레드

  • 많은 데이터 공유가 일어나는 환경
  • I/O 바운드 작업(=cpu 사용량이 많지 않음)이 많이 발생하는 경우 -> 대기중일 때 다른 스레드를 실행할 수 있다.

멀티 프로세스

  • 공유 데이터가 거의 없는 독립적인 작업에서 멀티 프로세스를 고려한다.
  • 한 작업 단위에서 문제가 발생할 수 있는 경우, 한 스레드의 문제가 전체에 영향을 주는 멀티 스레드보다 멀티 프로세스
반응형