우리가 사용하는 시스템은
여러 프로세스가 존재하므로 자원을 나눠써야만하고
즉 자원을 할당할 프로세스를 선택해야한다. 이를 scheduling이라고 한다
자원을 나누는 방법에는
가 있다.
위의 실행시간(Burst time)은 CPU사용 + I/O대기시간이다.
CPU사용시간이 많으면 compute-bounded, I/O대기시간이 길면 I/O bounded라고 부른다
긴 시간에 한번 씩 일어나는 스케줄링으로
이 있다.
이 때 compute-bounded, I/O bounded를 적절히 섞어야 하나가 쉬는 비효율적인 상황이 적다.
swap in/out
CPU를 대기하는 ready에서 CPU를 할당하여 running으로 올려주는 경우가 가장 빈번하다
그래서 가장 빨라야한다
선점(preemptive)/비선점(non-preemptive) scheduling
선점은 중간에 뺏을 수 있어 context switching이 자주 일어나 overhead가 크지만 시분할, 실시간 시스템에 적합하다.
비선점은 할당받은 자원을 스스로 반납할 때까지 사용하기에 평균 응답시간이 느리지만 context switching overhead가 적다