4주차. CPU Scheduling (3) - Multi level Queue

2021. 10. 1. 23:59·CS/운영체제 정리

Multi-level Queue

Ready Queue를 한줄이 아니라 여러줄로 분할한다.

  • (예시)
  • foreground Queue (interative)
  • background Queue (batch - no human interaction)
  • 등등

각 큐는 독립적인 스케줄링 알고리즘을 가질 수 있다.

  • (예시)
  • foreground Queue - RR 스케줄링
  • background Queue - FCFS 스케줄링

큐에 대한 스케줄링이 필요하다. 두가지 방식이 존재

  • 방법 1) Fixed priority scheduling
    • 무조건 foreground에 먼저 service를 제공하고, 그다음에 가능할 때 background에 제공한다.
    • → 우선순위를 무조건 지키는 형태로 Starvation을 유발할 수 있다.
  • 방법 2) Time slice
    • 각 큐에 CPU time을 적절한 비율로 할당한다.
    • 예를들어 80%를 foreground Queue의 RR에, 20%를 background Queue의 FCFS에 할당하는 것.

 

구조

  • process별로 우선순위가 배정되어있는 구조이다.
  • 우선순위가 높은 큐부터 빠지고, 해당 큐가 비어야 다음 큐에서 CPU를 점유할 차례가 된다.
  • 한번 정해진 우선순위는 변경되지 않는다. 우선순위가 낮은 프로세스는 항상 낮음.

Multi-level Feedback Queue

  • 프로세스가 다른큐로 이동이 가능한 multi level 큐
  • Starvation을 방지하는 Aging 기법을 이와 같은 방식으로 구현할 수 있다.

multi level feedback queue의 scheduler를 정의하는 매개변수

  • Queue의 수 (몇 단계의 큐?)
  • 각 큐의 Scheduling 알고리즘
  • Process를 상위 큐로 보내는 기준
  • Process를 하위 큐로 보내는 기준
  • Process가 CPU 서비스를 받으려 할 때, 들어갈 큐를 결정하는 기준

 

구조

CPU의 service를 받고자하는 프로세스가 오게 되면

  1. Quantum time이 8인 RR 스케줄링의 큐에 들어간다
  2. 해당 시간내에 처리되지 못하면 다음 q time이 16인 RR 큐에 들어간다
  3. 위에서도 처리되지 못한 프로세스는 FCFS의 큐에 들어간다

즉, Q(0) 에서 8초를 주고, 처리를 못하면 Q(1)에서 기다리고, 그러다 CPU를 받게되면 16초 동안 CPU를 점유하고, 이후에도 처리를 못하면 FCFS로 가서 처리를 하게 된다 (timer 이내 동안)


그 외 다양한 CPU Scheduling 기법

Multiple-Processor Scheduling

  • CPU가 여러개인 경우의 스케줄링.
  • 간단하게 화장실에 칸이 여러개, 음식점에 종업원이 여러명인 상황이라 가정 할 수 있다.

Homogeneous(동종) Processor 인 경우

  • Queue에 한줄로 세워서 각 프로세서가 알아서 CPU를 가져가게 할 수 있다.
  • 반드시 특정 프로세서에서 수행되어야하는 프로세스가 있는 경우에는 추가적인 구현이 필요하다.

Load Sharing

  • 일부 프로세서에 Job이 몰리지 않도록 부하를 적절히 공유하는 메커니즘이 필요하다.
  • 별개의 큐를 두는 방법 (각각 서기) vs 공동 큐를 사용하는 방법 (한줄 서기)

Symmetric Multi-Processing (SMP, 동등한 멀티 프로세싱)

  • 각 프로세서가 각자 알아서 스케줄링을 결정한다

Asymmetric Multi-Processing (동등하지 못한 멀티 프로세싱)

  • 하나의 프로세서가 시스템 데이터의 접근과 공유를 책임지고 나머지 프로세서는 거기에 따른다.

 

Real-Time Scheduling

Hard real-time Systems

  • job이 정해진 시간안에 반드시 끝나도록 스케줄링을 하는 방법.
  • 네비게이션, 원자력 시설 등

Soft real-time Computing

  • job이 일반 프로세스에 비해 높은 Priority를 갖도록 한다.
  • 동영상 서비스 등

 

Thread Scheduling

