OS #5 CPU Scheduling

김태준·2023년 3월 8일
0

CS & OS Study

목록 보기
8/12
post-thumbnail

✅ CPU 스케줄링

CPU 이용률을 극대화하기 위해 멀티프로그래밍이 필요한데 CPU core가 한개라면 한 번에 하나의 프로세스만 실행 가능하므로, 이때 CPU 스케줄링이 필요하다.
즉, 언제 어떤 프로세스에 CPU를 할당할 지 결정하는 작업

  • ✍️ CPU Scheduler
    : 메모리에 있는 프로세스 중 어떤 프로세스를 실행할지 선택, CPU를 할당하는 역할
    = (CPU가 유휴 상태가 될 때마다 OS는 Ready queue에 있는 프로세스 중 하나를 선택해 실행하게 되는데, 이때 프로세스를 선택하는 절차는 CPU 스케줄러에 의해 수행된다.)

(running > waiting(입출력 발생), running > ready(인터럽트 발생), waiting > ready(입출력 완료), teminated)로의 상태 전환 같은 상태일 때 스케줄링을 결정한다

  • ✍️ 비선점형 스케줄링
    : 입출력 발생, terminated 상황에서만 스케줄링 발생
    프로세스가 CPU를 점유하고 있다면 이를 뺏을 수 없는 방식
    필요한 Context Switching만 일어나므로 Overhead가 상대적으로 적지만 프로세스 배치에 따라 효율성 차이가 많이 난다.
  • ✍️ 선점형 스케줄링
    : 인터럽트 발생, 입출력 완료 시의 상황에서만 스케줄링 발생
    프로세스가 CPU를 할당받아 실행 중이더라도 OS가 이를 강제로 뺏을 수 있는 방식
    CPU처리 시간이 매우 긴 프로세스의 CPU 독점을 막을 수 있지만, 잦은 Context Switching으로 Overhead가 커질 수 있다.

🎈 CPU 스케줄링 평가 기준

  1. CPU utilization
  • 시간 당 CPU를 사용한 시간의 비율
  • 프로세서를 실행 상태로 항상 유지하려고 해야 한다.
  1. Throughput
  • 시간 당 처리한 작업의 비율
  • 단위 시간 당 완료되는 작업 수가 많도록 해야 한다.
  1. Turnaround Time
  • 프로세스가 생성된 후 종료되어 사용하던 자원을 모두 반환하는데 걸리는 시간
  • 작업이 ready queue에서 기다린 시간부터 CPU에서 실행된 시간, 입출력 작업 시간의 합
  1. Waiting Time
  • 대기열에 들어와 CPU를 할당받기까지 기다린 시간
  • 준비 큐에서 기다린 시간의 총합
  1. Response Time
  • 대기열에서 처음으로 CPU를 얻을 때까지 걸린 시간
  • 대기 시간은 준비 큐에서 기다린 모든 시간을 합친 것, 반응 시간은 CPU를 할당받은 최초의 순간까지 기다린 시간 한번만 측정
    -> CPU 이용률, 처리율은 극대화하고 반환 시간, 대기 시간, 반응 시간은 줄이는 것이 일반적으로 좋다.

🎈 CPU 스케줄링 알고리즘

  1. FCFS (First Come First Served) 스케줄링
    비선점형 스케줄링으로 가장 먼저 요청한 프로세스에 CPU를 할당해주는 방식
    평균 대기 시간, 응답 시간이 길어질 수 있고 반환 시간 측면에선 좋을 수 있다.
    Convoy Effect (호위 효과) 발생 가능

  2. SJF (Shortest-Job-First) 스케줄링 (SRTF라고도 불림)
    다음 CPU burst time 길이를 고려해 스케줄링 결정하는 알고리즘
    비선점형, 선점형이 따로 존재
    평균 대기 시간을 줄일 수 있지만 다음 프로세스의 CPU burst time 예측이 어렵다.
    비선점형 예시)

    선점형 예시)
    실행 중이던 프로세스보다 도착한 프로세스의 남은 시간이 짧으면 해당 프로세스로 전환

  1. Priority 스케줄링
    각 프로세스에 우선순위 넘버가 주어지고 가장 높은 우선순위의 프로세스에 CPU 할당
    선점, 비선점으로 나뉘고 SJF도 Priority 스케줄링의 일부.
    Starvation 문제 발생 가능 (낮은 우선순위 프로세스가 절대 실행되지 않는 문제)
    위 문제 해결 위해 aging 사용 가능 (시간 지날수록 Priority 높여주는 것)

  2. Round Robin 스케줄링
    각 프로세스에 동일한 CPU 할당 시간을 부여해 해당 시간 동안만 CPU 이용
    할당 시간 내 처리 못하면 다음 프로세스로 넘어가는 선점형 방식
    N개의 프로세스가 있을 때 할당 시간 q로 설정하면 어떤 프로세스도 (n-1)*q 시간 이상 대기 X
    응답 시간 빠르게 할 수 있고, q가 커지면 FCFS처럼 작동

profile
To be a DataScientist

0개의 댓글