프로세스 정의
실행중인 프로그램
커널에 등록되고 커널의 관리하에 있는 작업(프로그램)
각종 자원들을 요청하고 할당 받을 수 있는 개체
프로세스 관리 블록(PCB)을 할당 받은 개체
실행 중에 각종 자원을 요구, 할당, 반납하며 진행
Process Control Block (PCB)
커널 공간 내에 존재
각 프로세스들에 대한 정보를 관리
OS가 프로세스 관리에 필요한 정보 저장
프로세스 생성 시 생성 됨
PCB가 관리하는 정보
PID: Process Identification Number
프로세스 고유 식별 변호
스케줄링 정보
프로세스 우선순위 등과 같은 스케줄링 관련 정보들
프로세스 상태
자원 할당, 요청 정보 등
메모리 관리 정보
Page table, segment table 등
입출력 상태 정보
할당 받은 입출력 장치, 파일 등에 대한 정보 등
문맥 저장 영역 (context save area)
프로세스의 레지스터 상태를 저장하는 공간 등
계정 정보
자원 사용 시간 등을 관리
프로세스의 상태 (Process States)
프로세스: 자원 간의 상호작용에 의해 결정
프로세스 상태 및 특성
프로세스 상태 전이도
생성 상태 (Created State)
작업(Job)을 커널에 등록
PCB 할당 및 프로세스 생성
커널: 가용 메모리 공간 체크 및 프로세스 상태 전이
준비 상태 (Ready State)
프로세서 외에 다른 모든 자원을 할당 받은 상태
프로세서 할당 대기 상태
즉시 실행 가능 상태
디스패치 (Dispatch)
준비상태 -> 실행상태
실행 상태 (Running State)
프로세서와 필요한 자원을 모두 할당 받은 상태
선점 (Preemption)
실행상태 -> 준비상태
프로세서 스케줄링
Block/sleep
준비상태 -> 대기(asleep)상태
I/O 등 자원 할당 요청
대기 상태 (Asleep State)
프로세서 외에 다른 자원을 기다리는 상태
자원 할당은 System call에 의해 이루어짐
Wake-up
대기상태 -> 준비상태
지연 상태 (Suspended State)
메모리를 할당 받지 못한(빼앗긴) 상태
Swap-out, Swap-in
완료 상태 (Terminated/Zombie State)
프로세스 수행이 끝난 상태
모든 자원 반납 후, 커널 내에 일부 PCB 정보만 남아 있는 상태
이후 프로세스 관리를 위해 정보 수집
-> 예상치 못한, 외부에서 발생한 이벤트
인터럽트 처리 과정
-> CPU를 차지하던 프로세스가 나가고 새로운 프로세스를 받아들이는 작업
-> 부모 프로세스가 기다리지 않아 자원이 회수되지 못하고 계속 살아 있는 프로세스
-> 프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 실행 단위로서 가벼운 프로세스
-> 모든 프로세스를 부모-자식 관계로 만들어 자원 회수를 용이하게 하는 프로세스의 구조
[출처] https://drive.google.com/file/d/1V94LAsyQ2On-UBwDiF1fue94FqgtSOW5/view