-
Process, thread
- 간단하게 말하면 process 란 os로부터 자원을 할당받아서 프로그램을 실행하는 단위이고 thread란process내의 실행 단위이다.
- Process는 code, data, stack, heap 영역을 할당 바고 서로 접근이 불가능하다. 만약 통신을 하기위해서는 ipc를 사용해아 한다. (파이프, 파일, 소켓, …etc)
- thread는 process로부터 code, data, heap 영역을 공유하고 stack영역만 따로 할당받아서 동작한다.
- golang에는 goroutine이라고 있는데 이는 thread 보다 훨씬 적은 resource를 사용하여 자원을 더 효율적으로 사용한다.
멀티 process, thread
개념
- 멀티 process: 하나의 프로그램을 여러개의 process로 구성하여 각 프로세스가 각각 작업을 처리하는 것 이다.
- 멀티 thread: 하나의 프로그램를 여러개의 thread로 구성하여 각 쓰레드가 작업을 처리하는 것이다.
차이
- 멀티 process는 여러개의 process가 동작하는 중에 하나에 문제가 생기면 해당 process에만 영향을 미치지만 멀티 thread는 여러개의 thread가 동작하는 중 문제가 생기면 thread를 생성한 주체인process에 영향을 준다.
- 멀티 process는 context switching 과정에서 pcb(process control block)를 보고 캐시 초기화메모리 맵핑 초기화 등 오버헤드가 크지만 멀티 thread는 stack을 제외한 모든 메모리 영역을 공유하기 때문에 stack 영역만 변경하면 된다.
- 멀티 thread는 stack을 제외한 영역의 메모리를 공유하기 때문에 동기화에 신경써야 한다.
'CS' 카테고리의 다른 글
HTTP와 HTTPS (0) 2021.12.12 TCP와 UDP의 차이점 (0) 2021.12.12 교착 상태와 기아 상태 (0) 2021.12.12 뮤텍스와 세마포어 (mutex and semaphore) (0) 2021.12.05 좀비 프로세스, 고아 프로세스 (zombie process, orphan process) (0) 2021.12.05