• 사용자 스레드와 커널 스레드를 구분
  • 스레드가 지원될 경우 스케줄링 대상은 프로세스가 아닌 스레드
  • LWP에서 실행되는 사용자 스레드 스케줄링.
    • 범위: PCS 프로세스 경쟁 범위
  • 카널 스레드 스케줄링
    • 범위: SCS 시스템 경쟁 범위

Pthread 스케줄링

  • API를 사용하여 스레드를 생성시 PCS, SCS를 지정해야함

다중 처리기 스케줄

  • 동일한 처리기: CPU가 기능상 거의 동일한 경우
  • 비대칭 다충처리: CPU 하나만 하나의 자료구조에 접근 가능 한 것
  • 대칭 다중처리(SMP): 모든 CPU가 자료구조에 자유롭게 접근이 가능 한 것
    • 현재 대부분의 운영체제가 선택한 방식
  • 처리기 친화성: 프로세스가 현재 실행 중인 처리기에 친화성을 가지는 것
    • 연성 친화성: cpu를 바꾸어도 별 문제 없이 작동하는 것
    • 경성: 프로세스가 작동하기 적합한 하드웨어(cpu)가 따로있다.
    • 처리기 집합등의 변형
  • Non Uniform Memory Acessece(NUMA): CPU의 Local 메모리는 빠르게 접근 할 수 있지만 다른 CPU의 Local 메모리에는 빠르게 접근하기 힘들다.

부하 균등(Load Balancing)

  • SMP의 경우 효율적으로 작동하기 위해서는 모든 CPU에 작업이 공급되어야 한다.
  • 부하 균등: 부하를 균등하게 분배
    • 푸시 이주: 부하가 많이 걸린 CPU의 태스크를 부하가 적게 걸린 CPU로 이동 시킨다.
    • 풀 이주: 일이 없는 처리기에서 대기 중인 태스크를 가져다 실행한다.

다중코어 처리기

  • 동일한 물리적인 칩 안에 여러 개의 처리기 코어를 배치한다.
  • 단일 코어 방식의 CPU 보다 빠르고 더 적은 전력을 소모한다.
  • 코어 마다 여러 스레드를 지원하는 방식이 증가하는 추세

다중스레드 다중코어 시스템

  • 거친 다중 스레딩

  • 한 CPU에 하드웨어 스레드가 하나라면 연산하고(C) 쉬고(M)를 반복한다.
  • 세밀한 다중 스레딩 

  • 한 CPU에 여러 하드웨어 스레드가 존재한다면 연산하고(C) 쉬고(M)를 서로 반복하며 일을 시킨다.
  • 위에 사례에서는 cpu가 쉬는 구간이 존재하지만 해당 사례에서는 cpu가 항상 일을 한다.

 

실시간 CPU 스케줄링

  • 연성 실시간 시스템(소프트): 아주 중요한 실시간 프로세스가 언제 완료될지 보장하지 않음, 태스크의 마감시간이 정해져 있지만 조금 지체됨을 허용한다.
  • 경성 실시간 시스템(하드): 일정 시간 내에 태스크가 반드시 완료가 되어야 함
  • 발생할 수 있는 지연
    • 인터럽트 지연: 인터럽트가 도착해서 인터럽트를 서비스 하기 시작할 때까지의 시간 (하드웨어 또는 소프트웨어가 발생하는 이벤트에 대한 지연이며)
    • 디스패치 지연: 현재 프로세스를 중단시키고 새로운 프로세스로 전환하는데 걸리는 시간 (운영 체제가 프로세스를 중지하고 다른 프로세스를 실행하는 데 필요한 지연)
  • 조건
    • 커널 모드에서 실행 중인 프로세스의 선점
    • 낮은 우선순위의 프로세스가 높은 우선순위의 프로세스가 요구하는 자원을 방출

우선순위 기반 스케줄링

  • 처리시간 t, 마감시간 d, 주기 p로 이루어
  • 주기적인 프로세스는 일정 간격으로 CPU를 요구한다.
    • 주기가 짧을 수록 빈도 수는 올라간다.

가상화와 스케줄링

  • 여러 게스트를 CPU에 스케줄 하는 기법
  • 각 게스트는 자신이 직접 스케줄 한다.
    • 자기가 가진 CPU가 없다는 것 조차 모름
    • 응답시간이 나빠질 수 있음
    • 게스트의 현재 시각에 영향을 줄 수 있음
  • 게스트의 스케줄링 알고리즘의 좋은 결과를 되돌릴 수 있음

 

Rate Montonic 스케줄링

  • 우선순위는 주기의 역순에 기반을 두고 부여된다.
    • 단순히 주기가 짧을 경우 우선순위를 높게 두고 스케줄링 하는 방식
  • 주기와 우선순위 반비례 P1(50) P2(100)
  • CPU 이용률: 20(P1)/50 + 35(P2)/100
  • N 개의 프로세스: 최악의 경우 CPU 이용률 N(2^1/N -1) 해당 보다 이용률이 커진다면 cpu 데드라인을 지키지 못 한 경우가 된다. N-> 무한대로 간다면 값은 자연로그 2 (ln 2) -> 0.693147 이 된다.
    • h = 1/N 일때 N(2^1/N -1) -> (2^h-1)/h 로 변환되고 n->무한대 -> h->0 으로 변환된다.
    • 이때 우리는 수학적 정의를 통해 ln2값이 나온다. 

'CS > OS' 카테고리의 다른 글

임계 구역 문제  (0) 2023.04.24
운영체제  (0) 2023.04.23
CPU 스케줄링 알고리즘  (0) 2023.04.18
CPU 스케줄링 기준  (0) 2023.04.17
식사하는 철학자 문제  (0) 2023.04.11

+ Recent posts