CS/OS, DB
프로세스와 스레드의 차이
pikabite
2022. 2. 13. 11:03
1줄 요약 : 프로세스, 스레드 모두 작업의 단위이나 프로세스는 OS로부터 자원을 할당받고, 스레드는 프로세스 내에서 실행된다 / 자원을 할당받는다.
Process
- 운영체제로부터 자원을 할당받은 작업의 단위
- 실행 된 프로그램
- OS에서 실행되어 메모리에 올라가있는 동적 프로그램, 독립적 Instance
- 프로세스간 통신(IPC, Inter-Process Communication) 가능
- 최소 1개의 스레드(메인 스레드)를 생성
- 독립 된 메모리 영역 (code, data, heap, stack)을 할당받음
Thread
- 프로세스 내에서 실행되는 실행 흐름의 단위
- 스레드는 메모리 중 stack만 따로 할당받고, code, data, heap은 공유함
- 각각의 스레드는 별도의 register와 stack을 갖고 heap는 서로 읽고 쓰고 할 수 있음
프로그램, 프로세스, 스레드
- 프로그램은 파일로 저장장치에 저장 되어 있지만 메모리에 올라가 있지 않은 상태.
- 프로그램을 시스템(OS) 메모리에 올리면 프로세스가 됨
- 프로세스에서 내부 작업을 메모리를 공유하면서 실행하기 위한 작업의 단위가 스레드
프로세스와 스레드 사이의 관계에 대한 고찰
- 프로세스는 서로간 메모리 공유가 안되고, 스레드는 메모리가 공유된다는 점
- 그렇기 때문에 프로세스는 독립적으로 실행되므로 하나의 프로세스가 죽는다고 해서 다른 프로세스까지 죽지는 않음
- 그러나 스레드는 하나의 스레드가 죽으며 메모리 에러를 내면, 다른 스레드까지 작업을 모두 중지하며 프로세스가 종료 됨
Multi Process
- 한 프로그램을 여러 프로세스로 돌리는 것
- 장점 : 하나가 죽어도 다른 애들까지 죽지는 않음, 단 자식 프로세스는 죽음
- 단점 : Context Switching의 overhead, 복잡하고 어려운 IPC
Multi Thread
- 한 프로세스 내에서 여러 스레드가 도는 것, 더 많이 쓰임
- 장점 : 자원 효율성, 처리량 극대화
- 단점 : 메모리를 공유하기 때문에 하나가 죽으면 나머지도 다 죽음, 동기화 문제
Reference
[1] : https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html
[2] : https://velog.io/@raejoonee/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EC%8A%A4%EB%A0%88%EB%93%9C%EC%9D%98-%EC%B0%A8%EC%9D%B4
[3] : https://www.byfuls.com/programming/read?id=61