Fascination
article thumbnail

Chapter 04. CPU 스케줄링

누워서 보는 운영체제 이야기 - 김주균 교수님


  • 현재 실행 중인 프로세스로부터 다른 프로세스로 CPU를 넘겨줘야 할 때, 기다리고 있는 여러 프로세스 중에 누구를 선택해야 할지에 대한 방식이나 기준이 있어야 하는데 이때 필요한 것이 스케줄링 기법임
  • 여러 프로세스들이 번갈아 사용해야 하는 자원이 있을 경우, 주어진 시점에서 어떤 프로세스가 이 자원을 사용할 것인가를 결정하는 것을 스케줄링(Scheduling)이라 하며 그 자원이 CPU일 경우 CPU 스케줄링이 되는 것

 

 

# 4.1 스케줄링(Scheduling)의 단계

▶ 스케줄링 시점을 기준으로 구분

  • 장기(Long-term), 중기(Medium-term), 단기(Short-term) 스케줄링의 세 가지로 나눔

스케줄링과 프로세스 상태

▶ 장기 스케줄링

  • 어느 작업을 커널에 등록시켜 프로세스로 만들어 줄 것인가를 결정하는 것
  • 작업 스케줄링(Job Scheduling)이라고도 함
  • 일괄처리 시스템인 경우, 일괄처리 큐에서 대기하도록 한 후, 장기 스케줄러에 의해 프로세스가 되도록 하는 부분
  • 시분할 시스템의 경우는 사용자의 접속 시도를 허용할지 말지를 결정하는 단계
  • 이 단계는 요청된 일을 프로세스로 만들어 시스템에 추가하느냐를 결정하는 역할

▶ 중기 스케줄링

  • 보류 상태의 프로세스들 중에서 어느 프로세스에게 메모리를 할당해줄 것인가를 결정

▶ 단기 스케줄링

  • 준비 상태에 있는 프로세스들 중에서 어느 프로세스에게 CPU를 할당할지를 결정하는 것
  • 일반적으로 부르는 프로세스 스케줄링(CPU 스케줄링)이 대부분 단기 스케줄링임

 

 

# 4.2 스케줄링의 목적과 기준

▶ CPU를 할당 받을 프로세스를 잘 골라 실행시켜줌으로써 전체적으로 시스템의 성능을 높이자는 것이 스케줄링의 목적

▶ 스케줄링 성능 평가 관점

  1. 사용자 관점
  2. 시스템 관점
  3. 기타 사항

▶ 사용자 관점

  • 응답 시간(Response Time): 대화형 시스템에서, 프로세스의 요청에 대해 시스템이 최초로 출력을 내주기 시작할 때까지 걸리는 시간으로 보통 프로세스가 들어와서 끝날 때까지 걸리는 시간을 의미
  • 반환 시간(Turn-around Time): 일괄 처리의 경우, 요청으로부터 결과를 돌려받는 데까지 걸린 시간 → Batch system
  • 예측 가능성(Predictability): 요청한 일이 얼마 후에 완료 될 것이라는 예측이 가능한가?

▶ 시스템 관점

  • CPU가 얼마나 잘 활용 됐는가를 나타낼 수 있는 처리량(Throughput)과 활용도(Utilization)
  • 처리량: 단위 시간에 처리되어진 프로세스의 개수
  • 활용도: 주어진 시간 동안 CPU(특정 자원)가 실제로 가동된 시간의 비율

▶ 기타 사항

  • 공평성(Fairness): CPU 사용 시간을 공평하게 나누어 주었는지 여부
  • 특정 프로세스가 장시간 CPU를 받지 못하는 경우는 최대한 피하도록 해야 함
  • 시스템에 있는 여러 자원들을 가급적 균형 있게 사용하도록 해야 함

▶ 스케줄링 정책을 만들 때 고려해야 할 기준들

  • 연산 위주(CPU-bound) 프로세스와 입출력 위주(I/O-bound) 프로세스 중, 어떤 종류의 프로세스를 더 우대할지를 고려
  • 시스템이 사용될 환경에 따라 응답 시간을 우선으로 할지, 처리량을 우선으로 할지 고려
  • 특정 프로세스에게 우선적으로 빠른 응답 시간을 보장해야 하는 경우가 있다면 이를 가능케 하는 기능 제공
  • 프로세스의 크고 작음(여기서 크기는 완료 때까지 요구되는 CPU 실행 시간)에 따라 어떤 것을 우선적으로 처리할 지의 기준을 가지고 있어야 함

 

 

