[OS] Lecture 3. Process Management - kibitzing/EnGrow GitHub Wiki
유튜브 링크
진구
Job vs Process
Active vs Inactive (Passive) = 프로세스 vs 리소스 메모리 -> CPU
preemption vs sleep (block)
asleep -> ready (not running)
메모리 뺏기면
- suspended
- swap device 에 저장
- 사진 찍어서 저장 (그래서 이미지)
재밌네!
세영
Lecture 3 - Process Management(1/2)
프로세스
실행을 위해 커널에 등록된 작업
프로그램이랑 다른 점: 프로그램은 실행 전, 프로세스는 실행 중 (인스턴스)- 왜 커널에 등록? 커널이 프로세스를 효율적으로 관리하여 시스템 성능 향상을 위해
- 시스템/사용자/독립/협력 프로세스 등이 존재
자원 (Resource)
- 프로세스에게 할당/반납되는 개체 (커널이 관리)
- 프로세서, 메모리, 디스크, 메시지, 시그널, 파일 등 다 자원임
PCB (Process Control Block)
- 프로세스의 상태 정보를 저장하는 블록
- 프로세스는 메모리에 있고 커널은 PCB를 통해 프로세스를 제어함
- PID, 스케줄링, 상태, 메모리, 입출력, 컨텍스트 (레지스터), 계정 등을 관리
- 이걸 관리하는 속도가 OS의 속도에 중요한 영향을 미침
프로세스의 상태
- Created
- 커널에 등록된 프로그램
- PCB 할당 및 프로세스 생성
- 메모리 있으면 Ready, 없으면 Suspended Ready로 감
- Ready
- 프로세서로 들어가기 위해 기다리는 상태
- Running 상태로 들어가는 과정을 Dispatch라고 함
- Running
- 프로세서에 들어간 상태 (자원을 모두 할당받음)
- 프로세서를 뺏기면 Preemption (스케줄링, 우선순위 변경 등)
- 다른 자원을 받기 위해 기다리면 Sleep (I/O 대기 등) → 자원을 받으면 다시 Running 되는게 아니라 다시 Ready로 감
- Suspended
- 메모리를 할당받지 못한 상태
- 프로세스의 상태를 기억하기 위해 메모리 이미지를 Swap space에 보관
- Swap-out (Memory → Swap) / Swap-in (Swap → Memory)
- Terminated (Zombie)
- 프로세스 수행이 끝난 상태, 모든 자원 반납
- 다음에 이 프로세스가 다시 수행될 때 효율적으로 처리하기 위해 이 프로세스가 사용한 자원을 기록하기도 함
사용되는 자료구조
- Ready Queue
- Ready 상태에 있는 프로세스들을 관리함
- 스케줄러의 알고리즘에 의해 선택됨
- I/O Queue, Device Queue, …
- Sleep 상태에 있는 프로세스들을 관리 (자원에 따라 각각 나뉨)