Process가 CPU를 비롯한 resource를 사용하고 있어도 OS가 강제로 빼앗(interrupt)을 수 있다.
하나의 Process가 CPU를 점유할 수 없다.
Timer Interrupt가 발생하면 OS가 다음 Process에게 resource를 할당한다.
Process 간에 데이터 공유 시, 일관성 유지에 따른 비용이 발생한다.
Context Switch 과정에서 overhead가 발생한다.
🟡 비선점형 스케줄링(nonpre-emption scheduling)
일단 Process가 CPU resource를 할당받으면, 해당 Process가 스스로 resource 자원을 놓을 때까지 독점한다.
모든 Process가 Resource를 골고루 사용할 수 없다.
📌 디스패처(Dispatcher)
CPU 코어의 제어를 CPU Scheduler(short-term scheduler)가 선택한 Process에 주는 모듈
Context Swtching과 User mode로의 전환, Jump 등의 역할을 수행한다.
디스패치 지연(Dispatch Latency) : Dispatcher가 Running 상태의 Process를 정지하고 다른 Process의 수행을 시작하는 데 걸리는 시간 (overhead)
2. Scheduling Alogithm
📌 알고리즘 성능 평가 기준
항목
설명
목표
CPU 사용률 (CPU Utilization)
• 시간당 CPU를 사용한 시간의 비율 • Processor를 실행 상태로 항상 유지하여 유휴 상태 방지 (쉬지 말고 일해라!) • 가능하면 I/O 중심 작업보다 Processor 중심 작업을 택해야 한다
최대화 ⇧
처리량 (Throughput)
• 시간당 처리한 작업의 비율 • 단위 시간당 완료되는 작업이 많도록 짧은 작업을 우선 처리하거나 Interrupt 없이 작업 실행
최대화 ⇧
반환 시간 (Turnaround Time)
• CPU burst time (쓰고 나갈 때까지 시간, 누적되지 않는다) • 작업이 System에 맡겨져서 완료되는 순간까지의 소요시간을 최소화해야 한다 • main memory에 들어가는 시간 + ready queue에 머무는 시간 + 실행 시간 + 입출력 시간 + ⋯
최소화 ⇩
대기 시간 (Wating Time)
• 대기열에 들어와 CPU를 할당 받기까지 기다린 시간 • 작업 실행 시간이나 입출력 시간에 실질적 영향을 미치진 못한다 • ready queu에서 기다리는 시간이 최소화되도록 사용자 수 제한
최소화 ⇩
응답 시간 (Response Tiem)
• ready queue에서 처음으로 CPU를 얻을 때까지 걸리는 시간 • 반응 시간 : 의뢰한 시간부터 반응이 시작되는 시간까지의 간격 • 대화형 시스템에서 중요하다. • 대화식 작업을 우선 처리하고 일괄 처리 작업을 후순위로 둔다
최소화 ⇩
System 입장에서 중요한 요소 : CPU Utilization + Throughput
User 입장에서 중요한 요소 : Turnaround Time + Waiting Time + Response Time
평균 대기시간(Average waiting time)으로 주로 비교한다.
📌 Nonpre-emption Scheduling Alogithm
1️⃣ 선입 선처리 스케줄링(FCFS; First Come First Served Scheduling)
Ready Queue에 삽입된 순서대로 Process 처리
가장 간단한 CPU Scheduling Algorithm
FIFO Queue로 구현하면 된다.
호위 효과(Convoy Effect) 현상이 발생할 수 있다
Short process behind long process
하나의 Processor 중심 process가 다른 Process가 떠나기를 기다리는 현상
Ready Queue 상의 Process 순서에 따라 Waiting time이 크게 바뀐다. (최적화 가능성 존재)
2️⃣ 최단 작업 우선 스케줄링(SJF; Shortest Job First Scheduling)
Queue 삽입된 Process들 중 CPU 이용 시간(작업 시간)의 길이가 가장 짧은 Process부터 실행
두 개 이상의 Process 점유 시간이 같다면 FCFS 방식으로 처리
평균 Waiting time이 가장 짧다
CPU burst 길이를 Ready 상태에서 알기 어렵다
과거 CPU burst 길이를 가중 평균하여 다음 CPU burst 길이를 예측하기도 한다.