쉽게 배우는 OS Chapter04 CPU스케줄링

CPU 스케줄링과 스레드? 해당 파트에선 너무 프로세스 관점에서만 이야기하는거 같은데…

CPU 스케줄링

4.1 스케줄링 개요

CPU 스케줄러는 여러 프로세스의 상황을 고려하여 CPU의 자원을 어떻게 배정할지 결정한다.

4.1.2 스케줄링의 단계

스케줄

4.1.2.1 고수준 스케줄링

(=장기스케줄링, 작업스케줄링) 시스템 내의 전체 작업 수를 조절하는 스케줄링(작업 : 운영체제에서 다루는 가장 큰 일의 단위. 1개 이상의 프로세스로 구성). 멀티프로그래밍 정도를 나타낸다.

4.1.2.2 저수준 스케줄링

CPU가 어떤 프로세스를 실행하고, 언제 대기상태로 보낼지 정하는 스케줄링. 해당 챕터에서 다룰 스케줄링은 저수순 스케줄링이다.

4.1.2.3 중간수준 스케줄링

고수준 스캐줄링을 통해 적절한 프로세스 개수를 조절했다고 하더라도, 실행 중간에 과부하가 발생할 수 있다. 중간수준 스케줄러는 이미 활성화된 프로세스 중 일부를 보류상태로 보내 시스템의 작업수를 조절한다.

4.1.3 스케줄링의 목적

4.2 스케줄링시 고려사항

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

선점형 스케줄러를 주로 사용하지만, 비선점 방식으로 작동해야하는 프로세스가 있을 수 있다(업데이트, 백업 등). 이런 프로세스의 경우 중요도를 매우 낮게 설정하여 선점형 프로세스에 영향을 덜 치미게 한다.

4.2.2 프로세스 우선순위

대부분은 프로세스마다 중요도를 매긴다. 우선순위가 높은 프로세스는 더 빨리, 자주 실행되어야하며, 이렇게 우선순위가 높은 프로세스들은 커널프로세스, 전면 프로세스, 대화형 프로세스, 입출력 집중 프로세스(동영상재생) 등이 있다.

4.3 다중 큐

4.3.1 준비상태 다중 큐

우선순위가 같은 PCB끼리 큐 형태로 관리가 된다. 이러한 우선순위에는 두가지 방식이 있다.

4.4 스케줄링 알고리즘

스케줄링 알고리즘은 특정 큐에 독자적으로 적용되는 동작방식이고, 큐를 나누는 기준은 우선순위.

우선순위에 따라 준비큐를 여러개 사용하는 방식. 프로세스는 실행시 부여받은 우선순위에 따라 각 큐에 삽입되고, 우선순위는 변하지 않는다. 각 큐는 주로 라운트 로빈방식으로 동작하며 타임슬라이스는 큐마다 다르게 적용 가능하다.

즉, 각 큐마다 프로세스 우선순위/작업형태를 고려하여 스케줄링 알고리즘을 적용 가능하다. 예를 들면 전면프로세스들의 준비큐는 응답성 향상을 위해 타임슬라이스를 작게 하고, 후면프로세스들의 준비큐는 상호작용이 없으므로 FCFS방식을 사용한다.

하지만 더 높은 우선순위의 큐의 프로세스들이 전부 끝나기(exit) 전까지는 낮은 우선순위 프로세스는 할당되지 못하는 문제가 있다.

4.4.9 다단계 피드백 큐 스케줄링

MulitlevelFeedbackQueue 다단계 피드백 큐 스케줄링은 CPU를 사용 후 timeout된 프로세스는 한단계 낮은 우선순위의 큐 끝으로 이동한다. 또한 각 큐(우선순위)마다 타임슬라이스가 달라서, CPU를 얻기 힘든 프로세스일수록 점유 시간이 늘어난다. 이때 가장 낮은 우선순위 큐는 FCFS방식으로 동작한다. 오늘날 가장 일반적으로 사용하는 스케줄링 방식이며, 변동 우선순위 알고리즘의 전형적인 예이다.

심화학습

인터럽트와 이중모드

dualmode

  1. 사용자가 직접 시스템 호출 인터페이스를 사용하여 시스템 자원 사용(자발적). 사용이 어렵고 기능이 제한적이다.
  2. 운영체제가 제공하는 API를 통해 시스템 자원 사용(자발적). API가 준비한 함수들을 이용해 시스템 자원에 접근 가능하다.
  3. 인터럽트가 발생하면 커널 프로세스레 직접적으로 커널모드에 접근할수 있다. 하지만 인터럽트는 주로 발생하는 것이고, 발생시키더라도 핸들러를 통해 정해진대로 대응되므로 비자발적이다.