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

TopOfTheHead·2025년 7월 27일

운영체제

목록 보기
7/24

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

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

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

。대부분의 OS의 CPU 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가 할당될때까지 소요된 시간

    。짧을수록 성능이 좋음

Burst와 Bound
。프로세스 실행 중 발생하는 CPU 작업과 I/O 작업의 시간
▶ 프로세스는 CPU Burst와 I/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 Burst와 I/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 ) : 여러 대안 中 최선의 대안을 선택하는 과정

    프로세스의 상태변환 시
    。Running → Ready : 선점형 스케쥴링
    。Waiting → Ready : 선점형 스케쥴링
    。Running → Waiting : 비선점형 스케쥴링
    。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개의 댓글