프로세스와 스레드의 차이
1) 프로세스(Process)
정의
- 실행 중인 프로그램의 인스턴스
- 운영체제로부터 독립된 메모리 공간(Code, Data, Heap, Stack)을 할당받음
- 디스크로부터 메모리에 적재되어 CPU 할당을 받을 수 있는 것
특징
- 각 프로세스는 서로 완전히 독립
- 다른 프로세스의 메모리에 직접 접근 불가
- 문맥 교환(Context Switching) 비용이 큼
프로세스 제어 블록(PCB; Process Control Block)
- 특정 프로세스에 대한 중요한 정보를 저장하고 있는 운영체제의 자료 구조
- 운영체제는 프로세스를 관리하기 위해 프로세스의 생성과 동시에 고유한 PCB를 생성
- 프로세스 전환이 발생하면, 프로세스는 진행 상황을 모두 PCB에 저장
- 아래는 PCB에 저장되는 정보
프로세스 식별자 / 프로세스 상태 / 프로그램 카운터 / CPU 레지스터 / CPU 스케쥴링 정보 / 메모리 관리 정보 / 입출력 상태 정보 / 어카운팅 정보
2) 스레드(Thread)
정의
- 프로세스 내부에서 실행되는 작업의 흐름·작업 실행 단위
- 같은 프로세스 내 스레드들은 메모리 공간의 공유