##본 포스팅은 운영체제 강의 '이화여자대학교 운영체제 강의 - 반효경 교수님'를 보고 정리한 내용입니다.
Multiple-Processor Scheduling
CPU가 여러개인 경우, 병행 제어를 해야하기 때문에 스케줄링은 더욱 복잡해진다.
- Homogeneous processor인 경우
Queue에 한줄러 세워서 각 프로세서가 알아서 꺼내가게 할 수 있음
반드시 특정 프로세서를 이용해야하는 프로세스가 있는 경우엔 문제가 복잡해짐 - Load sharing
CPU가 골고루 일하게 하는 것이 중요한데, 일부 프로세서에 job이 몰리지 않도록 적절히 공유하는 메커니즘을 사용
별개의 큐를 두는 방법 vs 공동 큐를 사용하는 방법 - Symmetric Multiprocessing(SMP)
각 프로세서가 각자 알아서 스케줄링 결정 - Asymmetric multiprocessing
하나의 프로세서가 대장이 돼서 시스템 데이터의 접근과 공유를 책임짐
등의 문제와 복잡성이 있다.
중요하진 않고, 이런 것이 있다~라고만 알아두면 된다.
Real-Time Scheduling
Real-Time Scheduling은 우리가 사용하는 운영체제에서의 스케쥴링은 아니다.
Real-time job은 정해진 데드라인이 있어서, 그 시간 내에 반드시 처리해야하는 작업이다.
Real-Time Scheduling은 Dead Line이라는 시간이 추가되며, 이것을 만족하는 것이 중점이다.
- Hard real-time scheduling
미리 프로세스들에 대해 off-line으로 큐에 프로세스가 오는 도착 시간을 미리 알고,
정해진 시간 안에 반드시 끝내도록 스케줄링 해야하는 것 - Soft real-time scheduling
어기면 큰일난다!는 아니고, 작은 불편정도가 있는 것
- 동영상을 스트리밍해야한다거나, 데드라인이 있지만 큰일은 나지 않는 경우가 있음
일반 프로세스에 비해 높은 priority를 갖도록 해야 함 (전담 시스템을 두진 않지만)
Thread-Scheduling
하나의 프로세스 안에 CPU 수행 단위가 여러개 있는 것을 Thread라고 한다.
Thread를 구현하는 방법은 두개가 있는데,
- User level thread : 운영체제는 스레드의 존재를 모르고, 사용자 프로세스 본인이 스레드를 여러 개 둔 경우
- Kernel level thread : 운영체제는 스레드의 존재를 앎
- Local Scheduling
User level thread의 경우
CPU 스케줄러가 CPU를 누구한테 줄지 결정하지 못하고, 그냥 프로세스에게 주는 것이고
프로세스가 CPU를 받았을 때 내부적으로 알아서 결정하는 것 - Global Scheduling
Kernel level thread의 경우
일반 프로세스와 마찬가지로 커널의 단기 스케줄러가 어떤 thread를 스케줄링할 지 결정
Algorithm Evaluation
CPU 스케줄링에서는 다양한 알고리즘과 평가 척도가 있는데, 이러한 평가 척도는 다음과 같은 방법들로 평가될 수 있다.
- Queueing models
복잡한 수식을 이용하여 계산하는 방법(이론적인 방법)
확률 분포로 주어지는 arrival rate, service rate 등을 통해 각종 perfomance index 값을 계산
(옛날 방식) - Implementation(구현) & Measurement(성능 측정)
실제 시스템에 알고리즘을 구현하여 실제 작업에 대해서 성능을 측정하고 비교하는 방법
(어려움) - Simulation(모의 실현)
실제 시스템을 구현하는 것이 아니라, 가상으로 돌려보는 것
주어진 작업인 trace(신뢰성 있는 작업, 실제 작업과 유사해야함)를 입력하여 어떤 것이 더 좋은지 모의 실험을 하는 방법
'System > OS' 카테고리의 다른 글
운영체제 6주차] 병행제어(2) (0) | 2021.10.17 |
---|---|
운영체제 6강] Process Synchronization (0) | 2021.10.10 |
운영체제 4강] (0) | 2021.10.04 |
운영체제 3-3~3-4] 스케줄러 (0) | 2021.09.26 |
운영체제 3-1~3-2] 프로세스 (0) | 2021.09.26 |