본문 바로가기

운영체제(OS)/스케쥴링

CPU 스케쥴링

1. CPU 스케쥴링

1.1 CPU 스케쥴러

  • 준비 상태에 있는 프로세스들 중 어떠한 프로세스에게 CPU를 할당할지 결정하는 운영체제의 코드 

     - 실행 상태에 있던 프로세스가 I/O 요청 등에 의해 봉쇄 상태로 바뀌는 경우

     - 실행 상태에 있던 프로세스가 타이머 인터럽트 발생에 의해 준비 상태로 바뀌는 경우

     - I/O 요청으로 봉쇄 상태에 있던 프로세스의 I/O 작업이 완료되어 인터럽트가 발생되고 그 결과로 프로세스의 상태가 준비 상태로 바뀌는 경우

    - CPU에서 실행 상태에 있는 프로세스가 종료되는 경우

    - 선점형 방식, 비선점형 방식이 존재

1.2 디스패처

  • 새롭게 선택된 프로세스가 CPU를 할당받고 작업을 수행할 수 있도록 환경설정을 하는 운영체제의 코드
  • 기존의 실행중이던 프로세스의 문맥을 PCB에 이양하고 새롭게 실행되는 프로세스의 문맥을 복원한 후 그 프로세스에게 CPU를 넘기는 과정을 수행한다

1.3 스케쥴링의 성능 평가

  • CPU 이용률 : 전체 시간중 CPU가 일을 한 시간의 비율
  • 처리량 : 주어진 시간 동안 준비 큐에서 기다리고 있는 프로세스 몇개를 끝마쳤는가
  • 소요시간 : 프로세스가 CPU를 요청한 시점부터 자신이 원하는 만큼 CPU를 다 쓰고 CPU 버스트가 끝날때까지 걸린 시간 (즉, 준비큐에서 기다린 시간과 실제로 CPU를 사용한 시간의 합)
  • 대기 시간 : CPU 버스트 기간 중 프로세스가 준비 큐에서 CPU를 얻기 위해 기다린 시간의 합(CPU 버스트가 끝나기까지 준비큐에서 기다린 시간의 합)
  • 응답 시간 : 프로세스가 준비 큐에 들어온 후 첫번째 CPU를 획득하기까지 기다린 시간( 첫번째 CPU를 얻기까지의 시간 ) 

1.4 스케쥴링 알고리즘

1) 선입 선출 스케쥴링

  • 준비 큐에 도착한 시간 순서대로 CPU를 할당하는 방식
  • page156 참조
  • 콘보이 현상 : CPU 버스트가 짧은 프로세스가 CPU버스트가 긴 프로세스보다 나중에 도착해 오랜 시간을 기다려야 하는 현상

2) 최단작업 우선 스케쥴링

  • CPU 버스트가 가장 짧은 프로세스에게 제일 먼저 CPU를 할당하는 방식
  • 비선점형 방식, 선점형 방식이 존재
  • page158 참조
  • 기아 현상 : CPU 버스트가 긴 프로세스가 지속적으로 CPU를 할당받지 못하는 현상

3) 우선순위 스케쥴링

  • 준비 큐에서 기다리는 프로세스들 중 우선순위가 가장 높은 프로세스에게 제일 먼저 CPU를 할당하는 방식
  • 마찬가지로 기아 문제 발생
  • 노화 기법 : 기다리는 시간이 길어지면 우선순위를 조금씩 높아주는 방법

4) 라운드 로빈 스케쥴링

  • 각 프로세스가 CPU를 사용할수 있는 시간이 특정 시간으로 제한되며, 이 시간이 경과하면 CPU를 뺏어서 준비큐에 대기하는 프로세스에게 스케쥴링 하는 방식 ( 최대시간을 할당시간으로 칭함 )
  • 여러 종류의 이질적인 프로세스가 같이 실행되는 환경에서 효율적
  • page164참조
  • 장점 : SJF는 평균 대기시간 측면에서 가장 좋은 효율을 보이지만 형평성 측면에서는 나쁜 효율을 보인다. 따라서 해당 형평성 측면의 문제점을 해결하고 빠른 응답시간 측면에서도 좋은 효율을 보인다.
  • 가장 기본이 되는 건 CPU 버스트 시간이 긴 프로세스는 그만큼 오랜시간이 걸리고 짧은 프로세스는 짧은 시간이 걸린다는 것이다