# 4.3 스케줄링 기법들

▶ 스케줄링 가동되어야 할 시점들

  1. 프로세스가 실행 상태에서 대기 상태로 전환될 때, 대표적인 예가 입출력 요청 시
  2. 프로세스가 실행 상태에서 준비 상태로 전환될 때. 시간 종료와 같은 인터럽트 발생 시
  3. 프로세스가 대기 상태에서 준비 상태로 전환될 때. 예를 들어, 입출력의 종료 시
  4. 프로세스가 수행을 마치고 종료될 때

▶ 스케줄링 기법 분류

  • 비선점(Non-preemptive) 스케줄링: 한 프로세스가 CPU를 할당받았을 때 CPU를 스스로 반납할 때까지 계속 사용하도록 허용하는 방법 (위에서 1번과 4번이 해당됨)
  • 선점(Preemptive) 스케줄링: CPU를 할당받아 실행 중인 프로세스로부터 CPU를 선점하여(빼앗아) 다른 프로세스에게 할당할 수 있는 방식 (위에서 2번과 3번 + 1,2번이 해당됨)

 

1) FCFS(First Come First Service) 스케줄링

  • FIFO(First In First Out) 스케줄링이라고도 부름
  • 준비 큐에 먼저 도착한 프로세스에게 먼저 CPU 할당
  • CPU를 할당받은 프로세스는 스스로 CPU를 반납(ex. 종료 또는 입출력)할 때까지 CPU를 독점하여 사용하는 비선점 방식

FCFS 스케줄링

  • 프로세스가 CPU를 독점하여 사용하기 때문에 아주 긴 프로세스가 실행될 경우, 뒤에 있는 프로세스들은 오래 기다려야 하므로 대화식 시스템에 적합하지 않으며, 평균 응답 시간이 길어짐
  • 준비 상태 프로세스들의 개수와 크기를 짐작할 수 있다면 각각의 프로세스들이 언제 실행될 수 있을지를 예측 가능
  • 도착 순서만이 실행 순서를 결정짓는다는 관점에서 공평하다고 말할 수 있음
  • 만약 프로세스들이 거의 동시에 p1, p2, p3, p4의 순서로 도착했다고 가정

간트(Gantt) 차트 예시 1

시간이 끝나야 output이 나오기 때문에 이 경우에는 평균 응답 시간(average response time)보다는

평균 완료 시간(average completion time)이라고 보는 것이 더 정확

* 평균 응답 시간: 각 사용자들이 느끼는 "시스템이 나에게 얼마나 빨리 응답해서 나의 결과를 내주는가"를 느낄 수 있는 척도
* 평균 대기 시간: average waiting time으로 내가 얼마큼 기다리니까 그때부터 서비스가 시작되더라
* 평균 응답 시간 & 평균 대기 시간 → 사용자가 느끼는 시스템 반응 속도를 판단하는 기준
  • 만약 프로세스들이 p2, p3, p4, p1의 순서로 거의 동시에 도착했다면

간트 차트 예시 2

완료 시간이 짧은 프로세스들이 먼저 처리되면서 대기 시간이 줄어듦

 

2) SPN(Shortest Process Next) 스케줄링

  • SJF(Shortest Job First) 스케줄링이라고도 부름
  • 준비 큐에서 기다리고 있는 프로세스 중에서 가장 짧은 것을 먼저 실행시켜 주는 비선점 방식
  • 평균 응답 시간 최소화 가능
  • 예측 가능성은 떨어짐
  • 단점 1. 실행 시간이 긴 프로세스가 CPU를 할당받지 못하고 계속해서 대기하는 무한 대기 현상이 발생 가능 → 에이징(aging) 기법으로 해결
  • 에이징(aging): 기다린 시간만큼 우선순위를 높여 실행 가능성을 높여주는 것
  • 단점 2. 각 프로세스들의 크기를 실행 전에는 정확히 알 수 없음에도 불구하고 그 크기를 가지고 스케줄을 해야 한다는 것 → 지수 평균(Exponential Aver-aging) 방법으로 해결
  • 지수 평균(Exponential Aver-aging): 비슷한 환경에서 반복적으로 실행되는 프로세스들에 대해서 적용. 이전에 실행되었을 때의 크기와 그때의 추정 크기로 지금 실행될 크기를 짐작하는 것 (설명 추가하기)

