프로세스 스케줄링 - 1. 개요

김진한·2022년 5월 7일
0

운영체제(OS)

목록 보기
4/8

스케줄링의 목적

  • 시스템에는 여러개의 프로세스가 존재하는데 자원을 할당 할 프로세스를 선택하는 것을 스케줄링(Scheduling)이라 한다. 스케줄링의 목적은 시스템의 성능을 향상시키는 것이다. 이를 위해서는 자원관리를 해야하는데, 자원관리의 방법으로는 시간분할(time sharing)과 공간분할(space sharing)이 있다. 시간분할은 하나의 자원을 여러 스레드들이 번갈아가며 사용하는 것이다.

시스템 성능지표

대표적인 시스템 성능지표 3가지는 다음과 같다. 목적에 맞는 지표를 고려해서 스케줄링 기법을 선택해야 한다.

  1. 응답시간(response time)
    작업 요청(submission)으로부터 응답 받을 때 까지의 시간

  2. 작업처리량(throughput)
    단위 시간 동안 완료된 작업의 수

  3. 자원활용도(resource utilization)
    주어진 시간(Tc) 동안 자원이 활용된 시간(Tr)
    Utilization = Tr / Tc

  • 대기시간, 응답시간, 반환시간
    대기시간 : 프로세스가 도착한 후부터 실행하기 전까지의 시간
    응답시간 : 프로세스가 도착한 후부터 첫 번째 출력까지의 시간
    반환시간 : 프로세스 도착, 실행, 첫 번째 출력, 실행 종료 등 전 과정의 시간

스케줄링 기준(Criteria)

  • 스케줄링 기준으로는 프로세스의 특성, 시스템의 특성, 프로세스의 긴급성, 프로세스 우선순위, 프로세스 총 실행 시간 등이 있다.

  • 프로세스 수행은 CPU 사용과 I/O 대기의 반복이다. CPU burst는 CPU 사용 시간이고, I/O burst는 I/O 대기 시간이다. CPU burst가 I/O burst보다 긴 경우 CPU burst가 성능을 결정한다는 의미에서 compute-bounded process라고 한다. 반면 I/O burst의 시간이 더 긴 경우 I/O-bounded process라고 한다. Burst time은 스케줄링의 중요한 기준 중 하나이다.


스케줄링의 단계(Level)

  • 스케줄링 단계는 발생하는 빈도 및 할당 자원에 따른 구분이다.

  • Long-term Scheduling
    긴 시간에 한번씩 일어나는 스케줄링이다. Job Scheduling이 여기에 해당된다. Job Scheduling은 대기하고 있는job들 중 어떠한 것을 시스템(kernel)에 등록시킬 지 결정하는 일을 한다. 다중프로그래밍 정도(degree) 또한 조절하는데, 이는 시스템 내에 프로세스의 수를 조절한다.
    I/O-bounded와 compuete-bounded 프로세스들을 잘 섞어서 선택해야 한다. 그런데 시분할 시스템에서는 모든 작업을 시스템에 등록한다. 때문에 Long-term scheduling이 덜 중요하다.

  • Mid-term Scheduling
    메모리 할당을 결정한다(memory allocation)

  • short-term Scheduling
    Prodcess scheduling이다. 프로세서를 할당할 프로세스를 결정하기 때문에 가장 빈번하게 발생한다. 이 스케줄링의 속도를 빠르게 하는 것이 성능에 중요한 영향을 미친다.
    ex)
    averate CPU burst = 100ms
    scheduling decision = 10ms
    100 + 10 = 110
    이 경우에 10 만큼, 즉 약 9%는 오버헤드가 발생한 것이다.

  • 스케줄링의 단계 다이어그램


스케줄링 정책(Policy)

  • 선점(preemptive scheduling) vs 비선정(Non-preemptive-scheduling)
    선점은 타의에 의해 자원을 때앗길 수 있다. 예를 들어 할당 시간이 종료되거나 우선순위가 높은 프로세스가 등장할 때 발생한다. 응답성이 높은 것이 장점이지만 그만큼 Context switch overhead가 크다. 시분할(Time-sharing system)이나 real-time system 등에 적합하다.
    비선점은 할당받은 자원을 스스로 반납할 때까지 사용한다(뺏을 수 없다). Context switch overhead가 적지만, 잦은 우선순위의 역전이나 평균 응답 시간이 증가한다.

  • 우선순위
    우선순위는 프로세스의 중요도다. 정적 우선순위와 동적 우선순위로 구분할 수 있다.
    정적 우선순위(Static Priority)는 프로세스 생성 시 결정된 우선순위가 유지된다. 때문에 구현이 쉽고, overhead가 적다. 하지만 시스템 환경 변화에 대한 대응이 어렵다.
    동적 우선순위(Dynamic Priority)는 프로세스의 상태 변화에 따라 우선순위가 변한다. 때문에 시스템 환경 변화에 유연하게 대응할 수 있다는 장점이 있다. 하지만 구현이 복잡하고, 우선순위를 재계산하면서 overhead가 발생한다.

0개의 댓글