5) 멀티레벨 큐

  • 멀티레벨 큐란 준비 큐를 여러개로 분할해 관리하는 스케쥴링 기법을 의미 즉 프로세스들이 여러줄로 서 있는것
  • 어떤 줄에 서 있는 프로세스 먼저 스케쥴링 ? 어떤 줄에 어떤 프로세스를 세울 것인가 ?
  • 대화형 작업, 그렇지 않는 작업 대화형 작업에 먼저 CPU 할당
  • 일반적으로 대화형 작업을 담기 위한 전위 큐(응답시간을 짧게 하기 위한 라운드 로빈 방식)와 계산형 작업을 담기 위한 후위 큐(응답시간이 큰 의미를 가지지 않으므로 FCFS를 사용해서 문맥 교환 오버헤드를 줄임)로 분할하여 운영
  • 큐 자체에 대한 스케쥴링, 어느 큐에 먼저 CPU를 할당할 것인가 ? 고정 우선순위 방식 -> 큐에 고정 우선순위를 부여 -> 기아 문제 발생 -> time slice방식. 전위 큐에 시간 CPU time 80% , 후위 큐에 CPU time 20%

6) 멀티레벨 피드백 큐

  • 기본적으로 멀티레벨 큐와 같지만 프로세스가 하나의 큐에서 다른 큐로 이동가능하다는 점이 다르다.
  • 여러 종류의 이질적인 프로세스가 같이 실행되는 환경에서 효율적
  • page171참조

7) 다중 처리기 스케쥴링

  • CPU가 여러개인 시스템
  • 하나의 CPU가 처리해야만 하는 프로세스가 존재할수 있으므로 CPU별로 줄세우기가 필요
  • 이 경우 하나의 CPU에 작업이 편중되는 현살이 발생
  • 부하 균형 메커니즘 필요

    - 대칭형 다중처리 : 각 CPU가 각자 알아서 스케쥴링을 결정하는 방법

    - 비대칭형 다중처리 : 하나의 CPU가 다른 모든 CPU의 스케쥴링 및 데이터 접근을 책임지고 나머지 CPU가 거기에 따라 움직이는 방식

 

8) 실시간 스케쥴링

  • 데드라인이 정해져있어 특정 시점안에 작업이 완료되어야 할때 사용하는 스케쥴링 기법
  • 경성 실시간 시스템, 연성 실시간 시스템으로 구성
  • 경성 실시간 시스템 : 미사일 발사, 원자로 제어등 시간을 정확히 지켜야 하는 시스템을 의미
  • 연성 실시간 시스템 : 데드라인으 존재하지만 지키지 않았다고 위험한 상황이 발생하지는 않는다. 멀티미디어 스트리밍 시스템이 주요 예
  • 따라서 데드라인이 중요하므로 데드라인이 조금남은 프로세스부터 처리하는 EDF스케쥴링 사용

1.5 스케쥴링 알고리즘의 평가

  • 스케쥴링 성능 평가 알고리즘은 큐잉모델, 시뮬레이션, 구현 및 실축 방식이 존재
  • 큐잉모델 : 확률분포를 통해 프로세스들의 도착률과 CPU 처리율을 입력값으로 주면 복잡한 수학적 계산을 통해 각종 성능지표인 CPU의 처리량, 프로세스의 평균 대기시간등을 구함
  • 구혀 및 실측 : CPU 스케쥴링 코드를 수정하여서 비교 평가하는 방법
  • 시뮬레이션 : CPU 스케쥴링 프로그램을 작성한 후 프로그램의 CPU요청을 입력값으로 넣어 어떠한 결과가 나오는지를 확인하는 방법