운영체제 - 프로세스 관리 2
프로세스의 개념
Context
- 프로세스의 문맥
- CPU 수행 상태를 나타내는 하드웨어 문맥
- 프로그램 카운터
- 각종 레지스터
- 프로세스의 주소 공간
- code, data, stack
- 프로세스 관련 커널 자료 구조
- PCB (Process Control Block)
- Kernel Stack
프로세스의 상태 (State)
- Running : CPU를 잡고 instruction을 수행 중인 상태
- 타이머 인터럽트 시 Ready로 넘어감, I/O 혹은 wait 상태면 Blocked로 넘어감, exit(종료) 시 Terminated로 넘어감.
- Ready : CPU를 기다리는 상태 (메모리 등 다른 조건을 모두 만족하고 나서), 메모리에 올라가 있다.
- Blocked (wait, sleep)
- CPU를 당장 주어도 instruction이 불가한 상태
- 프로세스 자신이 요청한 이벤트(I/O 등)가 즉시 만족되지 않아 이를 기다리는 상태
- 공유 데이터의 사용을 기다리는 상태
- New : 프로세스가 생성 중인 상태
- Terminated : 수행(execution)이 끝난 상태, 종료 중인 상태
PCB
- 운영체제가 각 프로세스를 관리하기 위해 프로세스 당 유지하는 정보
- 운영체제 커널(커널의 메모리)에 프로세스 당 하나씩 가지고 있다.
구성
- OS가 관리 상 사용하는 정보
- Process state, Process ID, Scheduling information, Priority
- CPU 수행 관련 하드웨어 값
- Program counter, Registers
- 메모리 관련 값
- Code, Data, Stack의 위치 정보
- 파일 관련 값
- Open file descriptors 등..
문맥 교환 (Context Switch)
- CPU를 한 프로세스에서 다른 프로세스로 넘겨주는 과정
CPU 넘기는 과정
- CPU를 내어주는 프로세스의 상태를 그 프로세스의 PCB에 저장한다. (저장)
- CPU를 새롭게 얻는 프로세스의 상태를 PCB에서 읽어온다. (복원)
문맥 교환 여부 판단
- 시스템콜이나 인터럽트 발생 시 반드시 문맥 교환이 일어나는 것은 아니다.
- 프로세스 A에서 커널 모드로 바뀌는 것을 문맥 교환으로 볼 수 없다. 커널에서 다시 프로세스 A로 넘어간다면 문맥 교환은 전혀 발생하지 않는다.
- 이러한 경우에 문맥 교환 정도는 아닐지라도 Context의 일부는 PCB에 저장해야 한다.
- 프로세스 A에서 프로세스 B로 넘어가는 경우, 문맥 교환이 일어났다고 볼 수 있다.
- 문맥 교환은 부담이 크다. (cache memory flush 같은 작업들 때문에)
프로세스 스케줄링 위한 큐
- 프로세스들은 각 큐들을 오가면서 수행된다.
Job Queue
- 현재 시스템 내에 있는 모든 프로세스들의 집합
Ready Queue
- 현재 메모리 내에 있으면서 CPU를 잡아 실행되기만을 기다리는 프로세스들의 집합
Device Queues
- I/O Device의 처리를 기다리는 프로세스의 집합
Comments powered by Disqus.