CPU 스케줄링 (1)

.·2023년 11월 28일

목차

  • CPU 스케줄링이란 ?
  • 우선순위 (Priority)
  • 스케줄링큐
  • 선점형과 비선점형 스케줄링

CPU 스케줄링이란 ?

  • 운영체제가 프로세스에게 공정하고 합리적으로 CPU 자원을 배분하는 것
  • CPU를 사용하려고 하는 프로세스들 사이의 우선순위를 관리하는 작업 - 자원을 어떤 프로세스에 얼마나 할당하는지 정책을 만드는 것
  • 프로세스들에게 자원을 최대한 공평하게 배분하며 처리율과 CPU 이용률을 증가시키고, 오버헤드, 응답시간(Response time / Turnaround time)
  • 메모리에 여러 개의 프로세스를 올려놓고(다중 프로그래밍), CPU의 가동시간을 적절히 나누어(시분할) 각각의 프로세스에게 분배하여 실행

프로세스가 생성되어 실행될 때 필요한 시스템의 여러자원을 해당 프로세스에게 할당하는 작업을 뜻 하며, 대기 시간은 최소화 하고 최대한 공평하게 처리하는 것을 목적으로합니다.
다중프로그래밍 시스템과 시분할 시스템을 만족시키기 위해서는 스케줄링 기법이 절대적으로 필요합니다.

가장 공정한 CPU 스케줄링 ?
CPU를 사용하고 싶어하는 프로세스들이 차레로 돌아가며 ? <-- 비효율적
빨리 처리해야하는 프로세스가 있기 때문 (=프로세스마다 우선순위가 다르기 때문)


우선순위 (Priority)

입출력 작업이 많은 프로세스 (IO Bound)의 우선순위는
CPU 작업이 많은 프로세스 (CPU Bound)의 우선순위보다 높다

프로세스 우선순위는 PCB 에 저장이 된다.

(우선순위 확인 방법)

프로세스의 우선 순위를 결정할 때, 모든 PCB 를 검사하면서 우선순위를 결정하는 것은 굉장히 비효율적일 수 있다.
이런 비효율적인 것을 해결하고자 OS 는 스케줄링큐를 사용한다.


스케줄링큐

(같은 queue 내에서도 우선순위가 높으면 앞쪽으로 옮겨짐)
0. Job queue : 시스템 안에 존재하는 프로세스들
1. 준비큐 (Ready queue ) : cpu 를 이용하기 위해 기다리는 줄
2. 대기큐 (Device queue) : 입출력 장치를 이용하기 위해 기다리는 줄

전체적인 스케줄링 흐름은
cpu 를 번갈아가면서 사용하기 때문에 프로세스들은 준비 큐에 기다리면서 cpu 할당을 기다리게 된다. 준비상태에 접어든 프로세스 중 CPU 를 할당 받을 차례가 되면 dispatch 가 되서 실행상태가 되고 실행 시간이 완료가 되면 (타이머 인터럽트 전에 프로세스가 종료되면 종료 상태로됨) 다시 준비큐에 삽입이 된다. 그리고 다음 준비큐에 있는 프로세스가 다시 실행상태로 변환된다. 만약 실행상태에 있다가 입출력장치 요청이 필요하면 대기큐에서 대기 상태로 있다가 입출력완료 인터럽트를 받으면 준비큐로 다시 들어간다.

조금 더 자세히 알아보면 대기큐는 각각의 입출력 장치별로 여러개의 큐가 존재한다.
즉 같은 장치를 요구하는 프로세스들은 같은 큐에서 대기를 할 수 있다.

참고) 스케줄링큐가 추가된 프로세스 상태 다이어그램


선점형과 비선점형 스케줄링

  • 선점형 스케줄링 (Preemptive Scheduling)
  • 비선점형 스케줄링 (Non-preemptive Scheduling)

선점형 스케줄링

  • 하나의 프로세스가 CPU를 차지하고 있을 때, 우선순위가 높은 다른 프로세스가 현재 프로세스를 중단시키고 CPU를 점유하는 스케줄링 방식
  • 비교적 응답이 빠르다는 장점이 있지만, 처리 시간을 예측하기 힘들고 높은 우선순위 프로세스들이 계속 들어오는 경우 오버헤드를 초래
  • 실시간 응답환경, Deadline 응답환경 등 우선순위가 높은 프로세스를 빠르게 처리해야 할 경우 등에 유용

즉 정해진 시간만큼 돌아가면서 CPU를 쓸 수 있음

  • 어느 한 프로세스의 자원 독점을 막고 프로세스들에 골고루 자원을 배분할 수 있다.
  • 그만큼 context swiching 과정에서 오버헤드가 발생할 수 있다.

비선점형 스케줄링

  • 한 프로세스가 CPU를 할당받으면 작업 종료 후 CPU 반환 시까지 다른 프로세스는 PCU 점유가 불가능한 스케줄링 방식
  • 모든 프로세스에 대한 요구를 공정하게 처리할 수 있지만, 짧은 작업을 수행하는 프로세스가 긴 작업 종료 시까지 대기해야할 수도 있다. (콘베이 현상)
  • 처리시간 편차가 적은 특정 프로세스 환경에 용이
  • 선점형 스케줄링에 비해 context switcing 에서 발생하는 오버헤드가 적다.
  • 모든 프로세스가 골고루 자원을 이용하기 어렵다

Reference

  1. https://www.youtube.com/watch?v=CdrozYcVccE&list=RDCMUC31Gc42xzclOOi5Gp1xIpZw&start_radio=1&rv=CdrozYcVccE&t=246
  2. https://velog.io/@ckstn0777/OS-%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81
  3. https://eun-jeong.tistory.com/17
profile
.

0개의 댓글