Operating System Ch 5 : CPU Scheduling

이정빈·2023년 12월 30일
0

OS

목록 보기
5/15

5.1 Basic Concepts

어떤 프로세스가 대기하고 있을 경우, CPU는 그저 놀게된다. 그러면 낭비
cpu는 이런 프로세스를 회수해서 다른 프로세스에 할당해서 효율을 극대화시켜야한다.
즉, cpu를 바쁘게 유지하게 하는 작업이 cpu스케줄링이다.

5.1.1 CPU, I/O Burst Cycle


프로세스의 실행은 cpu실행과 i/o 대기의 사이클로 구성된다.
프로세스는 이 둘 상태를 왔다갔다한다.

처음 시작은 cpu버스트로 시작되고, 그 다음 i/o 버스트, 또 cpu버스트로 계속 번갈아가면서 마지막에는 i/o 버스트대신 시스템 콜로 종료된다.

cpu스케줄링 알고리즘을 짤때, 짧은 cpu버스트가 많은지 긴 cpu버스트가 많은지 고려해서 짜야한다.

5.1.2 CPU Scheduler

cpu가 쉬고있을때마다 cpu스케줄러가 준비 큐에 있는 프로세스 중 1개를 선택해서 cpu를 일하게 만든다.

그런데 준비큐에 어떤 프로세스를 택하는 것일까?

준비큐는 FIFO 방식이 아니며, 우선순위 큐, 트리, 연결리스트 등 다양한 방식으로 구현이 가능하다.스케줄링 알고리즘에 따라 어떤 프로세스를 택하는지가 다르다.

일단은 개념적으로 모든 준비큐에 있는 프로세스들은 실행을 기다리고 있고, 큐에 있는 레코드들은 PCB들이다.

CPU 스케줄러는 준비 큐에 있는 프로세스를 쉬고있는 cpu에게 프로세스를 할당하는 것이고, 준비 큐에 어떤 프로세스를 택하는지는 스케줄링 알고리즘에 따라 달라진다.

5.1.3 선점 및 비선점 스케줄링

cpu 스케줄링의 결정

  1. 한 프로세스가 실행상태에서 대기상태로 전환될 때
  2. 프로세스가 실행상태에서 준비 완료 상태로 전환될 때
  3. 프로세스가 대기상태에서 준비 완료 상태로 전환될 때
  4. 프로세스가 종료될 때

1,4의 경우는 실행을 위해 준비큐에서 새로운 프로세스를 선택해야함
1,4의 경우를 비선점, 협조적이라고 한다. (nonpreemptive, cooperative)

비선점 스케줄링에서는 cpu가 한 프로세스를 할당하고 있으면 종료하거나 대기할때까지 cpu는 그 프로세스를 할당하고 있다.

그러나 현재는 다 선점 스케줄링을 사용한다고 한다.

선점 스케줄링에서는 race condition이 일어날 수 있다.
어떤 일이 일어날지 예측하기 어려움

비선점형 커널은 context switch를 하기전에 프로세스가 봉쇄되기를 기다리는데, 비선점형 커널은 해당 프로세스를 선점하지 않아서 실시간 컴퓨팅에는 좋은 모델이 아님

또한, 선점형 커널에서는 race를 막기위한 mutex기법을 사용하면 race를 피할 수 있다.

인터럽트는 어느 시점에서든 발생하고, 인터럽트에 의해 영향을 받는 코드는 동시사용을 막아야한다.
한 프로세스가 사용중이면 입구를 막고, 종료하면 출입구를 해제해야한다.

5.1.4 Dispatcher


디스패처는 cpu 코어의 제어를 스케줄러가 선택한 프로세스에 주는 모듈

  1. context switch
  2. 사용자 모드로 전환
  3. 프로그램의 적절한 위치로 jump

디스패처는 최대한 빨리 수행해야하고, 하나의 프로세스를 정지하고 다른 프로세스의 실행을 시키는데 걸리는 지연을 디스패처 지연이라고한다.


자발적 context switch는 현재 사용 불가능한 자원을 요청해서 프로세스가 cpu제어를 포기한 경우

비자발적 context switch는 타임 슬라이스가 만료되거나 우선순위가 더 높은 프로세스에 의해 선점된 경우

5.2 Scheduling Criteria

