운영체제 - CPU 스케쥴러 / 스케줄링 / Burst / 디스패처

TopOfTheHead·2025년 7월 27일

운영체제

목록 보기
7/24

CPU Scheduling
RAM스케쥴링 큐Ready Queue에 적재되어 대기중인 프로세스들 중 CPU CoreCPU 제어권을 배정할 우선순위 프로세스를 선택하는 작업

OSCPU를 각 프로세스에게 어떤 순서로, 얼만큼 할당할 건지 CPU 스케줄링을 수행
CPU 낭비를 최대한 감소

OS멀티프로그래밍이 가능하게하는 필수요소
멀티프로그래밍을 통해 RAM에 적재된 프로세스들을 Concurrently하게 실행하여 CPU 사용률을 극대화

。대부분의 OSCPU Scheduling프로세스 보다는 Kernel Thread를 대상으로 스케쥴링을 지원

  • CPU 제어권
    CPU가 현재 실행해야 할 프로세스를 결정 및 처리하는 권한
    OS와 여러 프로세스가 동시에 실행되는 환경에서 어떤 프로세스CPU를 점유할 지 결정하는 역할을 수행

CPU Scheduling의 성능척도
시스템 입장에서 성능척도 : CPU Usage, Throughput
CPU 하나로 최대한 많은 작업을 수행하는것을 판단하기위한 척도

프로그램 입장에서 성능척도 : 대기시간, 응답시간, 소요시간
프로그램이 최대한 빨리 끝나면 성능이 좋음.

  • CPU 이용률 ( CPU Utilization )
    전체 시간CPU유휴시간을 제외한 일한시간비율
    ▶ 가능한 한 항상 CPU를 바쁜 상태로 유지하도록 활용하는 척도

    。높을수록 성능이 좋음

  • 처리량 ( Throughput )
    Throughput : 단위시간 당 처리하는 프로세스 갯수
    Throughput을 최대한 증진

    。높을수록 성능이 좋음

  • 소요시간( Turnaround time ) :
    프로세스Turnaround time( = CPU 요청시점부터 CPU를 점유하여 사용이 완료될때까지 소요된 시간 )
    프로세스Execute 시 제출부터 완료까지의 시간을 최소화해야한다.

    。짧을수록 성능이 좋음

  • 대기시간 ( Waiting time ) :
    프로세스들이 CPU 제어권을 획득할때까지 Ready Queue에서 대기하는 총 시간

    。짧을수록 성능이 좋음

  • 응답시간 ( Response time )
    Ready Status프로세스에게 최초로 CPU할당될때까지 소요된 시간

    。짧을수록 성능이 좋음

BurstBound
프로세스 실행 중 발생하는 CPU 작업I/O 작업시간
프로세스CPU BurstI/O Burst를 교대로 반복하며 실행

。일반적으로 CPU Bound의 빈도는 적고, I/O Bound의 빈도는 많다
CPU Scheduling을 사용하면 CPU 성능이 증진되는 이유

  • Burst
    프로세스 실행 중 특정 작업( CPU or I/O )를 처리하는데 소요되는 시간
    CPU Burst : 프로세스CPU를 사용 시 계산이나 데이터 처리 작업을 수행하는데 소요되는 시간

    I/O Burst : 프로세스입출력장치를 사용해 데이터 입출력에 소요되는 시간

    I/O Burst의 경우 기본적으로 입출력장치I/O 연산CPU 연산에 비해 수천배 느린 특징으로 CPU Burst에 비해 긴 시간이 소요.
    CPU Burst \le I/O Burst

  • Bound
    프로그램마다 CPU BurstI/O Burst의 실행비율이 다르다.

    。일반적으로 CPU Bound에 비해 I/O Bound의 빈도가 많다

    ( 상 : CPU Bound / 하 : I/O Bound )
    CPU Bound : CPU Burst의 비율이 많은 프로그램
    CPU 사용시간I/O Waiting time보다 많은 경우

    I/O Bound : I/O Burst의 비율이 많은 프로그램
    I/O Waiting time이 많은 경우

    CPU burst < I/O burst 지만, 일반적으로 I/O Bound의 작업량은 적고, CPU Bound의 작업량이 많으므로 큰 작업에 대해서는 CPU Bound > I/O Bound

CPU 스케쥴러 ( CPU Scheduler )
RAM에서 Execute 대기중인 프로세스CPU의 제어권을 우선적으로 배정할 프로세스를 선택.
프로세스Ready 상태로 Ready Queue에서 선택 대기되있는 상태
▶ 이후 선택된 프로세스디스패처를 통해 Context Switching.

CPU 스케쥴러프로세스 메모리 레이아웃에서 Text Section에서 코드로 구현

우선순위큐 ( Proiority Queue )를 사용해 프로세스의 우선순위를 결정

  • CPU Scheduler 종류

    장기 스케쥴러 ( Long-Term Scheduler )
    보조기억장치에 있는 프로그램( = Job Queue ) 중 어떤 프로그램주기억장치로드할 지 결정하는 스케쥴러
    주기억장치프로세스 수를 제한하여 메모리 과부하 방지

    중기 스케쥴러( Medium-Term Scheduler )
    。실행중인 프로세스주기억장치에서 보조기억장치로 이동하거나, 보조기억장치에서 주기억장치로 복구하는 스케쥴러
    주기억장치메모리 부족 시 우선순위가 낮은 프로세스Suspended 상태로 전환하여 보조기억장치로 이동 후 메모리 여유 시 다시 프로세스복구

    단기 스케쥴러 ( Short-Term Scheduler )
    Ready Queue에 존재하는 프로세스CPU 제어권을 획득하여 CPU점유프로세스스케쥴링 알고리즘을 기반으로 선택하는 스케쥴러
    ▶ 실행속도가 매우 빠르다. ( ms단위로 동작 )

  • CPU Scheduler의사결정
    의사결정 ( Decision Making ) : 여러 대안 中 최선의 대안을 선택하는 과정

    프로세스의 상태변환 시
    RunningReady : 선점형 스케쥴링
    WaitingReady : 선점형 스케쥴링
    RunningWaiting : 비선점형 스케쥴링
    Termination : 비선점형 스케쥴링

디스패처 ( Dispatcher )
CPU Scheduler에 의해 선택된 프로세스에게 Context Switching을 수행하여 CPU 코어의 제어권을 전달하는 모듈
CPU 스케쥴러우선순위 프로세스를 선택 시 디스패처가 실제 Context Switching을 수행

Context Switching이 발생할때마다 디스패처도 같이 동작하므로 디스패처의 처리시간이 가급적 빨라야함
Dispatch Latency를 최소화

  • 디스패치 ( Dispatch ) :
    Ready Queue에서 CPU 스케쥴러에게 선택된 Ready 상태프로세스를 실제로 CPU할당하는 과정

  • Dispatch Latency

    。실행중인 프로세스PCB 정보를 Save하고 교체될 프로세스PCB 정보를 Restore하는데 소요되는 시간
    ▶ 이를 최소화해야 CPU 성능이 좋다.

  • 디스패처의 기능
    。실행중인 프로세스Context( = PCB 정보 )를 교체될 프로세스Context로 변경

    프로세스User mode로 전화

    。대기중인 프로세스의 작업을 재개하기위한 적합한 위치로 Jumping

출처
운영체제 공룡책 강의

profile
공부기록 블로그

0개의 댓글