3장. 프로세스, 스레드
- 프로세스
- 프로세스: 메모리에 적재되서 현재 실행 중인 프로그램
- 각 프로세스마다 코드, 데이터, BSS, 힙, 스택 등의 메모리 구조를 가짐
- 프로세스는 운영체제 내에서 프로세스 제어 블록(PCB: Process Control Block)으로 표현됨
- PCB에는 프로세스 식별자, 프로세스 상태, 프로그램 카운터, 레지스터 등이 저장된다
- 문맥교환(Context Switching): 프로세스끼리 제어 상태 변화가 일어났을 때 발생 -> 오버헤드(Overhead) 발생
- OS의 스케쥴링에 의해 프로세스 실행 순서 결정
- 각각의 프로세스는 독립적이므로 한 프로세스가 비정상적으로 종료되도 다른 프로세스에 영향이 없다
- 스레드
- 스레드: 하나의 프로세스 내에서 실행되는 여러 흐름의 단위
- 각 스레드는 스택만 할당받고 코드, 데이터, 힙 등은 프로세스 내에서 공유한다
- OS의 스케쥴러는 스레드를 최소 단위로 작업
- 각각의 스레드는 프로세스와 달리 비정상적으로 종료되면 다른 스레드들도 종료된
- 기타
- 일반적으로 새로운 프로세스가 생성되면 프로세스를 위한 스레드도 함께 생성된다
- 프로세스의 생성/종료보다 스레드의 생성/종료의 오버헤드가 훨씬 적다
- 트랩(Trap): 부적절한 파일접근이나 오류, 예외 상황때문에 발생 -> 소프트웨어적인 흐름의 변화 (인터럽트: 하드웨어적인 흐름의 변)