프로세스 스케줄링 알고리즘
CPU 스케줄링
: 언제 어떤 프로세스에게 CPU를 할당할지 결정하는 작업
스케줄링 평가기준
-
시스템 입장의 성능 척도
- CPU 이용률 (CPU utilization)
- 시간당 CPU 사용 시간 비율
- 전체 시간 중 CPU가 쉬지 않고 일한 시간
- 처리율 (Throughput)
- 시간당 처리한 작업의 비율
- 단위 시간 당 수행 완료한 프로세스의 수
- CPU 이용률 (CPU utilization)
-
프로그램 입장의 성능 척도
- 반환시간 (Turnaround Time)
- 프로세스가 생성된 후 종료되어 사용하던 자원을 모두 반환하는데까지 걸리는 시간
- ready queue 대기시간 + CPU 실행시간 + I/O 작업시간의 합
- 대기시간 (Waiting Time)
- 대기열에 들어와 CPU를 할당받기까지 기다린 시간
- ready queue 대기시간의 총 합
- 반응시간 (Response Time)
- 대기열에서 처음으로 CPU를 얻을 때까지 걸린 시간
- CPU를 할당받은 최초의 순간까지 기다린 시간 한번만 측정
- 실행시간 (Burst Time)
- 프로세스 수행 = CPU burst + I/O burst
- CPU burst : CPU 사용 시간
- I/O burst : I/O 대기 시간
- 반환시간 (Turnaround Time)
시스템 입장의 성능척도(CPU이용률, 처리율)는 늘리고, 프로그램 입장의 성능척도(반환시간, 대기시간, 반응시간)는 줄이는 것이 좋음
프로세스 스케줄링 알고리즘
공평성
을 고려한 방식- FCFS (First-Come-First-Service) : 선착순 방식
- RR (Round-Robin): 제한시간을 두는 방식
시스템 성능과 효율성
을 고려한 방식(실행시간 예측 부하
의 문제가 존재)- SPN (Shortest-Process-Next): 짧은 BT를 우선으로 처리하는 방식
- SRTN (Shortest Remaining Time Next): 남은 시간이 짧은 것을 우선으로 처리하는 방식
- HRRN (High-Response-Ratio-Next): RR이 적은 것을 우선으로 처리하는 방식
BT(실행시간) 예측 문제
를 개선한 방식들- MLQ (Multi-level Queue): 여러개의 레디큐를 두는 방식
- MFQ (Multi-level Feedback Queue): MLQ와 동일한 방식에서 queue를 다이나믹하게 운용하는 방식
1. FCFS (First-Come-First-Service)
- 비선점형 스케줄링
- 스케줄링 기준
- ready queue 도착시간
- 특징
- 선입선출(FIFO) Queue로 쉽게 관리 가능
- ready queue에 먼저 도착한 프로세스 먼저 처리
- Batch system(일괄처리 시스템)에 적합, interactive system(대화형 시스템) 부적합
- 장점
- 스케줄링이 단순함
- 효율적인 자원 사용가능
- 불필요한 스케줄링 오버헤드 X
- 단점
Convoy effect
발생- 하나의 수행시간이 긴 프로세스에 의해 다른 프로세스들이 긴 대기시간을 갖게되는 현상
- 긴 평군 응답시간
2. RR (Round-Robin)
- 선점형 스케줄링
- 스케줄링 기준
- ready queue 도착시간
- 특징
- 자원 사용 제한시간 (time quantum/time slice) 존재
- time quantum(시간 할당량)이 시스템 성능을 결정하는 핵심요소
- 각 프로세스가 CPU를 소유하는 시간의 한계
- 프로세스는 할당된 시간이 지나면 자원 반납
- 대화형, 시분할 시스템에 적합
- Time quantum이 커질수록 FCFS 방식과 유사해짐
- 자원 사용 제한시간 (time quantum/time slice) 존재
- 장점
starvation(기아)
현상 발생 X- 응답 시간이 빠름
- 특정 프로세스의 자원독점 방지
- 단점
- Contetx switch overhead 큼
Time quantum에 따른 Trade-Off
- 작은 Time quantum
- 응답성 증가
- 프로세스가 더 빠르게 CPU를 얻음으로 더 빠른 응답과 실행
- 빠른 응답성이 필요한 상황에 적합
- Context Switching Overhead 증가
- 빈번한 프로세스 전환으로 오버헤드 증가
- 응답성 증가
- 큰 Time quantum
- 응답성 감소
- 한 프로세스가 지나치게 오랫동안 CPU를 점유하게 됨
- 프로세스가 CPU 기다리는 시간 증가로 더 느린 응답과 실행
- Context Switching Overhead 감소
- 상대적으로 긴 시간동안 CPU를 사용함으로 오버해드 감소
- 응답성 감소
3. SJF (Short Job First)
SJF은 SPN과 동일한 스케줄링으로 보며, SJF에 선점형이 추가된 것이 SRTN
- 스케줄링 기준
- 실행시간(burst time)기준
- 특징
- ready queue에 있는 프로세스의 수행 시간이 짧은 순서대로 CPU 할당
- Convoy effect를 해결하기 위한 방법
- 주어진 프로세스에 대해 최소의 평균 대기시간 보장
- 선점형, 비선점형 스케줄링 두 개의 방식 존재
- 비선점형 SJF :
SPN
- 선점형 SJF :
SRTN
- 비선점형 SJF :
- 장점
- 평균 대기시간 최소화
- 시스템 내 프로세스 수 최소화
- 스케줄링 부하 감소, 메모리 절약으로 시스템 효율성 향상
- 많은 프로세스들에게 빠른 응답 시간 제공
- 단점
starvation(기아)
현상 발생- 실행시간이 긴 프로세스는 자원을 계속 할당 받지못 할 수 있음
- 정확한 다음 프로세스의 실행시간(
Next CPU Burst Time
)을 알 수 없음- 각 프로세스가 얼마나 CPU를 사용할지 모르기 때문에 실행시간 예측 기법 필요
- 지수 평활법(과거의 CPU burst time 이용 예측) 사용
- 짧은 작업이 먼저 실행되기 때문에 공정하지 못함
3-1. SPN (Shortest-Process-Next)
- Non-preemptive SJF
- FSFS의 문제점을 개선한 방식
- 프로세스가 한 번 CPU를 얻으면 CPU burst time이 만료될 때까지 뺏기지 않음
- 작업간의 context switching 오버헤드 발생
3-2. SRTN (Shortest Remaining Time Next)
- Preemptive SJF
- 최단 잔여시간을 우선으로 하는 스케줄링으로, SRTF(Shortest Remaining Time First)라고도 함
- 특징
- SPN의 변형
- 현재 실행되고 있는 프로세스의 잔여 실행 시간보다 더 짧은 프로세스가 ready 상태가 되면 선점 됨
- 장점
- 평균 대기시간(WT)를 최소화하여 시스템의 부하를 줄여주는 등 SJF(SPN)의 장점 극대화
- 단점
- 프로세스 생성시, 총 실행 시간 예측 필요
- 잔여 시간을 계속 추적해야하여 오버헤드 발생
- 선점형으로 Context Switching overhead 발생
- 기아 현상 발생
4. HRRN (High-Response-Ratio-Next)
- HRRN 우선순위 스케줄링 알고리즘은 비선점형/선점형 두 방식으로 나뉠 수 있음
- 선점형 : 우선순위가 높은 프로세스가 대기큐에 들어오면 CPU를 선점함
- 비선점형 : CPU에 할당된 작업이 없을 때 우선순위가 높은 순서로 CPU를 할당하고 프로세스가 완료될 때까지 프로세스 교체가 일어나지 않음
- SPN의 변형
SPN
+에이징 기법
+비선점형 스케줄링
에이징 기법
은 SPN의 기아 현상을 해결하기 위한 방법
- 스케줄링 기준
- Response ratio가 높은 프로세스 우선
- Response ratio(응답률)
- Response ratio = (대기시간 + 실행시간) / 실행시간
- SPN의 장점 +
starvation(기아)
방지 - 여전히 실행시간 예측이 필요하다는 단점 존재
에이징 기법
시스템에서 특정 프로세스의 우선순위가 낮아 무한정 기다리는 경우를 방지하기 위한 방법. 기다린 시간에 비례해 일정 시간이 지나면 우선순위를 한 단계 높여주는 방법(대기 시간이 긴 프로세스를 배려)
5. MLQ (Multi-Level Queue)
- 레벨이 여러개인 ready queue
- 특징
- 작업, 우선순위 별 별도의 ready queue 가짐
- 최초 배정된 큐를 벗어나지 못함(시스템 변화에 적응 못함)
- 각각의 큐는 자신만의 스케줄링 기법 사용
- 큐 사이에는 우선순위 기반의 스케줄링 사용
- 작업, 우선순위 별 별도의 ready queue 가짐
- 장점
- 우선시간이 높은 ready queue는 응답시간이 빠름
- 단점
- 여러개의 큐 관리 등 스케줄링 오버헤드 발생
- 우선순위가 낮은 큐는
starvation(기아)
현상 발생가능- 큐를 여러 개 두더라도 우선순위가 낮으면 여전히 CPU 할당을 받지 못함
6. MFQ (Multi-Level Feedback Queue)
- 프로세스의 큐간 이동이 허용된 MLQ
- MLQ의 최초배정된 큐를 벗어나지 못해, 시스템 변화에 적용하기 힘든 단점을 극복하기 위해 나온 방법
- 특징
- 선점형 스케줄링
- 피드백을 통해 우선순위 조정
- 현재까지의 프로세서 사용 패턴 활용
- 동적 우선순위 가짐
- 시스템 환경 변화에 적응 가능
- 장점
- 프로세스에 대한 사전 정보(실행시간)없이 SJF, SRTN, HRRN 기법의 효과를 볼 수 있음
- 단점
- 설계 및 구현 복잡(여러개의 큐, 큐간의 이동)
- 스케줄링 오버헤드가 큼(변화하는 우선순위)
starvation(기아)
현상 문제- 여전히 우선순위 낮은 프로세스는 CPU 할당 받지 못함
MFQ의 변형
- 각 ready queue마다 다른 시간 할당량 배정
- 프로세스의 특성에 맞는 형태로 시스템 운영 가능
- 입출력(I/O)위주 프로세스들은 상위 단계의 큐로 이동으로 우선 순위 높임
- 프로세스가 block될 때 상위의 ready queue로 진입 진행
- 시스템 전체의 평균 응답시간을 줄이고, 입출력 작업 분산시킴
- 대기 시간이 지정된 시간을 초과한 프로세스들을 상위 큐로 이동
- 에이징(aging)기법
동시성과 병렬성
동시성 (Concurrency)
- 하나의 코어에서 여러 스레드가 번갈아가며 실행
- 여러 작업이 겹치는 기간에 실행될 수 있음을 의미
- 동시에 실행하는 것이 아닌, CPU가 작업마다 시간을 분할해 적절한 context switching을 통해 동시에 실행되는 것처럼 보이게 함
- 핵심목표
유휴시간의 최소화
- 유휴시간 : 컴퓨가 작동가능한 상태인데 작업을 하고 있지 않은 시간
- 발생가능한 문제점
- Race Condition
- 여러 프로세스가 하나의 자원에 접근해 서로의 실행결과에 영향을 주는 현상
- Deadlock
- 여러 프로세스가 서로 상대방의 작업이 끝나기를 무한히 기다리는 현상
- Starvation
- 특정 프로세스가 우선순위가 낮아 원하는 자원을 계속 할당받지 못하는 현상
- Race Condition
병렬성 (Parallelism)
- 멀티코어에서 여러 스레드를 동시에 실행
- 동일한 시간에 독립적인 작업을 실행할 수 있음을 의미
- 동일성과 달리 여러작업을 다른 코어, 프로세스, 별도 컴퓨터등에서 동시 실행가능
- 예시
- 분산 컴퓨팅 시스템
- 발생가능한 문제
- 메모리 손상과 누수
- 여러 작업이 어떤 자원을 공유하고 있는지 고려해야하기 때문
- 메모리 손상과 누수
참고
- 일괄처리 시스템(Batch System)
- 온라인처럼 일에 대한 요청이 발생했을 때, 즉각적으로 처리하는 것이 아닌 일정기간 또는 일정량을 모아뒀다가 한번에 처리하는 방식
- 대화형 시스템(Interactive System)
- 온라인과 같이 일에 대한 요청에 대해 즉각적으로 처리하여 응답을 받을 수 있는 시스템
- 시분할 시스템(Time Sharing System)
- 각 프로세스에 CPU에 대한 일정시간을 할당하여 주어진 시간동안 프로그램을 수행할 수 있게하는 시스템
- 실시간 시스템(Real-time Systen)
- 데이터 발생 즉시, 또는 데이터 처리 요구가 있는 즉시 처리하여 결과를 산출하는 방식