어떤 스케줄링 알고리즘을 택해야 할까?

  1. cpu 이용률 : 우리는 가능한 cpu를 바쁘게 해야함. 실제 시스템에서는 cpu 이용률이 40~90퍼센트 정도

  2. 처리량 : 단위 시간당 완료된 프로세스 개수를 처리량이라고 하고, 바빠야 좋음

  3. 총처리 시간 : 프로세스의 제출시간과 완료시간의 간격을 총처리 시간, 짧아야 좋다.

  4. 대기 시간 : 대기 시간은 준비 큐에서 대기하면서 보낸 시간의 합, 최소화하는게 좋음

  5. 응답 시간 : 응답이 시작되는 데까지 걸리는 시간, 최소화하자

5.3 Scheduling Algorithms

5.3.1 선입 선처리 스케줄링 (FCFS)

cpu를 먼저 요청하는 프로세스가 cpu를 할당받는다. FIFO 큐
프로세스가 준비큐에 들어오면 이 프로세스의 PCB를 준비 큐의 끝에 연결하면 된다.

하지만 평균대기 시간은 최소가 아니다.
30,1,1 같은 프로세스 대기시간의 경우 대기시간이 길지만
1,1,30의 경우는 대기시간이 짧은 경우를 보여준다.

모든 다른 프로세스들이 하나의 긴 프로세스가 cpu를 양도하기를 기다리는 것을 호위 효과라고 한다. 이 효과는 짧은 프로세스들이 먼저 처리되도록 허용될 때보다 성능이 좋지 않다.

또한, 비선점형이라서 cpu를 계속 가지고 있는다.
대화형 시스템에서는 각 프로세스가 규칙적인 간격으로 cpu를 할당해야하는데 선입선처리 알고리즘은 좋지않다.

5.3.2 최단 작업 우선 스케줄링 (SJF)


cpu버스트 시간이 짧은 순서대로 정렬을해서 스케줄링하는 것
선입선처리 스케줄링에 비해 평균대기 시간이 줄어들었다.

최적이긴 하지만,다음 cpu버스트 길이를 알 수 없기 때문에, 다음 버스트 길이를 근사치로 예측하는 것이다.
가장 짧은 예상 cpu 버스트를 가진 프로세스를 선택하면 된다.

SJF 알고리즘은 선점, 비선점으로 나뉠 수 있다.
앞의 프로세스가 실행되는 동안, 새 프로세스가 준비 큐에 도착하면 선택이 발생한다.
새 프로세스가 현재 실행되고 있는 프로세스의 남은 시간보다도 더 짧은 cpu버스트를 가질 수 있다.
그렇게 되면 선점형은 햔재 실행하거 있는 프로세스를 선점하고, 비선점형은 현재 실행하고 있는 프로세스가 자신의 cpu버스트를 끝내도록 한다.



SJF 알고리즘은 최소 잔여 시간 우선 스케줄링이라고 불린다.

p1을 선점했다가, p2가 더 짧은것을 보고 스케줄링된다.

5.3.3 Round Robin Scheduling (RR)

라운드 로빈 스케줄링은 선입 선처리 스케줄링과 유사하지만 시스템이 프로세스들 사이를 옮겨 다닐 수 있도록 선점이 추가된다.
cpu스케줄러는 준비큐를 돌면서 한 번에 한 프로세스에 한 번의 시간할당량 동안 cpu를 할당한다.

시간이 어느정도 지나면 다음 큐로 실행하도록 인터럽트를 걸도록 타이머를 설정한 후, 프로세스를 디스패치 한다.

첫 번째 경우는 타이머보다 버스트가 짧으면 스케줄러가 다음 프로세스로 진행하면 된다.
두번째 경우는 버스트가 더 길면 인터럽트가 발생해서 다음 프로세스가 실행되고 남은 프로세스는 마지막으로 들어가게 된다.

cpu버스트가 한 번의 시간 할당량을 초과하면, 프로세스는 선점되고 준비 큐로 되돌아가므로 RR 스케줄링은 선점형이다.

RR 알고리즘은 시간 할당량의 크기에 매우 많은 영향을 받음
시간할당량이 매우 크면 선입 선처리 알고리즘과 같다.
시간할당량이 매우 작으면 context switch가 빈번하게 일어나 성능이 감소된다.



평균 총처리 시간은 시간 할당량의 크기가 증가하더라도 반드시 개선되지는 않는다.
일반적으로, 대부분의 프로세스가 단일 시간 할당량안에 다음cpu버스트를 끝낸다면, 평균 총처리 시간은 개선된다.