Local Scheduling

  • User level thread의 경우 사용자 수준의 thread libray에 의해 어떤 thread에게 CPU를 줄지 스케줄링을 결정하게 된다
    • (커널이 쓰레드의 존재를 모르는 경우)

Global Scheduling

  • Kenel level thread의 경우 일반 프로세스와 마찬가지로 커널의 단기 스케줄러가 어떤 thread에게 CPU를 줄지 스케줄링한다
    • (커널이 쓰레드를 관리하는 경우)

Algorithm Evaluation

  • 어떤 스케줄링 알고리즘이 좋은건지 판단하는 척도

여기서 server는 CPU

  • arrival rate : 도착률
  • service rate : 처리율

Queueing models

  • 확률 분포로 주어지는 arrival rate와 service rate를 통해 각종 performance index 값을 계산
  • 이론적으로 계산하는 것

Implementation (구현) & Measurement (성능측정)

  • 시스템에 알고리즘을 구현하여 작업(workload)에 대해서 성능을 측정 비교
  • 실제 환경을 구현해서 테스트하는 것

Simulation

  • 알고리즘을 모의 프로그램으로 작성 후 trace를 입력으로 하여 결과 비교
반응형
저작자표시 (새창열림)

'CS > 운영체제 정리' 카테고리의 다른 글

5주차. 프로세스 동기화 (2) - Critical Section Problem & Sloving Algorithm  (0) 2021.10.15
5주차. 프로세스 동기화 (1) - race condition  (3) 2021.10.15
4주차. CPU Scheduling (2) - FCFS, SJF, Priority, RR  (1) 2021.10.01
4주차. CPU Scheduling (1) - CPU, I/O burst & 스케줄링의 기준 척도  (0) 2021.10.01
3주차. 프로세스의 연산 - fork(), exec()... 와 IPC  (1) 2021.09.24
'CS/운영체제 정리' 카테고리의 다른 글
  • 5주차. 프로세스 동기화 (2) - Critical Section Problem & Sloving Algorithm
  • 5주차. 프로세스 동기화 (1) - race condition
  • 4주차. CPU Scheduling (2) - FCFS, SJF, Priority, RR
  • 4주차. CPU Scheduling (1) - CPU, I/O burst & 스케줄링의 기준 척도
구름뭉치
구름뭉치
구름의 개발일기장
  • 구름뭉치
    구름 개발일기장
    구름뭉치
  • 전체
    오늘
    어제
    • ALL (283)
      • 프로젝트 (23)
        • 토스페이먼츠 PG 연동 시리즈 (12)
        • JWT 방식 인증&인가 시리즈 (6)
        • 스우미 웹 애플리케이션 프로젝트 (1)
        • 스프링부트 기본 보일러 플레이트 구축 시리즈 (2)
        • 마이크로서비스 아키텍쳐 시리즈 (1)
      • 스프링 (43)
        • 스프링부트 API 설계 정리 (8)
        • 스프링부트 RestAPI 프로젝트 (18)
        • 스프링부트 WebSocket 적용기 (3)
        • 스프링 JPA 정리 시리즈 (5)
        • 스프링 MVC (5)
        • 스프링 배치 (2)
        • 토비의 스프링 정리 (2)
      • 기술 학습 (28)
        • 아파치 카프카 (9)
        • 클린 코드 (4)
        • 디자인 패턴의 아름다움 (2)
        • 모던 자바 인 액션 (7)
        • JVM 스레드 딥다이브 (6)
      • Web (25)
        • 정리글 (20)
        • GraphQL 정리글 (2)
        • Jenkins 정리글 (3)
      • 취업 (6)
      • CS (77)
        • 네트워크 전공 수업 정리 (11)
        • OSI 7계층 정리 (12)
        • 운영체제 정리 (19)
        • 데이터베이스 정리 (5)
        • MySql 정리 (17)
        • GoF의 Design Pattern 정리 (12)
      • 알고리즘 (70)
        • 백준 (56)
        • 프로그래머스 (12)
        • 알고리즘 정리본 (1)
      • 기초 지식 정리 (2)
      • 일상 (8)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    부다페스트
    키보드 손목 받침대
    동유럽
    크로아티아
    mx master s3 for mac
    마우스
    마우스 패드
    레이저
    류블라냐
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
구름뭉치
4주차. CPU Scheduling (3) - Multi level Queue
상단으로

티스토리툴바