CPU 스케쥴링

Groot·2022년 11월 1일
0

TIL

목록 보기
92/153
post-thumbnail

TIL

🌱 난 오늘 무엇을 공부했을까?

📌 CPU 스케쥴링

  • 프로세스 스케줄링은 CPU에서 실행 중인 프로세스를 제거하고 특정 전략을 기반으로 다른 프로세스를 선택하는 프로세스 관리자의 활동.
  • 프로세스 스케줄링은 다중 프로그래밍 운영 체제의 필수적인 부분.
  • 운영 체제는 한 번에 둘 이상의 프로세스를 실행 가능한 메모리에 로드할 수 있으며 로드된 프로세스는 시간 다중화를 사용하여 CPU를 공유.
  • 프로세스의 실행은 CPU 실행(execution)과 I/O 요청 대기(I/O wait)가 번갈아가며 이루어지는데, 이를 CPU I/O Burst Cycle라고 한다. CPU 스케줄링을 통해 이 CPU Burst Distribution을 관리한다.

📍 스케줄러

  • 스케줄러는 다양한 방식으로 프로세스 스케줄링을 처리하는 특수 시스템 소프트웨어.
  • Long-Term Scheduler
    • 작업 스케줄러라고도 함.
    • 처리를 위해 시스템에 허용되는 프로그램을 결정.
    • 큐에서 프로세스를 선택하고 실행을 위해 메모리에 로드.
    • CPU 스케줄링을 위해 프로세스가 메모리로 로드
    • 작업 스케줄러의 주요 목적은 I/O 바운드 및 프로세서 바운드와 같은 작업의 균형 잡힌 혼합을 제공.
    • 일부 시스템에서는 장기 스케줄러를 사용할 수 없거나 최소한일 수 있다.
    • 시분할 운영 체제에는 장기 스케줄러가 없다.
    • 프로세스가 상태를 new에서 ready로 변경하면 장기 스케줄러가 사용.
  • Short-Term Scheduler
    • CPU 스케줄러라고도 함.
    • 주요 목표는 선택한 기준 세트에 따라 시스템 성능을 높이는 것.
    • 프로세스의 준비 상태를 실행 상태로 변경하는 것.
    • CPU 스케줄러는 실행할 준비가 된 프로세스 중 하나의 프로세스를 선택하고 그 중 하나에 CPU를 할당.
    • 디스패처라고도 하는 단기 스케줄러는 다음에 실행할 프로세스를 결정.
    • 장기 스케줄러보다 빠릅
  • Medium-Term Scheduler
    • 중기 일정은 스와핑의 일부.
    • 메모리에서 프로세스를 제거.
    • 중기 스케줄러는 스왑된 아웃 프로세스를 처리하는 역할

📍 CPU 스케쥴링 알고리즘의 두가지 종류

  • Non-preemptive
    • 프로세스가 실행을 완료할 때까지 프로세스에서 리소스를 가져올 수 없음.
    • 리소스 전환은 실행 중인 프로세스가 종료되고 대기 상태로 이동할 때 발생.
  • Preemptive
    • OS는 고정된 시간 동안 프로세스에 리소스를 할당.
    • 한 프로세스가 CPU를 할당받아 실행중이라도 다른 프로세스가 현재 프로세스를 중지 시키고 CPU를 강제적으로 뺏을 수 있음.
    • 리소스 할당 동안 프로세스는 실행 상태에서 준비 상태로 또는 대기 상태에서 준비 상태로 전환
    • 전환은 CPU가 다른 프로세스에 우선 순위를 부여하고 우선 순위가 더 높은 프로세스를 실행 중인 프로세스로 대체할 수 있기 때문에 발생.

📍 스케쥴링 알고리즘

🔗 Non-preemptive

  • First Come First Serve (FCFS)
    - 작업은 선착순으로 실행.
    - 이해하고 구현하기 쉽다.
    - 구현은 FIFO 대기열을 기반.
    - 평균 대기 시간이 길기 때문에 성능이 좋지 않다.

  • Shortest Job Next (SJN)

    • 최단 작업 우선 또는 SJF.
    • 대기 시간을 최소화하는 가장 좋은 방법.
    • CPU 점유 시간이 가장 짧은 프로세스에 CPU를 먼저 할당하는 방식.
    • 필요한 CPU 시간을 미리 알고 있는 Batch 시스템에서 구현하기 쉽다.
    • 필요한 CPU 시간을 알 수 없는 대화형 시스템에서는 구현이 불가능.
    • 처리자는 처리에 걸리는 시간을 미리 알고 있어야 함.
    • 단기 스케줄링 보다는 장기 스케줄링에 유리하다.
  • Priority Based Scheduling

    • 우선순위 알고리즘, 우선 순위가 가장 높은 프로세스가 먼저 실행되는 방식.
    • 배치 시스템에서 가장 일반적인 스케줄링 알고리즘 중 하나임.
    • 우선순위가 같은 프로세스는 선착순으로 실행.
    • 선 순위는 메모리 요구 사항, 시간 요구 사항 또는 기타 리소스 요구 사항에 따라 결정.

🔗 preemptive

  • Shortest Remaining Time
    • 최단 잔여 시간(SRT)은 SJN 알고리즘의 선점 버전
    • 프로세서는 완료에 가장 가까운 작업에 할당되지만 완료 시간이 더 짧은 새로운 준비 작업에 의해 선점될 수 있다.
    • 주어진 시간 동안 프로세스가 실행되면 해당 프로세스가 선점되고 지정된 시간 동안 다른 프로세스가 실행.
    • 짧은 작업이 우선되어야 하는 배치 환경에서 자주 사용.
  • Round Robin Scheduling
    • 퀀텀이라는 이름의 실행할 고정 시간이 프로세스에 제공.
    • 퀀텀 동안 프로세스가 실행되면 해당 프로세스가 선점되고 지정된 시간 동안 다른 프로세스가 실행.
    • FCFS 기법과 같이 준비상태 큐에 먼저 들어온 프로세스가 먼저 CPU를 할당받음
    • 시간을 할당해서 할당시간 종료 후 완료하지 못하면 폐기
    • 컨텍스트 스위칭은 선점된 프로세스의 상태를 저장하는 데 사용.
  • Multiple-Level Queues Scheduling
    • 다중 레벨 큐는 독립적인 스케줄링 알고리즘이 아님.
    • 다른 기존 알고리즘을 사용하여 공통 특성을 가진 작업을 그룹화하고 예약.
    • 공통 특성을 가진 프로세스에 대해 여러 대기열이 유지한다.
    • 각 대기열에는 고유한 일정 알고리즘이 있다.
    • 각 대기열에 우선 순위가 할당
profile
I Am Groot

0개의 댓글