RR스케줄링은 시간 할당량이 너무 작지도 너무 커서도 안된다.

5.3.4 Priority Scheduling

우선순위가 가장 높은 프로세스를 할당하고, 같은 경우에는 선입선처리 순서로 스케줄된다.

cpu버스트가 클수록 우선순위가 낮다.

우선순위는 시간제한, 버스트 평균 등 다양하다.

우선순위 스케줄링은 선점형이거나 비선점형이 될 수 있다.
프로세스가 준비 큐에 도착하면, 현재 실행중인 프로세스의 우선순위를 비교하고, 우선순위가 높으면 cpu를 선점한다.
비선점형은 큐의 머리부분에 새로운 프로세스를 넣는다.

무한봉쇄, 기아 상태가 일어난다.
우선순위가 낮은 경우 무한 대기하는 경우가 발생한다.

해결방안으로는 aging이라고 한다.
점진적으로 우선순위를 높이는 것

다른 방법은 라운드 로빈과 우선순위 스케줄링을 결합하는 것이다.
우선순위가 가장 높은 프로세스를 실행하고, 우선순위가 같은 프로세스들은 라운드 로빈 스케줄링을 사용한느 것이다.


우선순위가 같은 경우 라운드 로빈을 사용

5.3.5 다단계 큐 스케줄링


우선순위마다 별도의 큐를 갖는 것이 다단계 큐 스케줄링이다.

우선순위가 가장 높은 큐에 여러 개의 프로세스가 있으면 라운드 로빈 순서로 실행된다.



포그라운드 (대화형), 백그라운드 (배치)

시간 요구 사항이 다르므로 스케줄링 요구 사항이 다를 수 있다.
프로그라운드 및 백그라운드 프로세스에 별도의 큐가 사용될 수 있고, 각 큐에는 자체 스케줄링 알고리즘이 있을 수 있다.

또한, 큐와 큐 사이에 스케줄링이 반드시 있어야하고, 일반적으로 고정 우선순의의 선점형 스케줄링으로 구현된다.

  1. 실시간 프로세스
  2. 시스템 프로세스
  3. 대화형 프로세스
  4. 배치 프로세스

우선순위는 절대적이며, 선점될 수도 있음

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

다단계 큐 스케줄링은 프로세스들이 다른 큐로 이동하지 않아서 오버헤드가 작지만 융통성이 적다.


프로세스가 큐들 사이를 이동하는 것을 허용한다.
어떤 프로세스가 cpu를 너무 많이 사용하면, 낮은 우선순위 큐로 이동된다.

  1. 큐의 개수
  2. 각 큐를 위한 스케줄링 알고리즘
  3. 한 프로세스를 높은 우선순위 큐로 올려주는 시기를 결정하는 방법
  4. 한 프로세스를 낮은 우선순위 큐로 강등시키는 시기를 결정하는 방법
  5. 프로세스에 서비스가 필요할 때 프로세스가 들어갈 큐를 결정하는 방법

5.4 Thread Scheduling

대부분 스케줄 되는 대상은 프로세스가 아니라 커널 수준 스레드이다.

5.4.1 경쟁 범위

다대일, 다대다 모델을 구현하는 시스템에서는 스레드 라이브러리는 사용자 수준 스레드를 가용한 LWP상에서 스케줄한다.
이러한 기법은 동일한 프로세스에 속한 스레드들 사이에서 cpu를 경쟁하기 때문에 프로세스경쟁 범위 (PCS)라고 한다.

cpu상에서 어느 커널 스레드를 스케줄할지 결정하기 위해 커널은 시스템 경쟁 범위 (SCS)를 사용한다.

pcs는 우선순위에 따라 행해지고, 가장 높은 우선순위를 가진 프로세스를 선택한다. 그리고 현재 실행 중인 스레드를 선점한다.

5.4.2 Pthread Scheduling

5.5 Multiple-Processor Scheduling

다중처리기는 여러개의 물리적 프로세서를 제공하는 시스템, 각 프로세서에는 하나의 단일 코어 cpu가 포함되어 있다.

5.5.1 다중 처러기 스케줄링에 대한 접근 방법

