취업/기술 면접

프로세스와 스레드의 차이

윤꽁참감 2022. 7. 5. 13:15
반응형

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

 

[OS] 프로세스와 스레드의 차이 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io

프로그램

- 어떤 작업을 위해 실행할 수 있는 파일

 

프로세스

- 컴퓨터에서 연속적으로 실행되고 있는 프로그램

- 운영체제로부터 시스템 자원을 할당받는 작업의 단위

- 메모리에 올라와 실행되고 있는 프로그램의 인스턴스(독립적인 개체)

- 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap)을 할당받는다.

- 프로세스는 서로의 자원을 공유하지 않기에 접근하려면 프로세스간 통신(IPC)를 사용해야 한다.

 

스레드

- 프로세스 내에서 실행되는 흐름의 단위

- 프로세스 내 여러개의 스레드가 존재할 수 있다.

- 스레드는 Stack 공간만 별도로 할당받고 Code, Data, Heap 영역은 공유한다.

 

멀티 프로세싱

- 하나의 프로그램을 여러개의 프로세스로 구성하여 하나의 작업을 처리하도록 하는 것

- 여러개의 프로세스 중 문제가 발생한 프로세스만 죽으면 다른 프로세스에 영향이 없다.

- Context Switching에서 캐쉬 메모리 초기화, CPU 레지스터 교체 등의 오버헤드가 발생한다.

* Context Switching : CPU에서 여러 프로세스를 돌아가며 작업을 처리하는 것

 

멀티 스레딩

- 하나의 프로세스 내 여러개의 스레드를 구성하여 하나의 작업을 처리하도록 하는 것

- 프로세스를 생성하여 자원을 할당하는 시스템 콜이 줄어들어 자원을 효율적으로 관리할 수 있다.

- 자원소모가 줄어드어 처리량이 증가한다.

- 스레드별 작업량이 작아 Context Switching이 빠르다.

- 디버깅이 까다로워 주의 깊은 설계가 필요하다.

- 단일 프로세스 시스템의 경우 효과를 기대하기 어렵다.

- 스레드간 자원을 공유하기 때문에 스레드를 동시에 사용하게되면 충돌이 발생할 수 있다.

 

* 동일한 내용이지만 정리가 잘 되어 있는 블로그

https://charlezz.medium.com/process%EC%99%80-thread-%EC%9D%B4%EC%95%BC%EA%B8%B0-5b96d0d43e37

 

Process와 Thread 이야기

프로세스(Process)

charlezz.medium.com