average waiting time = (0 + 11.5 + 9) / 3

대기 시간은 시작 시간 - 도착 시간으로 구할 수 있음

+) Future-knowledge 스케줄링: 가까운 미래(Future)를 알 수 있다면, 처음에 CPU를 쉬게 하는 것이 더 우수한 결과를 가질 수 있는 기법으로 SPN을 발전시킨 것

위의 예시에서 가까운 미래에 도착할 프로세스의 정보를 알기 위해 CPU는 아무 일을 하지 않고 1초를 기다리면,

5와 2의 크기를 가진 프로세스를 포함해 3개(p1, p2, p3)의 프로세스가 모두 도착하는 것을 알 수 있음

처음에 p1으로 CPU를 바로 할당하는 대신 1초 기다렸다가 SPN을 적용하면 평균 응답 시간은 다음과 같이 줄어들게 됨

ART(average response time): (18 + 7.5 + 2) / 3

 

3) SRT(Shortest Remaining Time) 스케줄링

  • SPN을 선점 방식으로 운영하는 것으로 이해하면 됨
  • 준비 큐에서 완료까지 남은 CPU 요구량이 가장 짧은 것을 먼저 실행시켜 주는 방식
  • 실행 도중 남은 시간이 더 적은 프로세스가 준비 큐에 들어올 경우, 현재 실행 중인 것을 중단하고 새 프로세스에게 CPU를 할당하는 선점 방식
  • SPN보다 더 많은 문맥 교환이 요구되어 실제로는 평균 응답 시간이 더 길어질 것 → SRT 스케줄링을 위한 임계값(Threshold Value)을 정해 두고 두 프로세스 사이의 남은 시간 차이가 임계값을 넘지 않을 경우에는 선점되지 않도록 하면 됨

ART(average response time) = (17 + 7 + 2) / 3 

AWT(average waiting time) = (7 + 2 + 0) / 3

 

4) HRRN(Hightest Response Ratio Next) 스케줄링

  • SPN과 SRT 방식의 약점인 수행 시간이 긴 프로세스의 무한 대기 현상을 방지하기 위한 기법
  • 준비 큐에 있는 프로세스들 중에서 응답률(Response Ratio)이 가장 높은 프로세스에게 높은 우선순위를 주며 비선점 방식
  • 큰 프로세스일수록 우선순위가 낮으므로 평균 응답 시간의 단축을 꾀하고 있음
  • 실행되지 못하고 기다리는 동안 대기 시간은 계속 증가할 것이므로 무조건 뒤로 밀리는 것을 방지할 수 있음

Response Ratio

 

5) 라운드 로빈(Round-Robin) 스케줄링

  • FCFS 스케줄링을 기반으로 하여 CPU를 할당하되, 각 프로세스는 한 번에 쓸 수 있는 CPU 시간 크기 즉, 시간 할당량(Time Quantum)이 지나면 시간 종료 인터럽트에 의해 CPU를 뺏기게 되는 선점 방식 기본적인 라운드 로빈은 위 그림에서 입출력 완료 큐가 없음. 즉, I/O 발생 후 일이 완료되면 다시 준비 큐의 맨 뒤로 들어가게 됨

  • 기본적인 라운드 로빈은 위 그림처럼 입출력 완료 큐가 없음
  • 예를 들어 시간 할당량이 10ms이고 도착시간은 모두 0일 때

  • FCFS에서 단점인 한 프로세스가 CPU를 독점하는 문제를 방지할 수 있음
  • 문맥 교환의 오버헤드가 많음
  • 이런 오버헤드에도 불구하고 대화식 시스템이나 시분할 시스템에 적합한 방식
  • 시간 할당량에 따라 시간 할당량이 아주 크면 FCFS 방식과 같아지고, 시간 할당량이 아주 작으면 문맥 교환의 오버헤드가 커지게 됨
  • 일반적으로 시간 할당량의 크기는 10~100 ms 정도이나 기술의 발전으로 얼마든지 변할 수 있음

 

6) 가상(Virtual) 라운드 로빈 스케줄링

  • 라운드 로빈은 연산 위주의 프로세스가 입출력 위주의 프로세스보다 CPU 사용에 있어 더 우대받고 있음
  • 이를 보완하기 위해, 아래 그림처럼 입출력을 마친 프로세스가 들어가는 준비 큐를 따로 두고, 이 준비 큐의 우선순위를 높게 함
  • 입출력 완료 큐의 프로세스의 CPU 할당량은 입출력 때문에 사용하지 못한 남은 시간 할당량으로 함