비대칭 다중 처리라는 방법은 하나의 마스터 서버가 있고 이것이 모든 스케줄링 결정과 다른 시스템의 활동을 취급하는 것이고, 다른 처리기들은 사용자 코드만을 수행한다.
간단하지만, 마스터 서버가 전체 시스템의 성능을 저하할 수 있다

대칭 다중 처리 (SMP)는 각 프로세스는 스스로 스케줄링할 수 있다.
각 프로세서의 스케줄러가 준비 큐를 검사하고 실행할 스레드를 선택하여 ㅅ스케줄링이 진행된다.

  1. 모든 스레드가 공통 준비큐
  2. 각 프로세서는 자신만의 스레드 큐를 가짐

첫번째는 race가 발생하기 쉽고, 그렇다고 모두 락을 걸어버리면 성능의 병목이 생길 수 있다.

두번째는 각 프로세서가 자신만의 큐가 있으므로 race가 없다.
하지만 균등하지 않을 수 있으므로 균형 알고리즘을 사용해서 모든 프로세서 간에 부하를 균등하게 만들어야 한다.

5.5.2 Mulitcore Processor

SMP 시스템은 다수의 물리 처리기를 제공하고, 다수의 프로세스가 병렬로 실행되게 한다. 멀티코어 프로세서를 사용하는 SMP 시스템은 각 cpu가 자신의 물리 칩을 가지는 시스템과 비교해 속도가 빠르고 적은 전력을 소모한다.


프로세서가 메모리보다 훨씬 속도가 빨라서 메모리에 접근할 때 데이터가 사용되기를 기다리는 것이 메모리 스톨이라고 한다.

캐시 미스로 인해 메모리 스톨이 발생할 수도 있다.


하나의 코어에 2개 이상의 하드웨어 스레드가 할당된다.
메모리를 기다리는 동안 하나의 스레드가 중단되면 코어가 다른 스레드로 전환할 수 있다.


칩 다중 스레딩(CMT)
4개의 코어가 있고 각 코어에는 2개의 하드웨어 스레드가 있다.
os관점에서는 8개의 cpu가 있다.

일반적으로 처리기를 다중 스레드화 하는 데에는 거친 다중 스레드와 세밀한 다중 스레딩이 있다.

거친 다중 스레딩에서는 메모리 스톨과 같은 지연시간이 긴 것이 발생하지 않으면 한 코어에서 계속 수행한다.
다른 스레드가 수행되기 전에 파이프라인이 완전히 정리되어야 하므로 스레드 간 교환은 비용이 많이 든다.

세밀한 다중 스레딩은 명령어 주기의 경계에서 좀 더 세밀한 정밀도를 가진 시점에서 스레드 교환이 일어난다. 스레드 간 교환의 비용이 적어진다.


물리적 코어의 자원은 한번에 하나의 하드웨어 스레드만 실행할 수 있다.

첫 단계가 소프트웨어 스레드를 선택할 때 결정해야 하는 스케줄링 결정을 한다. (5.3절의 스케줄링 알고리즘)
두번째 단계가 각 코어에서 실행할 하드웨어 스레드를 결정하는 방법이다.

  1. 라운드 로빈
  2. 코어당 2개의 하드웨어 관리 스레드를 가진 이중 코어 프로세서

각 하드웨어 스레드에는 긴급도가 배정되며, 스레드 교환을 촉발할 수 있는 5가지 이벤트가 있다.
이벤트 중 1개가 발생하면, 높은 긴급도를 가진 스레드를 선택하여 처리 코어에서 실행한다.

5.5.3 부하 균등화

SMP 시스템에서 처리기가 하나 이상이고, 각 처리기에 걸리는 부하는 모두 균등하게 배부하는 것이 좋다.

부화균등화는 SMP 시스템의 모든 처리기 사이에 부하가 고르게 배분되도록 시도한다.
각 처리기가 자신만의 준비 큐가 있을때만 필요한 기능
공통 큐는 한처리기가 쉬면 다른 처리기가 바로 일하기 때문에 필요없다.

push 이주는 특정 태스크가 주기적으로 각 처리기를 검사하고 불균형이면 과부하인 처리기에서 쉬고있는 처리기로 스레들를 이동

pull 이주는 쉬고 있는 처리기가 바쁜 처리기를 기다리고 있는 프로세스를 pull할때

5.5.4 Processor 선호도

스레드가 특정 프로세서에서 실행중일때 가장 최근에 접근된 데이터가 그 프로세서의 캐시를 채우게 된다.

