http://www.kocw.net/home/m/search/kemView.do?kemId=1046323
운영체제 강의를 듣고 정리한 내용입니다
CPU가 여러개 있는 경우의 스케줄링
CPU가 여러 개인 경우 스케줄링은 더욱 복잡해진다
Multiple-Processor Scheduling
Homogeneous processor
- Queue에 한 줄로 세워서 각 프로세서가 알아서 꺼내가게 할 수 있다
- 반드시 특정 프로세서에서 수행되어야 하는 프로세스가 있는 경우 문제가 더 복잡해진다
Load sharing
- 일부 프로세서에 job이 몰리지 않도록 부하를 적절히 공유하는 메커니즘이 필요하다
- 별개의 큐를 두는 방법과 공동 큐를 사용하는 방법이 있다
Symmetric Multiprocessing(SMP)
- 각 프로세서가 각자 알아서 스케줄링을 결정한다 (동등한 방식)
Asymmetric multiprocessing
- 하나의 프로세서가 시스템 데이터의 접근과 공유를 책임지고
- 나머지 프로세서는 이를 따른다
Real-Time Scheduling
- Hard real-time systems
- 정해진 시간 안에 반드시 끝내도록 스케줄링 해야한다
Soft real-time computing
- 일반 프로세스에 비해 높은 priority를 갖도록 해야한다
Thread Scheduling
Local Scheduling
User level thread의 경우 사용자 수준의 thread library에 의해 어떤 쓰레드를 스케줄링할지 결정한다
-> 사용자 프로세스가 직접 결정한다
Global Scheduling
Kernal level thread의 경우 일반 프로세스와 마찬가지로 커널의 단기 스케줄러가 어떤 쓰레드를 스케줄링할지 결정한다
-> 운영체제가 결정한다
어떤 알고리즘이 좋은지 평가할 수 있는 방법
Algorithm Evaluation
Queueing models
확률 분포로 주어지는 arrival rate와 service rate 등을 통해 각종 performance index 값을 계산한다
-> 복잡한 수식 계산을 하고 그 결과를 활용한다 (과거에 사용한 방법)
Implementation(구현) & Measurement(성능 측정)
실제 시스템에 알고리즘을 구현하여 실제 작업(workload)에 대해서 성능을 측정하고 비교한다
Simulation(모의 실험)
알고리즘을 모의 프로그램으로 작성 후 trace를 입력으로 하여 결과를 비교한다