가상 라운드 로빈 스케줄링

 

+) 우선 순위 스케줄링

  • 프로세스에 주어진 우선순위에 따라 스케줄링
  • 대부분 선점형
  • 정적(Static) 우선순위: 프로세스가 생성될 때 부여된 우선순위가 완료 때까지 변하지 않음
  • 동적(Dynamic) 우선 순위: 시스템에 있는 동안 조정되는 값

 

7) 다단계 큐(Multi-level Queue) 스케줄링

  • 정적 우선순위를 사용하는 스케줄링을 구현할 때 가장 적합한 자료 구조
  • 같은 우선 순위 값을 가지는 프로세스들을 위해 큐가 필요함과 동시에 서로 다른 우선순위의 프로세스들을 구별하고 관리하기 위해 우선순위의 개수만큼 큐가 필요하게 되는 것
  • 프로세스들은 자신의 우선순위 값에 해당하는 큐에 들어가게 되며, 우선순위가 낮은 하위 단계 큐의 작업은 실행 중이더라도 상위 단계 큐에 프로세스가 도착하면 CPU를 뺏기는 선점 방식
  • 정적 우선순위이므로 큐들 간에 프로세스 이동이 불가능함

https://hyuntaekhong.github.io/blog/OperatingSystem03/다단계 큐 스케줄링

 

8) 다단계 피드백 큐(Multi-level Feedback Queue, MFQ) 스케줄링

  • 프로세스들의 CPU 요구량을 몰라도 짧은 프로세스들에게 유리하면서 입출력 프로세스를 우대할 수 있는 스케줄링은 없을까에 대한 해답
  • 완료까지 남은 시간은 몰라도 지금까지 실행된 시간을 잘 활용하면 SPN이나 SRT와 비슷한 효과 → 짧은 프로세스에게 유리하도록 해 줄 수 있으며, 입출력 프로세스를 우대함으로써 CPU를 포함한 전체 자원들의 활용도를 높여 시스템의 성능을 높일 수 있는 기법
  • 동적 우선순위를 기반으로 하는 선점 방식으로 운영
  • 여러 단계(우선순위 개수만큼)의 큐가 있으며, 각 단계마다 서로 다른 CPU 시간 할당량을 가짐
  • 우선순위가 높은 단계의 큐일수록 시간 할당량은 작도록 함
  • 새로운 프로세스는 최상위 단계의 준비 큐에 들어간 후 FCFS의 순서로 CPU를 할당받아 실행되다가 그 큐의 시간 할당량이 끝나면 한 단계 아래의 준비 큐에 들어감으로써 결과적으로 우선순위가 한 단계 낮아지게 됨(Dynamic)
  • 각 단계에서도 그 단계 큐의 시간 할당량을 다 사용할 때까지 계속 실행된다면 다음 단계의 큐로 들어가게 되며, 마지막 단계에서는 더 내려갈 단계가 없으므로 라운드 로빈 방식으로 실행될 것임. 어느 단계든 시간 할당량이 끝나기 전에 입출력(또는 사건 대기 등)으로 CPU를 내놓게 되면 다시 준비 상태가 되었을 때 한 단계 높은 큐에 들어가도록 함으로써 우선순위를 높여줌

다단계 피드백 스케줄링

  • 중간 단계의 맨 앞에 있는 프로세스는 상위 단계의 큐들이 모두 비어 있는 경우에만 CPU를 받을 수 있고, 입출력이 발생하지 않는 한 할당된 시간을 다 사용할 수 있음
  • 프로세스의 성격(Behavior)에 맞도록 우선순위를 조정해 줌으로써 적응성이 있는(Adaptive) 스케줄링이 가능
Q. 어떤 프로세스가 전반부는 연산 위주로 진행되다가 후반부에 입출력 위주로 성격이 바뀌는 경우 어떻게 큐의 단계를 이동하는가?
A. 우선순위가 낮아지다가 성격이 바뀌는 시점에서 우선 순위가 높아짐
  • MFQ 기법은 여러 변형된 모양이 존재 - 각 단계에서 시간 할당량을 다 쓸 경우 그 단계의 큐에서 몇 번의 순환 후 다음 단계로 떨어뜨리거나, 입출력의 완료 시 단계의 상승 폭을 더 크게 주는 것 등
  • 현재 사용되는 스케줄링 알고리즘의 base가 됨

 