부화균등화때문에 스레드가 다른 프로세서로 이동한다면 어떤 일이 일어날까?

새로운 프로세서의 캐시는 다시 채워져야하는데, 이것은 비용이 많이든다.
그래서 SMP는 스레드를 다른 프로세서로 이동하지 않고 같은 프로세서에서 계속 실행시키면서 warm cache를 이용하려고함>>이것이 프로세서 선호도

공통 준비 큐에서 스레드는 어느 프로세서에서 실행될 수 있기 떄문에 캐쉬를 비우고 채워줘야하는 데, 프로세서마다 자신만의 큐를 사용하면 스레드는 항상 같은 프로세서에 스케줄되므로 프로세서 선호도가 무료이다.

약한 선호도 가끔 이주함
강한 선호도 프로세스는 자신이 실행될 프로세서 집합을 명시할 수 있다.


특정 cpu에 스케줄된 스레드는 cpu가 있는 위치에 가장 가까운 메모리에 할당하면 가장 빠른 접근이 된다.

부화균등화와 프로세서 선호도가 서로 이점이 사라지게 되고 복잡해짐

5.5.5 이기종 다중 처리

어느 스레드건 모든 프로세서 코어에서 실행가능하다.
유일한 차이점이 메모리 접근 시간이 NUMA 시스템과 부하 균등화 프로세서 선호도에 따라 달라진다.

동일한 명령어 집합을 실행하지만 전력 소비를 쉬는 수준으로 조정하는 기능을 포함하여 차이가 나는 시스템을 이기종 다중 처리 HMP라고한다.

이런 아키텍처를 big.LITTLE라고 한다.
고성능 big코어가 에너지 효율적인 LITTLE코어와 결합한다.
이 둘이 결합하여 더 긴 시간동안 실행할 수 있다.

5.6 실시간 CPU Scheduling

cpu를 스케줄링할때 소프트 실시간 시스템, 하드 실시간 시스템으로 구분한다.

소프트 실시간 시스템은 중요한 실시간 프로세스가 스케줄되는 시점을 보장하지 않고 우선순위만 보장

하드 실시간 시스템은 엄격한 요구조건

5.6.1 지연시간 최소화


시스템은 보통 실시간 이벤트에 대응한다.
이벤트는 소프트웨어적일 수 있고, 하드웨어적일 수 있다.
어쨌든 시스템은 가능한 빨리 그 이벤트에 대한 응답을 해줘야한다.
이벤트 지연시간이란 이벤트가 발생해서 그에 맞는 서비스가 수행될 때까지의 시간

  1. 인터럽트 지연시간
  2. 디스패치 지연시간

인터럽트 지연시간은 cpu에 인터럽트가 발생한시점부터 처리 루틴이 시작하기까지의 시간
인터럽트 발생하면, 운영체제는 인터럽트의 종류를 결정하고, 현재 수행 중인 프로세스의 상태를 저장해야한다.

하드 실시간 시스템에서는 인터럽트 지연시간을 최소화해야하고 요구조건을 맞춰줘야 한다.

커널 데이터 구조체를 갱신하는 동안 인터럽트가 불능케 되는 시간이고 이 시간을 매우 짧게 해야 함


디스패치 지연시간은 스케줄링 디스패처가 하나의 프로세스를 블록시키고 다른 프로세스를 시작하는데 까지 걸린시간
CPU를 즉시 사용해야하는 실시간 태스크가 있다면, 이 시간을 최소화해야하고 선점형 커널을 사용하자

  1. 커널에서 동작하는 프로세스에 대한 선점
  2. 높은 우선순위의 프로세스가 필요한 자원을 낮은 우선순위 프로세스 자원이 방출

5.6.2 우선순위 기반 스케줄링

실시간 운영체제에서 가장 중요한 기능이 실시간 프로세스에 CPU가 필요할 떄 바로 응답해주는 것
선점을 이용한 우선순위 기반 알고리즘을 지원해야함

선점 및 우선순위 기반의 스케줄러는 소프트 실시간 기능에만 제공
하드 실시간 기능에는 추가적인 스케줄링 기법이 필요하다.

프로세스는 주기적이고, 주기적 프로세스의 실행 빈도에 따라 우선순위가 결정된다.
프로세스가 자신의 마감 시간을 스케줄러에게 알려야만 하고 승인 제어 알고리즘을 이용해서 마감시간 내에 못끝내는 프로세스는 실행을 허용하지 않는다.

