[Operating System ⑤] 스케줄링 개념 잡기

4 분 소요

[Operating System ⑤] 스케줄링 개념 잡기

HPC Lab 김덕수 교수님의 운영체제 강의를 정리한 내용입니다. :+1:

강의링크


목차

:point_right: [1] 스케줄링의 목적

  1. 다중프로그래밍?

  2. 스케줄링의 목적

:point_right: [2] 스케줄링의 기준 및 단계

  1. 스케줄링 기준

  2. I/O Burst와 CPU Burst

  3. 스케줄링의 단계

  4. Long term scheduling
  5. Mid term scheduling

  6. Short term scheduling

:point_right: [3] 스케줄링 정책

  1. 스케줄링 정책

  2. 선점 비선점 스케줄링

  3. 우선순위



:pushpin: 스케줄링의 목적

Process가 실제로 어떻게 자원을 할당받게 되는지 알아보자.

1-A. 다중프로그래밍

Process Scheduling이 필요한 다중 프로그래밍 환경

하나의 System은 여러 개의 Process를 가지고 있다. 여러 개의 Process가 존재하는 환경이라는 의미에서 이를 다중 프로그래밍 환경이라 부른다.

다중 프로그래밍 환경 내에서는 다수의 Process들이 자원을 나누어서 사용할 필요가 있다.
따라서 어떤 Process에게 어떻게 자원을 할당할 것인지를 결정하는 것이 필요한데, 이를 스케줄링이라 부른다.

자원관리는 크게 2가지로 나눠진다.

  1. 시간 분할 관리 CPU와 같이 한 번에 하나의 Process만 들어가서 사용할 수 있는 자원에 대해서는 시간을 분할하여 관리하게 된다.
    • (예) CPU
  2. 공간 분할 관리 메모리와 같이 한 번에 여러 개의 Process가 사용할 수 있는 자원은 공간을 분할하여 관리하게 된다.
    • (예) Memory, Disk


1-B. 스케줄링의 목적

하나의 System이 여러 개의 Process를 관리해야 하는 다중 프로그래밍 환경에서는, System을 보다 효율적으로 사용할 필요가 있다.
즉, 시스템의 성능을 높일 필요가 있다.

시스템의 성능 측정을 위한 대표적인 지표는 다음과 같다.

  1. 응답시간: 어떤 요청을 보내고, 응답이 돌아올 때까지의 시간.
    • 얼마나 시스템이 빠르게 응답하는가?
  2. 쓰루풋: 작업 처리량.
    • 단위 시간동안 얼마나 많은 일을 처리하는가?
  3. 자원 활용도: 얼마나 자원을 놀리지 않고 사용할 수 있는가?
    • 최고 수준 == 1


그렇다면, 이들 중 가장 중요하게 고려해야 할 지표는 무엇일까?
답은 알 수 없다이다.
System의 목적이 무엇인지에 따라 중요한 요소가 달라지고, 그 목적에 맞게 Scheduling기법을 달리 해줘야 한다.

예시

  1. 응답시간 : Interactive(대화형)과 Realtime(실시간) 시스템에서 중요한 지표
  2. 작업 처리량: batch(일괄처리) 시스템에서 중요한 지표
  3. 자원 활용도: 장비가 비쌀 경우 중요한 지표

즉, 어떤 목적이냐에 따라 성능지표가 달라진다.


주요 용어


  • Waiting time (대기시간): Process가 도착하여 실행이 되기 전까지 기다리는 시간
  • Response time (응답 시간): Process가 도착하여 실행을 시작하고 나서 처음 응답이 올 때까지의 시간
  • Burst time (실행 시간): Process를 실행한 시간
  • Turn-around time (반환 시간): Process가 최초로 도착해서 원하는 일을 모두 마칠 때까지 걸린 시간




:pushpin: 스케줄링의 기준 및 단계

2-A. 스케줄링 기준

스케줄링 기준이란 다음에 어떤 Process를 CPU에 할당할지 결정할 때, 고려하는 항목들을 말한다.

대표적인 항목으로 다음의 다섯 가지가 있다.

  1. 시스템 특성 일괄처리 시스템과 대화형 시스템은 목적이 다르다. 어떤 Process를 먼저 올릴 것인는 시스템의 목적에 따라 다름

  2. 프로세스의 긴급성 어떤 Process가 더욱 긴급하게 실행되어야 하는가

  3. 프로세스 우선순위 어떤 Process가 우선순위를 가지고 있는가

  4. 프로세스 총 실행 시간

  5. 프로세스의 특성 ProcessI/O-bounded인가 compute-bounded인가

    • compute-bounded : cpu가 성능을 결정
    • i/o-bounded : i/o가 성능을 결정


다음 페이지에서 I/O-boundedcompute-bounded에 대하여 살펴보자.


2-B. I/O Burst와 CPU Burst

Process가 수행되는 과정은 CPU를 사용(연산)하다가 I/O를 사용하는 과정의 반복이다.


  • CPU burst (입출력 버스트): CPU사용시간
  • I/O burst (입출력 버스트): I/O 대기(수행) 시간

어떤 Process는 CPU burst(cpu 사용시간)이 더 길고, 어떤 Process는 I/O burst(I/O 수행시간)이 더 길다.
이 때, CPU burst가 더 많은 경우를 compute-bounded process라 하고, I/O burst가 더 많은 경우를 I/O-bounded process라 부른다.


2-C. 스케줄링의 단계

스케줄링이 발생하는 빈도를 기준으로 다음과 같이 3가지로 나눈다.

  1. Long-term scheduling : 가끔 발생
    • (예) Job scheduling 잡 스케줄링
  2. Mid-term scheduling : 종종 발생
    • (예) Memory allocation 메모리 할당
  3. Short-term scheduling : 자주 발생
    • (예) Process scheduling 프로세스 스케줄링


