CPU 스케줄링 - 1
chanto11
·2021. 3. 24. 11:23
CPU scheduling : CPU 스케줄링
- 멀티프로그래밍 기반 OS에서 사용 (1개 이상의 프로그램이 동시에 메모리에 적재 가능한 OS)
- 가장 효율적으로 CPU를 사용하기 위해 (컴퓨터 시스템의 성능 향상을 위해)
- 메모리에 로드된 프로세스들 중에 CPU 자원을 어떻게 할당할껀가?
= ready 상태의 프로세스들중에 CPU 자원을 할당에 대한 문제
preemptive : 선점
한 프로세스가 CPU를 할당받아 실행중이라도 다른 프로세스가
현재 프로세스를 중지 시키고 CPU를 강제적으로 뺏을 수 있는 스케줄링 방식
Non-preemptive : 비선점
한 프로세스가 CPU를 할당받아 실행중이라면
다른 프로세스들이 CPU를 강제적으로 뺏을 수 없는 스케줄링 방식
- 어떻게 다음 프로세스를 선택할껀가?
형태 : Linked List or Binary Tree
- FCFS (First-Come First-Served) : 비선점 : 먼저 요청한 순서대로
장점: 자원의 효율성 높음, 일괄 처리 시스템 등에 적합
단점: 독점시 장시간 wait, 대화형 시스템에 부적합 - SJF (Shortest-Job-First) : 비선점 : 작업 시간이 짧은 순서대로 (작업 시간 동일시 FCFS)
장점: 많은 프로세스들에게 빠른 응답시간 제공
단점: 작업이 긴 프로세스들은 무기한 연기, 작업 시간의 정확한 계산 불가능 - SRTF (Shortest-Remaining-Time-First) : 선점 : 선점형 SJF 방식
단점: context switching overhead 증가, 작업이 긴 프로세스들은 무기한 연기, 작업 시간의 예측이 힘듬 - RR (Round-Robin) : 선점 : 시분활 시스템 이용 (일정 시간 만큼씩만)
장점: 응답시간이 짧아 대화형 시스템에 적합
단점: 시분활 단위에 의존적, 너무 크면 FCFS와 차이없음, 너무작으면 빈번한 context switching - 우선순위 스케줄링 : 선점 또는 비선점 : 우선순위별 CPU 할당 (같으면 FCFS)
단점: 우선순위가 낮은 프로세스의 경우 영구 대기 - MLQ (Multi Level Queue) : 선점 : 사전 실행 정보가 없는 경우 준비 상태의 큐를 여러 개 두어 스케줄링
- MLFQ (Multi Level Feedback Queue) : 선점 : 다단계 큐 스케줄링에서 한 단계 발전된 방식으로,
큐마다 서로 다른 CPU Time Slice(Quantum)를 부여
- dispatcher 란?
- context switch 를 해주는 모듈 (프로세스에게 CPU 할당)
- user mode로 전환, 프로그램을 적정한 위치로 이동
※ 간단하게는 scheduler는 선택, dispatcher는 switching 역활
CPU 성능 지표
성능 지표 | 내용 |
응답 시간(response time) | 대기열에서 처음으로 CPU를 얻을때까지 걸린시간 |
작업 처리량(throughtput) | 단위 시간 내의 프로세스 처리량 |
대기시간(Waiting Time) | 대기열에 들어와 CPU를 할당받기까지 기다린 시간 |
프로세서 이용률(CPU Utilization) | 시간당 CPU를 사용한 시간의 비율 |
반환시간 또는 소요시간(Turnaround Time) | CPU burst time(쓰고 나갈때까지의 시간, 누적되지 않음) |
시스템 입장에서의 CPU 스케줄링 성능에서 중요한 것
CPU Utilization + Throughput
사용자 입장에서의 CPU 스케줄링 성능에서 중요한 것
Turnaround Time + Waiting Time + Response Time