프로세스란? - 우리가 실행하는 프로그램이라 생각하면된다.

-  프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다.
- 기본적으로 프로세스당 최소 1개의 스레드(메인 스레드)를 가지고 있다.
- 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다.
- 한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간의 통신(IPC, inter-process communication)을 사용해야 한다.(Ex. 파이프, 파일, 소켓 등을 이용한 통신 방법 이용)

 

스레드란? -  프로세스 내 작업의 흐름을 말한다.

- 스레드는 프로세스 내의 스택 영역을 제외한 다른 메모리 영역(Code,Heap,Data)을 프로세스 내의 다른 스레드들과 공유한다.

 

 

멀티프로세스 - 하나의 응용프로그램을 여러개의 프로세스로 구성해서 각 프로세스가 하나의 작업을 처리하도록 한다.

장점 - 여러자식 프로세스중 하나가 문제가 발생해서 죽더라도 다른 영향이 확산되지 않는다.

단점 - ContextSwitching 에서의 오버헤드 문제가 있다

멀티스레드 - 하나의 응용프로그램을 여러개의 스레드로 구성하고 그 스레드마다 하나의 작업을 처리하도록 하낟.

장점 - 스레드는 프로세스 내의 Stack 영역을 제외한 모든 메모리를 고유하기때문에 통신의 부담이 적다

단점 - 멀티스레드의 경우 자원공유의 문제가 발생(동기화 문제), 하나의 스레드에 문제가 발생하면 전체 프로세스에 영향을 받는다.

 

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

+ Recent posts