Blog
스터디
CS Study with SON
7주차
프로세스 스케줄링 알고리즘

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


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)
    • 데이터 발생 즉시, 또는 데이터 처리 요구가 있는 즉시 처리하여 결과를 산출하는 방식