1. MP Scheduling
1) Process Scheduling in MP
(1) Multiple-Processor(MP) Scheduling
- MP 시스템 분류
- 느슨하게 결합되거나 분산된 멀티프로세서 또는 cluster(클러스터)
- 각 프로세서는 고유한 메인 메모리 및 I/O 채널을 가지고 있음
- 이러한 유형의 구성은 16장에서 다룸
- 기능적으로 특화된 프로세서
- 예를 들어 I/O 프로세서가 있습니다. 이 경우 마스터 범용 프로세서가 있음
특수 프로세스는 마스터 프로세서에 의해 제어됨(11장 참조)
- 예를 들어 I/O 프로세서가 있습니다. 이 경우 마스터 범용 프로세서가 있음
- 단단히 결합된 멀티프로세서
- 공통 메인 메모리를 공유하고 운영 체제의 통합 제어 하에 있는 프로세서 세트로 구성됨
- 느슨하게 결합되거나 분산된 멀티프로세서 또는 cluster(클러스터)
- MP 스케줄링 방법
- Asymmetric multiprocessing(master/slave) → 확장성이 떨어짐
- 마스터에 의한 모든 스케줄링 결정, 다른 프로세서는 사용자 프로그램만 실행할 수 있음
- 하나의 코어만 시스템 데이터 구조에 접근하므로 간단
- 이 접근 방식의 단점은 마스터 서버가 잠재적인 병목 현상(bottle neck)이 된다는 것!!
- Symmetric multiprocessing(SMP, peer)
- 커널은 어떠한 프로세서에서 실행할 수 있다.
- 각 프로세서는 self-scheduling
- Asymmetric multiprocessing(master/slave) → 확장성이 떨어짐
(2) Design Issues
- Uniprocessor scheduling
- 작업 실행 시기 결정
- Multiprocessor scehduling
- 작업 실행 시기뿐만 아니라 실행 위치도 결정
- 단일 프로세서 스케줄링의 목표와 거의 동일하지만 새로운 문제가 발생
- 프로세스 실제 dispatching
- 대기열을 유지 관리하는 방법
- 프로세서에 대한 프로세스 할당
- 프로세서 heterogeneity 관리 방법
(3) Scheduling for MP
- 프로세서 하나와 프로세서 두 개의 스케줄링 비교
- C의 값 증가는 서비스 시간 간의 변동성 증가에 해당
- Cs = 0 → 모든 프로세스의 서비스 시간과 동일
- Observation
- 2개의 프로세서를 사용하며 FCFS의 경우 서비스 시간이 긴 단일 프로세스가 훨씬 덜 중단됨
- 두 개의 프로세서를 사용하는 경우 특정 스케줄링 분야는 훨씬 덜 중요
- 다중 프로세서 시스템에는 간단한 FCFS 교육만으로 충분할 수 있음
Cs = σs / Ts
σs = standard deviation of service time(서비스 시간의 표준편차)
Ts = mean service time(평균 서비스 시간)
2) Processor Affinity
(1) Processor Affinity
- 특정 프로세서에서 프로세스가 실행된 경우 캐시 메모리에 어떤 변화가 발생하는지 고려
- 프로세스에서 가장 최근에 액세스한 데이터가 캐시를 채움
- 결과적으로 프로세스에 의한 연속적인 메모리 액세스는 종종 캐시 메모리(warm cache라고 불림)에서 충족됨
- SMP를 지원하는 대부분의 OS는 동일한 프로세서에서 프로세스를 계속 실행하려고 warm cache를 활용
- 프로세스가 프로세서에 대한 affinity(선호도)를 가진다.
(2) Affinity 종류
- Soft affinity → guarantee를 해주는 것
- 운영 체제가 프로세스를 동일한 프로세서에서 계속 실행하려고 시도하지만 실행을 보장(guarantee)하지 않는 정책을 가지고 있는 경우
- Load balacing 중에 프로세스가 프로세서 간에 migrate될 수 있다.
- Hard affinity → guarantee를 하지 않는 것
- 프로세스가 실행될 수 있는 프로세서의 하위 집합 지정 허용
- 많은 시스템이 Soft affinity와 Hard affinity를 모두 제공
- 예를 들어 Linux는 Soft affinity를 구현하지만 Hard affinity를 지원하는 sched_setaffinity() 시스템 호출도 제공
- MP 스케줄러는 프로세서 affinity(선호도)를 고려해야 한다.
3) Single-Queue MP Scheduling
(1) Single-Queue MP Scheduling
- global ready queue가 유지되며, 각 프로세서는 idle(유휴)상태일 때, queue에서 프로세스를 선택
- 프로세스가 특정 프로세서에 할당되지 않음
- UP 스케줄링을 위한 기본 framework를 재사용하기만 하면 됨
- 장점 : simplicity, load sharing( load balancing 불필요)
- 단점
- 다른 시간에 다른 프로세서에서 실행될 수 있음(Affinity : 평가)
- common ready queue를 이 race condition로부터 보호하기 위해 어떤 형태로든 잠금을 사용
→ Lack of scalability(확장성 부족)
4) Multi-Queue MP Scheduling
(1) Multi Queue MP Scheduling
- 각 프로세서는 자체 private queue를 가질 수 있음
- 작업이 시스템에 입력되면 정확히 하나의 스케줄링 큐에 배치된다.
- 프로세스가 활성화될 때부터 완료될 때까지 하나의 프로세서에 영구적으로 할당되는 경우
- 각 큐는 특정한 스케줄링 규칙을 따름
- synchronization(동기화) 문제 방지
- 이를 통해 scalability(확장성) 및 프로세서 affinity(선호도) 향상
(2) 단점 : load imbalance
SMP 시스템에서는 두 개 이상의 프로세서의 이점을 최대한 활용하기 위해 모든 프로세서 간에 workload의 균형을 유지한 것이 중요
5) Load Balancing
(1) Load Balacing
- Load Balancing : SMP 시스템의 모든 프로세서에 걸쳐 워크로드를 균등하게 분산 유지
- Load Balancing에 대한 두 가지 일반적인 접근
- Pull migration
- idle 프로세서가 idle 프로세서가 아닌 프로세서의 프로세스를 훔친다.
- 예: FreeBSD
- 프로세서가 할 일이 없으면 global bit-mask에 비트를 설정하여 idle 상태임을 나타냄.active processor가 자체 run queue에 작업을 추가하려고 하면 먼저 이러한 idle 비트를 확이낳고 설정된 idle 비트가 발견되면 프로세스를 idle 프로세서로 전달
- Push migration → 주기적으로 체그하여 load
- 특정 작업이 각 프로세서의 로드를 주기적으로 확인함
- 예 : Free BSD
- 이 작업은 시스템에서 가장 로드가 많은 프로세서와 가장 로드가 적은 프로세서를 선택하고 run queue를 동일하게 함
- Pull migration
- 고려사항
- 다른 queue를 너무 자주 둘러보는 경우 → 높은 오버헤드로 인해 어려움을 겪을 것
- 잦은 load balancing은 affinity를 해칠 수 있음
- 다른 queue를 너무 자주 둘러보는 경우 → 높은 오버헤드로 인해 어려움을 겪을 것
(2) Heterogeneous Multiprocessing(HMP)
- Heterogenous Multiprocessing(이기종 다중 처리)
- 이제 동일한 명령 집합을 실행하면서도 clock 속도와 전력 관리 측면에서 다양한 코어를 사용하여 설계됨
- 이것은 Asymmetric multiprocessing(AMP)의 한 형태가 아님
- 이를 지원하는 ARM 포로세서용
- big.LITTLE 알려진 고성능 big core들과 에너지 효율적인 little core들이 결합된 솔루션
- HMP에서의 스케줄링
- 고성능이 필요하지 않지만 little core들에서 오랜 기간 실행해야하는 작업 할당
- 더 많은 처리 능력을 요구하지만 더 짧은 기간 동안 실행할 수 있는 interactive application은 big core에 할당
2. Real-Time Scheduling
Real-time system : task 처리에 걸리는 시간을 일관되게 유지할 수 있냐가 중요한 성능의 척도이다.
- real-time system의 이벤트 중심적 특성
- 시스템은 일반적으로 real time으로 이벤트가 발생하기를 기다림
- (periodic : 비정기적으로) 차량이 장애물에 접근하는 것을 감지했을 때 타이머가 만료되는 경우
- 이벤트가 발생하면 시스템이 가능한 한 신속하게 대응하고 서비스를 제공해야 함
- "event latency(대기시간)" = Interrupt latency + dispatch latency
- dispatch latency를 낮게 유지하는 가장 효과적인 기술은 preemptive kerner(사전 예방적 커널)을 제공하는 것
- 시스템은 일반적으로 real time으로 이벤트가 발생하기를 기다림
- 최신 real-time 운영 체제
- 지연시간 최소화는 중요하지만 특별히 유용한 metric은 아님
- real-time OS 평가에서 더 중요한 목표
- 가장 valuable 시간에 task를 완료(또는 시작)
- Soft real-time system( - process)
- 중요하지 않은 프로세스보다 real-time 프로세스에 우선권이 부여된다는 것만 보장
- real-time 프로세스가 스케줄링되는 시기에 대한 보증 제공 안 함
- 바람직하지만(desirable) 필수(mandatory)는 아닌 관련 deadline이 있다.
- Hard real-time system( - process)
- 프로세스는 deadline까지 처리되어야 함
- deadline을 준수해야 함
- 그렇지 않으면 시스템에 허용할 수 없는 damage 또는 fatal error(치명적인 에러)가 발생
- 기한이 만료된 후의 서비스는 서비스가 전혀 없는 것과 동일
- Real-Time Task
- 스케줄링되어야 하는 RT 프로세스들의 특성
- Periodic(주기적) task : 일정한 시간 간격(주기)로 반복적으로 발생하는 과업
- 주기적인 프로세스가 CPU를 획득하면 CPU에서 서비스를 제공해야 하는 데 필요한 실행 시간이 정해져 있음
- Aperiodic(비정기적인) task : 발생간격이 일정하지 않고 간헐적으로 발생하는 작업
- Starting deadline : 작업을 시작해야 하는 시간
- Completion deadline : 작업을 완료해야 하는 시간. 일반적인 real-time 애플리케이션에는 starting deadline 또는 completion deadline이 포함되지만, 둘 다 포함되지는 않음
- Periodic(주기적) task : 일정한 시간 간격(주기)로 반복적으로 발생하는 과업
- 스케줄링되어야 하는 RT 프로세스들의 특성
- A : 1 / T = 1 / 0.02 = 50 Hz ( T = 20ms / C(수행시간) : 10ms / A(1) d(마감일) : 20ms)
- B : 1 /T = 1 / 0.05 = 20Hz ( T =50ms / C : 25ms / B(1) d : 50ms)
1) Priority Based Scheduling
- real-time 운영체제의 가장 중요한 기능은 real-time 프로세스에 즉시 대응하느는 것
- real-time 운영체제의 스케줄러는 preemption이 있는 우선 순위 기반 알고리즘을 지원해야 함
- 스케줄러가 가장 높은 우선순위 ready-queue에서 시작된다.
- Preemptive(선제적인) 우선 순위 기반 스케줄러를 제공하면 soft real-time 기능만 보장된다.
- 우선순위가 낮은 프로세스는 starvation에 빠질 수 있음
UNIX 및 많은 다른 시스템에서 우선 순위 값이 클수록 우선 순위가 낮은 프로세스를 나타낸다. 달리 명시되지 않은 한 이 규칙을 따른다. Windows와 같은 일부 시스템에서는 반대의 규칙을 사용한다. 숫자가 클수록 우선순위가 높음
2) Earliest-Deadline-First(EDF)
- Earliest-Deadline-First(EDF)
- deadline 요구 사항을 시스템에 알린다.
- deadline에 따라 우선순위를 동적으로 할당
- deadline이 빠를수록 우선순위가 높아짐
- deadline이 늦어질수록 우선순위가 낮아짐
- 새로 실행 가능한 프로세스의 마감일을 반영하여 우선 순위를 조정해야 할 수도 있음
- completion deadline이 포함된 periodic(주기적) task 스케줄링의 예
- 두 개의 센서에서 데이터를 수집하고 처리하는 시스템을 고려
- 이 예에서는 deadline이 가장 가까운 작업의 preemption point에서 우선순위를 부여하도록 스케줄링함으로써 모든 시스템 요구사항을 충족할 수 있다.
- 시작 deadline이 있는 aperiodic task(비정기적인 작업)을 처리하기 위한 계획을 고려
Earliest Deadline with Unforced Idle Times(EDUIT) 알고리즘은 각 작업데 대해 실행 시간과 데드라인을 알고 있어야 함. 또한 이 알고리즘은 언제든지 시스템이 비어 있을 때 즉, 실행 가능한 작업이 없을 때 대기 상태로 유지하는 것을 허용한다. 이러한 대기 상태를 'unforced idle time'이라고 함
3) Rate Monotonic Scheduling(RMS)
- preemption이 있는 static priority policy를 사용하여 periodic task를 스케줄링
- 시스템에 진입하면 각 periodic task에 주기에 따라 역으로 우선 순위가 할당됨
- 기간이 짧을수록 우선 순위가 높아짐
- 기간이 길수록 우선순위가 낮아짐
- 작업의 우선순위를 rate(frequency)의 함수로 표시하면 결과는 단조롭게 증가하는 함수이다.
- 표기법
- C :Execution Time(실행 시간)
- T : period(기간)
- U = C/T → Process Utilization(프로세스 활용율)
- 다음 부등식은 유지되어야 한다,
1. 완벽한 스케줄링 알고리즘이 성공적으로 스케줄링할 수 있는 작업 수에 대한 제한을 제공
2. RMS의 경우, 다음과 같은 부등식이 유지됨을 알 수 있다.
- 예를 들어, 세가지 주기적인 작업의 경우를 생각해보자
- 작업 P1 : C1 = 20, T1 = 100, U1 = 0.2
- 작업 P2 : C2 = 40, T2 = 150, U2 = 0.267
- 작업 P3 : C3 = 100, T3 = 350, U3 = 0.286
- 이 세 가지 작업의 총 사용률은 0.2 + 0.267 + 0.286 = 0.753이다
- 세 가지 작업에 필요한 총 사용률이 RMS의 상항(0.753 < 0.779)보다 작기 때문에 RMS를 사용하면 모든 작업이 성공적으로 스케줄링된다.
4) EDF vs RMS
- EDF
- 프로세스가 실행 가능해지면 프로세스가 스케줄러에 마감일을 공지해야하는 요구사항
- EDF 스케줄링의 매력은 이론적으로 최적이라는 것
- 프로세스 간의 Contest switch 및 interrupt 처리 비용으로 인해 이 수준의 CPU utilization을 달성할 수 없음
- 따라서 전반적인 프로세서 활용률을 높여 EDF를 통해 보다 주기적인 작업을 수용할 수 있음
- RMS
- 프로세스가 주기적이어야 한다는 요구사항
- 작업의 우선 순위는 해당 기간에 따라 결정됨
- 그럼에도 불구하고 RMS는 산업 응용 분야에서 널리 채택됨
- 실제로는 성능 차이가 작고. 방정식(10.2)의 상한은 보수적이다.
- 대부분의 하드 실시간 시스템에서 소프트 실시간 실시간 구성 요소도 있다.
- RMS를 사용하면 안정성을 더욱 쉽게 확보할 수 있음
- 우선순위를 변경하려면 작업 기간을 변경해야 함
- EDF로 인해 RMS보다 우선순위 변경이 복잡해짐
- 프로세스가 주기적이어야 한다는 요구사항
'오퍼레이팅 시스템' 카테고리의 다른 글
오퍼레이팅 시스템 : Synchronization 1 (0) | 2023.05.07 |
---|---|
오퍼레이팅 시스템 : Threads and Synchronization (0) | 2023.05.07 |
오퍼레이팅 시스템 : Processor Scheduling Ⅰ (0) | 2023.04.08 |
오퍼레이팅 시스템 : Process Description and Control Ⅱ (0) | 2023.04.08 |
오퍼레이팅 시스템 : Proccess Description and Control Ⅰ (0) | 2023.04.07 |