공룡책 이용하여 운영체제 공부하기 - 11 (Process Scheduling)
■ multiprogramming의 목적
- 매시간에 프로세스를 동작 시키기 위해
- CPU 사용을 극대화 하기 위해
■ time sharing의 목적
- 프로세스들 간의 CPU 코어를 자주 변경 하기 위해
- 유저들은 각각의 프로그램이 동작하는 동안에도 상호 작용(즉 사용)할 수 있기 위해
■ Scheduling Queses 란?
- process들은 시스템에 들어간 것과 같으며, 프로세스들은 준비된 queue 에 있다.
- ready queue 란 CPU 코어에서 작동을 위한 대기를 하는 곳
- process들은 확실한 이벤트가 발생하기 위해 기다린다.
- 이때 process들은 queue에서 대기
- 이 queue들은 보통 수행된다.
- PCB와 같은 링크드 리스트에서 수행
<ready queue와 wait queue의 과정>
■ Queueing Diargram
queueing diagram 이란?
-> 프로세스 스케줄링의 공통적인 표현과 같다.
설명을 덧붙이자면, read queue에서 cpu 자원을 할당 받기 위해 기다린다.
-> cpu 할당을 받은 후, i/o request가 들어오면 i/o queue 에서 waiting 상태, 혹은 실행되다가 interrupt가 되면 다시 ready 상태가되어 -> 처음으로 돌아가 cpu 할당을 기다린다.
이런식으로 주기를 반복하다 결국 종료 된다. 이때 모든 queue 에서 삭제되며, 자신의 PCB와 자원을 반납한다!
■ Context Swith
(이 부분의 개념은 항상 마음에 와닿지 않았었는데, 다시 보려고 한다.)
context swith란?
먼저, 프로세스에서 context란 PCB에서의 표현을 말한다.
- interrupt(방해요소) 가 발생했을 때,
- 시스템은 동작하는 프로세스의 현재 context를 저장
- 후에 다시 재개 되었을때, 이 context를 복구 할 수 있도록 함
- context swith는 아래와 같은 일을 한다.
- 다른 프로세스에게 cpu 코어를 바꿔준다.
- 현재 프로세스의 저장된 상태를 수행 한다. (아마 위처럼 저장된 것을)
- 그리고 다른 프로세스 상태도 저장한다.
프로세스에서 부터 프로세스 까지의 context swith의 다이어그램