5.6.3 Rate-Monotonic Scheduling


Rate 알고리즘은 선정 가능한 정적 우선순위 정책을 이용하여 주기 태스크들을 스케줄한다.

높은 우선순위가 선점하는 것
주기가 짧아야 높은 우선순위를 가져간다.

위사진은 스케줄러 마감시간을 지키지 못한것임

Rate 알고리즘을 사용하면, 주기가 짧은 것이 우선순위를 가진다.
이 알고리즘은 스케줄 할 수없는 프로세스의 집합에 사용하면 좋다.

5.6.4 Earliest-Deadline-First Scheduling

EDF 기법은 마감시간에 따라서 우선순위를 동적으로 부여한다.
마감시간이 빠를수록 우선순위는 높아진다.
이 기법은 프로세스가 자신의 마감시간을 시스템에 알려야 한다.

EDF알고리즘은 프로세스들이 주기적일 필요도 없고, CPU 할당 시간도 상수 값으로 정해질 필요가 없다.

5.6.5 일정 비율의 몫 스케줄링

일정 비율의 몫 스케줄러는 모든 응용들에게 T개의 시간 몫을 할당하여 동작한다. 한 개의 응용이 N개의 시간 몫을 할당받으면 모든 프로세스는 N/T중 시간을 할당받는다.

5.6.6 POSIX 실시간 스케줄링

5.7 Operating System Examples

5.8 Algorithm Evaluation


어떤 기준에 대해 알고리즘을 선택하는지가 결정된다.

5.8.1 Deterministic Modeling

5.9 Summary

cpu 스케줄링은 준비 큐에서 대기 프로세스를 선택하고 cpu를 할당하는 작업이다. 디스패처에 의해 선택된 프로세스에 cpu가 할당된다.

스케줄링 알고리즘은 선점적(cpu를 프로세스로부터 뺏을 수 있는 경우), 비선점적(프로세스가 자발적으로 cpu제어를 포기하는 경우)

스케줄링 알고리즘은 cpu이용률, 처리량, 총처리 시간, 대기시간, 응답시간

선입 선처리 (FCFS) 스케줄링은 가장 간단한 스케줄링 알고리즘이지만 짧은 프로세스가 매우 긴 프로세스를 기다리게 할 수 있다.

SJF 스케줄링은 최적이며 평균대기 시간이 가장 짧다.그러나 다음 cpu버스트 길이를 예측하기 어렵다.

라운드 로빈 RR 스케줄링은 cpu를 시간 할당량 동안 프로세스에 할당한다.
cpu를 계속 사용하고 있다면 다음 프로세스가 선점된다.

우선순위 스케줄링은 각 프로세스에 우선순위를 배정하고 cpu는 우선순위가 가장 높은 프로세스에 할당된다. 우선순위가 동일한 프로세스는 FCFS, RR 스케줄링을 사용하여 스케줄 할 수 있다.

다단계 큐 스케줄링은 프로세스를 우선순위에 따라 여러 개의 큐로 분할하고 스케줄러는 우선순위가 가장 높은 큐에서 프로세스를 실행한다. 큐마다 다른 스케줄링 알고리즘이 사용될 수 있다.

다단계 피드백 큐는 프로세스가 다른 큐 간에 이주될 수 있다.

다중 코어 프로세서는 하나 이상의 cpu를 동일한 물리적 칩에 배치하며 각 cpu에는 둘 이상의 하드웨어 스레드가 있을 수 있다.

다중 코어 시스템의 부하 균등화는 cpu 코어 간의 부하를 균등하게 만들지만 부하균등화를 위해 코어 간에 스레드를 이주하면서 캐시 내용이 뮤효가 되어 메모리 액세스 시간이 늘어날 수 있다.

소프트 실시간 스케줄링은 비실시간 작업보다 실시간 작업에 우선순위를둔다. 하드 실시간 스케줄링은 실시간 작업에 대한 타이밍 보장을 제공한다.

Rate-monotonic 실시간 스케줄링은 선점과 함께 정적 우선순위 정책을 사용하여 주기적 작업을 스케줄 한다.

EDF 스케줄링은 마감시한에 따라 우선순위를 지정한다.

비례 공유 스케줄은 모든 응용프로그램이 몫 T를 공유한다.

0개의 댓글