9) Fair-share 스케줄링

  • 프로세스들의 특성이나 중요도에 따라 몇 개의 그룹으로 나누고, 각각의 그룹에 (서로 다르게) 할애된 일정량의 CPU 시간은 그 그룹에만 영향을 미치도록 하는 스케줄링
  • 그룹별로 일정량의 CPU 시간을 할애할 때, 특정 그룹에 속한 프로세스의 과도한 CPU 사용은 그 그룹 내의 다른 프로세스들에게만 불이익을 줄 뿐, 다른 그룹으로까지 파급되지 않도록 하겠다는 것

  • ex) 전체 프로세스가 A부터 F까지 여섯 개가 있고, A와 B를 1그룹, C와 D를 2그룹, E와 F를 3그룹으로 나눈 다음, 1 그룹에는 CPU 시간의 50%를, 그리고 나머지 그룹은 각각 25%를 할애하고 싶음. 시분할을 기본으로 ACBEADBF의 순서대로 스케줄을 할 경우, 1 그룹은 CPU 시간의 50%를, 그리고 나머지 그룹은 각각 25%를 사용하게 될 것이므로 의도대로 됨을 알 수 있음. 만약 A에게 더 많은 CPU 시간을 주어야 할 경우에는 ACAEADBF와 같은 예의 순서로 스케줄을 함으로써, A가 B보다 더 사용한 CPU 시간은 B의 CPU 시간 축소를 초래하되 타 그룹의 프로세스들은 영향을 받지 않게 하는 것

 

 

# 4.4 실시간(Realtime) 스케줄링

▶ 실시간(Realtime) 시스템

  • 실행될 모든 프로세스들이 정해진 시간 내에 완료되어야 하는 시스템
  • 경성 실시간(Hard Realtime) 시스템과 연성 실시간(Soft Realtime) 시스템
  • 경성 실시간 시스템: 작업이 마감시한(Deadline) 내에 완료되지 않으면(시스템이 중지되는 등의) 치명적인 결과를 초래하는 시스템. 일반적으로 얘기하는 Realtime 시스템은 경성 실시간 시스템임
  • 연성 실시간 시스템: 작업이 마감시한 내에 종료되지 않으면 데이터의 손실 등 피해가 발생하지만 시스템은 계속해서 운영 가능한 시스템. 즉, 마감시한을 넘겨버리면 완료의 가치가 감소함

실시간 시스템에서의 스케줄링

  • 모든 프로세스들이 정해진 마감시한 내에 완료되도록 해야 하는 것이 관건
  • 정적과 동적인 방법으로 나눔
  • 정적인 방법: 프로세스들의 특징과 개수를 알 수 있는 경우에 유용
  • 동적인 방법: 프로세스의 생성 시간이나 특성을 알 수 없는 경우에 사용

1) RM (Rate Monotonic) 알고리즘

  • 정적 스케줄링 방식
  • 크기와 개수가 알려진 프로세스들이 각자 주기적으로 발생되는 환경에서 사용
  • 프로세스들은 서로 독립적이고 주기적으로 수행되는 환경에서 각 프로세스의 마감시한은 각자의 주기와 같다고 가정하고 주기가 짧을수록 높은 우선순위를 받게 됨
  • 낮은 우선순위의 프로세스가 더 높은 우선순위의 프로세스가 도착할 경우 CPU를 뺏기게 되는 선점 방식
  • n개로 구성된 프로세스 집합이 있을 때, 이 프로세스들에 의한 CPU 사용률(U)은

프로세스에 의한 CPU 사용률(U)

P: 주기, D: 마감 시한(D≤P), C는 크기 즉, 수행 시간(C≤D) 

C / P = 완료되는 시간 / 생성되는 주기

  • 위 부등식이 성립하면 n개의 프로세스를 RM 방식으로 스케줄링 했을 때 모든 프로세스의 마감 시간을 맞출 수 있음
  • n(2^1/2-1)≤1 사이는 실행해봐야 마감 시간을 맞출 수 있는지 아닌지 알 수 있음
  • 1을 넘게 되면 CPU 능력을 넘게 되는 것이므로 CPU의 성능을 높여야 함
  • 단점: 스케줄링 비용이 적게 드는 대신, 새로운 프로세스가 추가되는 환경에 바로 적응하지 못하고 이 프로세스를 추가하여 전체 스케줄링을 다시 해야 함

