개인공부/[CS] / / 2020. 10. 15. 21:38

운영체제: 프로세스(process) vs 스레드(Thread)

프로세스(Process)

 

 

  • 프로그램이 메모리에 적재되어 CPU 자원 할당을 받을 수 있는 상태를 말한다.
  • OS는 이러한 프로세스 관리를 위해 프로세스 생성과 동시에 고유한 PCB를 만든다.
  • PCB는 해당 프로세스에 대한 중욯나 정보(PID, 프로세스 상태, PC 등) 저장
  • 프로세스는 CPU할당받아 작업하다가도 문맥 전환(Context Switching)이 일어나면 PCB에 진행하던 작업 저장하고 CPU반환한다. 이후 다시 CPU 할당을 받게 되면 PCB에 저장했던 내용을 통해 종료시점부터 다시 작업 진행을 하게 된다.
  • 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC, Inter Process Communication)을 사용해야 한다. ex) 파이프, 파일, 소켓 통신

 

스레드(Thread)

 

 

 

  • -프로세스의 실행 단위로 한프로세스내에서 자원을 공유한다. (Stack만 별도 할당받고 나머지 영역은 공유) 
  • 같은 프로세스내에 여러 스레드들은 Code, Data, Heap 영역을 공유한다. 반면에 프로세스는 다른 프로세스 메모리에 직접 접근할 수 없다.

 

 

멀티 프로세스(Multil process)

 

  • 멀티프로세싱이란
  • 하나의 응용프로그램을 여러 프로세스로 구성하여 하나의 작업을 처리하도록 하는 것 

 

  • 장점
  • 프로세스간 영향을 끼치지 않으므로 하나의 프로세스에 문제가 발생해도 kill하면 다른 프로세스에는 영향을 끼치지 않는다.

 

  • 단점
  • Context Switching에서 발생하는 오버헤드(캐쉬 메모리 초기화와 같은 무거운 작업이 진행되고 많은 시간이 소모되는 오버헤드 발생)
  • 프로세스는 각각 독립된 영역을 할당 받기 때문에 프로세스사이에 공유하는 메모리가 없어서, Context Switching이 발생하면 캐쉬에 있는 메모리 모두 리셋하고 다시 불러와야한다.
  • 프로세스 사이의 어렵고 복잡한 통신(IPC)

 

멀티 스레드

 

  • 멀티 스레드란
  • 하나의 응용프로그램을 여러개의 스레드로 구성하고 각 스레드로 하나의 작업을 처리하도록 하는 것
  • 웹서버는 대표적인 멀티 스레드 응용 프로그램이다.

 

  • 장점
  •  시스템 자원 소모 감소( 자원을 공유하므로 자원의 효율성 증대)
  • 시스템 처리량 증가( 스레드간 데이터 주고받기가 간단해지고 시스템 자원소모 줄어듦)
  • 단점
  • 하나의 스레드에 문제가 생기면 전체의 문제가 될 수 있다.
  • 자원 공유의 문제가 발생할 수 있다.(동기화 문제)

 

 

 

 

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유