2-D. Long term scheduling

긴 시간에 걸쳐 한번씩 발생하는 스케줄링이다.

  1. 대표적으로 Job Scheduling이 있다 ProcessJobKernel에 등록된 상태를 말한다.
    잡 스케줄링이란, Process가 되기 위해 줄 서 있는 Job들 중 어떤 것을 먼저 Process로 등록해줄지 스케줄링하는 작업이다.

  2. 다중 프로그래밍 정도를 조절한다 다중 프로그래밍 정도란, System 내에 몇 개의 Process를 용인해 줄것인지를 결정하는 정도(degree)이다.
    이것이 성능 결정에 중요한 요소로 작용한다.

  3. 그럼 I/0-bounded processcompute-bounded process누구를 먼저 시스템에 등록하는 것이 좋을까? 잘 섞어서 올려주기
    CPU 바운디드 프로세스만 등록한다면 I/O 디바이스를 놀리게 되고, 마찬가지로 I/O 바운디드 프로세스만 등록한다면 CPU를 놀리게 된다.
    즉, 이 둘을 잘 섞어 올려줌으로써 두 자원 모두 효율적으로 일하게 만들 수 있다.

  4. 시분할 시스템의 경우에는 롱텀 스케줄링이 불필요하다 시간을 나누어서 사용하기 때문에, 몇 개의 Process가 들어와도 상관 없으므로, 롱텀 스케줄링이 상대적으로 덜 중요해진다.


2-E. Mid term scheduling

Memory 할당과 관련되어 발생하는 스케줄링이다.


Processsuspended ready상태일 때, 가용 메모리를 할당받게 되면 ready상태로 변화한다.
이 때, 어떤 Process에게 가용 메모리를 할당할 것인지를 결정하는 것이 미드 텀 스케줄링이다.
JobSystem에 들어오는 롱텀 스케줄링보다 더 자주 발생하게 된다.


2-F. Short term scheduling

ready상태의 Processrunning상태로 올려줄 때 발생하는 스케줄링으로, 가장 빈번하게 발생한다.


CPU를 할당할 Process를 결정하는 스케줄링이라고 하여, 프로세스 스케줄링이라고도 불린다.
이 스케줄링이 느릴 경우에는, 시스템이 전반적으로 느려지게 되므로 성능에 많은 영향을 미치며 속도가 빨라야 한다.


스케줄링 단계 구조




:pushpin: 스케줄링 정책

스케줄러가 스케줄링에 사용할 수 있는 정책(선택 기준)은 어떤 것들이 있는가?

3-A. 스케줄링 정책

어떤 방법을 사용하여 스케줄링할 것인지를 결정하는 수행의 준거를 말한다.

크게 2가지로 나눠볼 수 있다.

  1. 선점 스케줄링인가, 비선점 스케줄링인가?
  2. 어떻게 우선순위를 결정할 것인가?


3-B. 선점 비선점 스케줄링

첫 번째 스케줄링의 기준은 선점형이냐 비선점형이냐이다.

  1. Preemptive scheduling 선점 스케줄링 : 누가 내 것을 빼앗을 수 있다

내가 현재 CPU를 사용하고 있다고 하더라도, 나보다 더 급한 Process에게 CPU를 양보할 수 있다.
시분할/실시간 시스템 등 급한 일을 빨리 처리해야 하는 시스템에 적합하며, 응답성이 높다는 장점이 있다.
하지만, Process가 빈번히 바뀌기 때문에, Context switching으로 인한 Overhead가 커진다(시스템 부하가 크다).

  1. Non-preemptive scheduling 비선점 스케줄링 : 내 것을 빼앗을 수 없다

할당 받은 자원을 스스로 반납할 때까지 사용할 수 있다. System call, I/O등이 비선점 스케줄링에 해당된다.
선점이 불가능하기 때문에 Context switching과 같은 Overhead가 줄어든다는 장점이 있다.
하지만 응답시간이 길어지고, 우선순위가 높은 Process를 수행할 수 없기 때문에, 우선순위가 자주 역전되는 현상이 발생한다.

3-C. 우선순위

두 번째 스케줄링 기준은 스케줄링 우선순위가 정적이냐 동적이냐이다.

  1. Static priority 정적 우선순위 Process가 생성될 때 우선순위가 결정되며, 다시 변하지 않는다.
    구현이 쉽고 Overhead가 적다는 장점이 있지만, System 환경이 변하여도 우선순위를 반영하지 못한다는 단점이 있다.

  2. Dynamic priority 동적 우선순위 Process의 상태 변화에 따라 우선순위가 변화한다.
    System 환경이 변화함에 따라 우선순위를 변화시켜 빠르게 대응이 가능하다는 장점이 있다.
    하지만, 구현이 복잡하고 계속 우선순위를 계산해줘야 하기 때문에 Overhead가 크다.

작업관리자의 Priority 설정




:bulb: 요약

  1. 다중 프로그래밍 환경 System에는 Process가 많기 때문에 스케줄링이 필요하다.

  2. 스케줄링 개념 스케줄링의 목적성능을 높이는 것이며, 성능을 측정하는 다양한 지표가 있다.

  3. 스케줄링 레벨 스케줄링의 발생 빈도에 따라서 롱/미들/숏 텀 스케줄링으로 나뉜다.

  4. 스케줄링 정책 스케줄링을 위한 다양한 정책이 잇으며, 선점/비선점이냐 우선순위를 어떻게 설정할 것인지에 따라 스케줄링이 달라진다.

태그:

카테고리:

업데이트:

댓글남기기