Back

운영체제 - CPU 스케줄링 알고리즘

CPU 스케줄링 알고리즘

CPU 스케줄링 알고리즘

CPU 스케줄링 알고리즘

1. 스케줄링 알고리즘

image
image

평가 기준

  • CPU 사용률
    • 전체 시스템의 동작 시간 중 실제 CPU가 사용된 시간을 측정
    • 가상 이상적인 수치는 100%
      • 그러나 여러 가지 이유로 90%도 미치지 못함
  • 처리량 (.)
    • 단위 시간 당 작업을 마친 프로세스의 수
    • 이 수치가 클수록 좋은 알고리즘

image
image

  • 대기시간

    • 프로세스가 생성된 후 디스패치되어 실행되기 전 까지 대기하는 시간
  • 응답시간

    • 첫 작업을 시작한 후 첫 번째 출력이 나오기까지 시간
  • 실행 시간

    • 프로세스 작업이 시작된 후 종료되기까지의 시간
  • 반환 시간

    • 대기 시간을 포함해 실행이 종료될 때 까지의 시간
  • 평균 대기 시간

    • 모든 프로세스의 대기 시간을 합한 뒤 프로세스의 수로 나눈 값

    image
    image

FCFS 스케줄링

image
image

  • First Come First Served (선착순)
  • 한번 실행되면 그 프로세스가 끝나야 다음 프로세스 실행 가능
  • 큐가 하나
    • 모든 프로세스는 우선순위 동일

FCFS 스케줄링 성능

image
image

  • 평균 대기 시간

    image
    image

    $$(.+27+42)÷3=23$$

FCFS 스케줄링 평가

  • 처리 기간이 긴 프로세스가 CPU를 차지하면 다른 프로세스들은 계속 기다려야 실행 가능
  • 현재 작업중인 프로세스가 입출력 작업을 요구할 경우 CPU가 작업하지 않고 쉬어버림
    • 작업 효율이 떨어짐

SJF 스케줄링

image
image

  • 준비 큐에 있는 프로세스 중에서 실행 시간이 가장 짧은 작업부터 CPU 할당
  • 최단 작업 우선 스케줄링이라고도 함

SJF 스케줄링 성능

image
image

  • 평균 대기 시간

    image
    image

    $$(.+24+36)÷3=20$$

SJF 스케줄링 평가

  • 운영체제가 프로세스의 종료 시간 예측 어려움
  • 작업시간이 길다는 이유만으로 계속 밀림
    • 아사 현상
    • 공평성이 떨어짐
    • 에이징(.)을 통해 완화 가능
      • 프로세스가 양보할 수 있는 상한선을 정함
      • 자신의 순서를 양보할 때 마다 나이를 한살씩 추가
      • 최대 몇살까지만 양보하도록 규정

HRN 스케줄링

  • SJF의 아사현상을 해결하기 위해 만들어진 비선점형 알고리즘
  • 최소 응답률 우선 스케줄링이라고도 함
  • 서비스를 받기 위해 기다린 시간 + CPU 사용 시간을 고려해 스케줄링
  • 우선순위: 대기시간/CPU 사용 시간 + 1 (우선순위가 클수록 우선순위가 높다)

HRN 스케줄링의 성능

image
image

  • 반환시간
    • P1: 0~30 = 30
    • P2: 3~39 = 36
    • P3: 6~57 = 51
  • 평가
    • 아사 현상을 완화
    • 대기 시간이 긴 프로세스의 우선순위를 높여 CPU 할당 확률을 높임
    • 우선순위 할당에 CPU 사용 시간이 개입하므로 완전히 공평하지는 않음