RM 스케줄링

(a): 0인 시점에 T1과 T2가 동시에 발생하지만 T1에게 먼저 CPU를 주어 주어진 크기인 2초 동안 실행 후 T2를 1초 실행하면 T1이 생성되므로 다시 CPU를 뺏기고 2초 후에 다시 T2의 남은 일을 1초 동안 하면 6초까지 T1과 T2는 모두 마감시한을 맞출 수 있음

→ 2/3 + 2/6 = 1 (CPU를 100% 활용한 것)

(b): 0인 시점에 T1과 T2가 동시에 발생하지만 T2에게 먼저 CPU를 주어 주어진 크기인 2초 동안 실행 후 T1을 실행하면 1초 뒤에 T1이 하나 더 발생하면서 앞의 일을 완료하지 못했는데 CPU를 뺏기게 됨(T1의 주기가 3이기 때문에 마감시한을 지키지 못한 것)

 

2) EDF (Earlist Deadline First) 알고리즘

  • 프로세스의 마감시한이 가까울수록 우선순위를 높게 부여하는 선점 방식의 동적 스케줄링
  • 동적이란 새로운 프로세스가 도착할 때 바로 대응할 수 있다는 것을 의미
  • 우선순위에 의해 실행 중 CPU를 뺏길 수 있으며, 한 프로세스의 실행이 완료될 경우에는 마감 시한이 가장 가까운 것을 찾아 스케줄함
  • 모든 프로세스가 주기적일 필요는 없으며 주기가 있을 경우에는 마감시한을 주기로, 그렇지 않을 경우는 마감시한이 알려져야 함
  • 모든 프로세스가 주기적일 때, 아래 식이 성립하면 EDF 기법으로 스케줄링하면 모든 프로세스의 마감 시간을 지킬 수 있음

  • RM을 적용할 수 있는 case는 EDF를 적용할 수 있으며 EDF를 적용하면 스케줄링 가능성이 커짐
  • EDF 기법은 새로운 프로세스의 동적인 수용이 허용되나, 그럴 때마다 가능한 스케줄을 찾기 위한 계산을 해야 하는 부담 존재

EDF 스케줄링

시간 4에 도착한 p2는 마감시한이 p1보다 빠르므로 선점하게 되지만 시간 5에 도착하는 p3는 마감시한이 더 늦기 때문에

p2를 선점하지 못한다는 것을 알 수 있고, 모두 마감시한 내에 완료되는 성공한 스케줄의 예시임

 

3) 윈도에서의 스케줄링

  • 윈도는 스레드 단위로 CPU를 할당하는 우선순위에 의한 선점 스케줄링 방식
  • 두 개의 클래스(Class)로 구분 - 우선순위 16부터 31은 실시간 클래스(System process) 0부터 15는 일반 클래스(User process)를 위해 배정
  • 실시간 클래스에 속하는 16개의 큐는 정적 우선순위로 운영되므로 다단계 큐
  • 일반 클래스의 16개의 큐는 동적 우선순위를 위해 앞에서 배운 MFQ로 구현
  • 실시간 클래스의 다단계 큐 각각은 라운드 로빈 방식으로 스케줄링되고, 현재 실행 중인 스레드보다 우선순위가 높은 스레드가 준비 상태가 되면 CPU가 선점
  • 일반 클래스에 속하는 스레드는 초기에 부여받은 우선순위가 스레드의 실행 동안에 변할 수 있으며 스레드의 기저 우선순위의 하한보다 낮아지지 않으며 15보다 커지지 않음
  • 스레드의 최초 우선순위는 자신의 기저(Base) 우선순위와 자신이 속하고 있는 프로세스의 기저 우선순위에 의해 결정되는데, 프로세스는 0부터 15 사이의 프로세스 기저 우선순위를 가지며 스레드의 기저 우선순위는 프로세스의 기저 우선순위의 비해 상대적인 값을 가짐 ex) 프로세스의 기저 우선순위가 4이고 스레드의 기저 우선순위가 -1이라면 스레드의 최초 우선순위는 3이 되는 방식
  • 우선순위 변동은 시간 종료인 경우 하향으로, 입출력 완료의 경우는 상향으로 함

윈도에서의 스케줄링

 

profile

Fascination

@euna-319

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!