프로세서 스케줄링 알고리즘

프로세스 스케줄링 알고리즘

CPU 스케줄링 : 언제 어떤 프로세스에게 CPU를 할당할지 결정하는 작업

스케줄링 평가기준

  • 시스템 입장의 성능 척도

    • CPU 이용률 (CPU utilization)

      • 시간당 CPU 사용 시간 비율

      • 전체 시간 중 CPU가 쉬지 않고 일한 시간

    • 처리율 (Throughput)

      • 시간당 처리한 작업의 비율

      • 단위 시간 당 수행 완료한 프로세스의 수

  • 프로그램 입장의 성능 척도

    • 반환시간 (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 대기 시간

시스템 입장의 성능척도(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 방식과 유사해짐

  • 장점

    • 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

  • 장점

    • 평균 대기시간 최소화

    • 시스템 내 프로세스 수 최소화

      • 스케줄링 부하 감소, 메모리 절약으로 시스템 효율성 향상

    • 많은 프로세스들에게 빠른 응답 시간 제공

  • 단점

    • 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는 응답시간이 빠름

  • 단점

    • 여러개의 큐 관리 등 스케줄링 오버헤드 발생

    • 우선순위가 낮은 큐는 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

      • 특정 프로세스가 우선순위가 낮아 원하는 자원을 계속 할당받지 못하는 현상

병렬성 (Parallelism)

  • 멀티코어에서 여러 스레드를 동시에 실행

  • 동일한 시간에 독립적인 작업을 실행할 수 있음을 의미

    • 동일성과 달리 여러작업을 다른 코어, 프로세스, 별도 컴퓨터등에서 동시 실행가능

  • 예시

    • 분산 컴퓨팅 시스템

  • 발생가능한 문제

    • 메모리 손상과 누수

      • 여러 작업이 어떤 자원을 공유하고 있는지 고려해야하기 때문

참고

  • 일괄처리 시스템(Batch System)

    • 온라인처럼 일에 대한 요청이 발생했을 때, 즉각적으로 처리하는 것이 아닌 일정기간 또는 일정량을 모아뒀다가 한번에 처리하는 방식

  • 대화형 시스템(Interactive System)

    • 온라인과 같이 일에 대한 요청에 대해 즉각적으로 처리하여 응답을 받을 수 있는 시스템

  • 시분할 시스템(Time Sharing System)

    • 각 프로세스에 CPU에 대한 일정시간을 할당하여 주어진 시간동안 프로그램을 수행할 수 있게하는 시스템

  • 실시간 시스템(Real-time Systen)

    • 데이터 발생 즉시, 또는 데이터 처리 요구가 있는 즉시 처리하여 결과를 산출하는 방식

Last updated