라운드 로빈 스케줄링

  • 한 프로세스가 타임 슬라이스 동안 작업을 하다가 작업을 완료하지 못하면 준비 큐의 맨 뒤로 가서 자기 차례를 기다리는 방식
  • 선점형 알고리즘
    • 중간에 종료되거나 자발적으로 종료되지 않아도 운영체제에 의해 CPU 사용권을 빼앗길 수 있음
    • 선점형 알고리즘 중 가장 단순하고 대표적인 방식
  • 프로세스들이 작업을 완료할 때 까지 계속 순환

image
image

  • 반환 시간
    • P1: 0~39 = 39
    • P2: 3~47 = 44
    • P3: 6~29 = 23

라운드 로빈 고려사항

  • 타임 슬라이스의 크기와 문맥 교환
    • 타임 슬라이스의 크기가 너무 작으면 문맥 교환에 따른 추가 시간이 너무 길어짐
    • 타임 슬라이스가 큰 경우 하나의 작업이 끝난 뒤 다음 작업이 시작되는 것 처럼 보여 FCFS 스케줄링과 다를게 없음
  • 따라서 타임 슬라이스는 최대한 작게 설정하되 문맥 교환에 걸리는 시간을 고려해 적당하게 설정

SRT 스케줄링과 성능

  • 라운드 로빈 스케줄링 + 남아있는 작업 시간이 가장 적은 프로세스를 선택

image
image

SRT 스케줄링의 평가

  • 실행 중인 프로세스와 큐에 있는 프로세스의 남은 시간을 주기적으로 계산해야함
    • 운영체제의 부담이 조금 커질 수 있음
  • 운영체제가 프로세스의 종료 시간을 예측하기 어려움
  • 아사 현상이 일어남

우선순위 스케줄링

  • 프로세스의 중요도에 따른 우선순위를 반영한 스케줄링 알고리즘

image
image

우선순위 적용

  • 우선순위는 비선점형 방식과 선점형 방식 모두 적용 가능
    • SJF 스케줄링 : 작업 시간이 짧은 프로세스
    • HRN 스케줄링 : 작업 시간이 짧거나 대기 시간이 긴 프로세스
    • SRT 스케줄링 : 남은 시간이 짧은 프로세스
  • 고정 우선순위 알고리즘
    • 한번 우선순위를 부여받으면 종료될때까지 우선순위 고정
    • 단순하게 구현 가능
    • 변동적인 시스템의 상황 반영 불가능
      • 효율 떨어짐
  • 변동 우선순위 알고리즘
    • 일정 시간마다 우선순위 변동
      • 우선순위 계산, 반영 복잡
    • 효율적인 운영 가능

우선순위 스케줄링 평가

  • 준비 큐에 있는 프로세스의 순서를 무시하고 우선순위가 높은 프로세스에 먼저 CPU 할당
    • 공평성 위배
    • 프로세스의 우선순위를 매번 재계산해야 하므로 시스템의 효율을 떨어뜨림
  • 아사 현상을 일으킴
  • 커널 프로세스가 우선

다단계 큐 스케줄링

image
image

  • 우선순위에 따라 큐를 여러개 사용
  • 우선순위는 고정형 우선순위
  • 상단의 큐에 있는 작업이 모두 끝나야 하단에 있는 큐 작업이 시작

다단계 피드백 큐 스케줄링

image
image

  • 프로세스가 CPU를 한번씩 할당받아 실행될 때 마다 우선순위가 낮아짐
    • 다단계 큐에서 우선순위가 낮은 프로세스의 실행이 연기되는 문제 완화
  • 우선순위가 낮아진다고 해도 커널 프로세스가 일반 프로세스의 큐에 삽입되지는 않음
  • 우선순위에 따라 타임 슬라이스의 크기가 다름
    • 아래 우선순위의 타임 슬라이스가 더 큼
    • 한번 CPU를 잡을 때 많이 작업하라고..
  • 마지막 큐에 있는 프로세스는 무한대의 타임 슬라이스를 얻음
  • 마지막 큐는 FCFS 스케줄링 방식을 사용
Built with Hugo
Theme Stack designed by Jimmy