프로세스(Process) 정의
- 실행 중인 프로그램
- 실행 중인 프로시저
- 각종 자원을 요청하고 할당받을 수 있는 개체
- PCB(프로세스 제어 블록)을 할당받은 개체 == 커널에 등록된 작업
프로세스 제어 블록(PCB: Process Control Block)
- OS가 프로세스 관리에 필요한 정보를 저장한다.
- 프로세스 생성 시, 생성
- 커널 내에 존재한다.
커널 : 운영 체제의 핵심이 되는 프로그램으로, 시스템의 모든 것을 완전히 통제
PCB가 관리하는 정보
- PID(Process Identification Number) : 프로세스 고유 식별 번호
- 스케줄링 정보
- 프로세스 상태 (자원 할당, 요청 정보 등)
- 메모리 관리 정보
- 입출력 상태 정보
- 문맥 저장 영역 (context save area) : 프로세스의 레지스터 상태를 저장하는 공간
- 계정 정보 : 자원 사용 시간 등을 관리
프로세스의 상태 변화
1. Created
- 작업을 커널에 등록
- PCB 할당 및 프로세스 생성
2. ready
- 프로세서 외에 다른 모든 자원을 할당받은 상태
- 프로세서 할당 대기 상태, 즉시 실행 가능 상태
- Dispatch (or Schedule) : 준비 큐 맨 앞에 있던 프로세스가 프로세서를 점유하는 것
3. Running
Premmption : Running → ready
- 프로세스가 프로세서를 독점하지 못하도록 인터럽트 클록을 두어 특정 시간 동안만 프로세서를 점유하게 한다. (e.g, tiem-out)
Block/sleep : Running → asleep
- 할당된 시간 이전에 실행상태의 프로세스에 I/O 자원이 필요하거나 새로운 자원 요청의 문제로 프로세서를 스스로 양도하는 상태
- 발생 이유 : 인터럽트
4. Blocked/Asleep State
프로세서 외에 다른 자원을 기다리는 상태 ( 자원 할당은 System call에 의해 이루어 짐)
Wake-up : Asleep → ready
5. Suspended
- 메모리를 할당받지 못한(빼앗긴) 상태
- Memory image를 swap device에 보관 ( sawp device : 프로그램 정보 저장을 위한 특별한 파일 시스템)
- 커널 또는 사용자에 의해 발생
- Swap-out(suspended), Swap-in(resume)
6. Terminated / Zombie State
- 프로세스 수행이 끝난 상태
- 모든 자원을 반납한 후
- 커널 내에 일부 PCB 정보만 남아 있음
Running 상태 변화
- Ready Queue
- I/O Queue
- Device Queue
인터럽트 처리 과정
실행 → 대기 상태가 발생하는 이유가 인터럽트가 발생했기 때문이다.
그리고 인터럽트 처리 과정 중 문맥 교환(Context switching)이 이루어진다.
문맥 교환( Context switcing)
- 프로세서의 레지스터에 있던 내용을 잊어버리면 안 되므로 그 내용을 잠시 저장하는 것
- 프로세서의 레지스터에 있던 내용을 저장한다.
이 과정에서 오버헤드가 발생할 수 있다.
오버헤드는 시간 비용이 소요되어 운영체제 설계 시 불필요한 문맥 교환 감소가 중요하다.
그렇다면 불필요한 문맥 교환을 줄이는 방법에는 무엇이 있을까?
스케줄러와 스레드에 대해서는 다음 시간에 더 공부하도록 하겠다.
Reference
- 운영체제:그림으로 배우는 구조와 원리 - 한빛 아카데미