Process는 I/O 작업이 빈번하게 발생하는지, CPU 연산이 오래 지속되는지에 따라 I/O or CPU bound로 나뉨
사용자와 상호작용을 자주 하는 interactive job의 경우 I/O가 빈번하게 발생
수학, 과학 연구와 같은 작업의 경우 CPU를 오랫동안 사용(I/O 없이)
burst time 그래프를 보면 I/O bound의 경우 CPU를 짧은 시간 빈번하게 할당 받고, CPU bound의 경우 긴 시간 드물게 할당 받음.
I/O bound가 CPU를 빈번하게 할당 받는다고 해서 CPU 사용 시간이 CPU bound보다 길다는 말은 아님. 짧게 여러번 사용하는 것.
CPU scheduling이 필요한 이유
interactive job인 I/O bound 프로세스의 경우 사용자의 불편을 줄이기 위해 response를 즉각적으로 보내야 하는데, CPU bound 프로세스가 CPU를 할당받아 내놓지 않으면 이를 하지 못하게 됨. 따라서 schedulig을 통해 적절한 시기에 response를 내놓을 수 있도록 CPU를 관리해야 함
CPU와 I/O 장치 등 시스템 자원을 골고루 효율적으로 사용
Scheduler와 Dispatcher
CPU Scheduler: Ready 상태의 프로세스 중에서 이번에 CPU를 줄 프로세스를 고른다.
Dispatcher: CPU의 제어권을 CPU scheduler에 의해 선택된 프로세스에게 넘긴다.(문맥교환)
어떻게 넘김? 문맥교환 작업이 일어나고 PCB에서 해당 프로세스의 메모리 주소를 보고 찾아가서 이어서 기계어를 읽고 명령을 수행하는 작업을 실행하겠지?
둘 다 HW나 SW가 아니라 O.S 상의 코드
CPU scheduling이 필요한 경우는 다음과 같은 상태 변화가 있는 경우
Running ⇒ Blocked(EX: I/O 요청하는 시스템 콜)
Running ⇒ Ready(EX: 할당시간 만료로 time interrupt)
Blocked ⇒ Ready(EX: I/O 완료 후 인터럽트)
Terminate
1, 4 의 경우 nonpreemptive, All other scheduling is preemtive.
Preemtive(선점) & Nonpreemtive(비선점)
선점: CPU를 더 사용해야 하지만 스케줄링에 의해 CPU를 강제로 빼앗김
비선점: CPU를 더 사용해야 할 필요가 없어져 자진해서 반납하기 전까지 빼앗지 않음
Scheduling Criteria(Performance Index = 성능 척도)
시스템의 입장에서
CPU utilization(이용률)
전체 시간 중 CPU가 놀지 않고 일한 시간: keep the CPU as busy as possible
Throughput(처리량)
단위 시간 당 처리 한 프로세스의 수
Number of processes that complete their execution per time unit
프로세스의 입장에서
Turnaround time(소요시간, 반환시간)
특정 프로세스를 실행한 시간, 프로세스가 완전히 종료됨을 의미하는 것이 아니라 한 번 CPU를 할당받았을 때의 CPU burst가 끝나는 시간까지를 의미.
amount of time to execute a particular process
Wating time(대기시간)
Ready queue에서 기다리는 시간의 합, 선점형 프로세스라면 종료될 때까지 기다리게 되는 모든 시간의 합을 의미.
amount of time a process has been waiting in the ready queue
Response time(응답시간)
처음으로 CPU를 할당 받아서 첫 응답까지 걸리는 시간
amount of time it takes from when a request was submitted until the first response is produced, not output.