본문 바로가기
CS/운영체제

[운영체제 OS] Process vs Thread

by 루시킴 2021. 8. 21.

1. Process vs Thread 

Process

실행중인 프로그램으로 운영체제로 부터 CPU 할당을 받을 수 있는것

  • 프로세스는 각자 독립된 공간(Code, Data, Heap, Stack)을 가진다.
  • 프로세스 간 직접적인 통신이 불가하며, IPC(Inter-Process Communication) 방식을 통해서만 가능하다.
    • Message Passing : 운영체제(커널)의 도움을 받아 프로세스간 통신. 커널이 알아서 동기를 맞춰주지만, 오버헤드 높음.
    • Shared Memory : 공유 메모리 공간을 통해 프로세스간 통신. 동기를 직접 맞춰줘야하지만 오버헤드 낮음.
  • 프로세스는 기본적으로 1개 이상의 스레드(메인스레드)를 가진다.

Thread

프로세스 내에서 실행되는 여러 흐름의 단위, 경랑 프로세스

  •  스레드는 프로세스 내에서 Stack만 따로 할당 받고, 나머지 영역(Code, Data, Heap)은 공유한다.
  • 스레드는 하나의 프로세스에 묶여있다.
  • 스레드는 프로세스 내 메모리를 공유하므로 독립적인 프로세스와 달리 스레드간 통신이 원활하다.

 


2. Multi-Process vs Multi-Thread 

Multi-Process

하나의 응용프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리

 

장점

프로세스는 독립적이기 때문에, 하나의 프로세스가 죽더라도 다른 프로세스에는 영향을 끼치지 않는다.

동기화 작업이 필요없다.

 

단점

프로세스간 통신하려면 IPC기법을 사용하므로 복잡하다.

프로세스간 공유메모리가 없으므로, Context Switch시 캐쉬에 있는 모든 데이터를 새로 불러오며 오버헤드가 크다. 

 

Multi-Thread

하나의 응용프로그램을 여러 개의 스레드로 구성하여 각 스레드가 하나의 작업을 처리

 

장점

프로세스와 달리 캐쉬를 비우고 새로 불러오는 등 자원을 매번 새로 할당할 필요가 없어 자원을 효율적으로 관리한다.스레드 사이 작업량이 적어 Context Switch가 빠르다. 빠르게 스레드 간 통신이 가능하여 오버헤드가 적다. 

 

단점

하나의 스레드가 죽으면, 전체 스레드가 종료될 수 있다.

스레드 간 공유자원을 사용할 때 동기화문제가 발생할 수 있다.

 


Multi-Process보다 Multi-Thread를 많이 사용하는 이유

자원의 효율성 증대빠른 통신 때문이다. 둘의 차이점을 쉽게 말하자면, 프로그램을 여러 개 키는 것보다 하나의 프로그램 안에서 여러 작업을 해결하는 것이 효율적이다.

윈도우, 리눅스 등 많은 운영체제들이 멀티 스레딩을 기본으로 하며, 웹서버는 대표적인 멀티스레드 응용 프로그램이다.

 

References

https://sisparang.tistory.com/39

https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html

댓글