운영체제 - 병행제어
OS를 공부하면서 정리를 한 내용들 입니다.
이번 챕터는 특수한 CPU Scheduling에 대해 알아봅니다.
Real-Time Scheduling
우리가 일반적으로 사용하는 컴퓨터와 운영체제는 Real-Time을 위한 운영체제와 컴퓨터가 아닙니다.
여러 프로그램들이 동시에 돌아가기 때문에 다 같이 어느정도 만족하자는 식입니다.
Real-Time은 어떠한 DeadLine
이 있어서 주어진 시간안에 꼭 처리가 되어야하는 일을 Real-Time job이라하고
Real-Time 스케쥴링은 그런 상황에서의 스케쥴링입니다.
이전까지 배웠던 스케쥴링들은 DeadLine
이 정해져 있지 않았기에 빨리되면 좋은 것, 늦게되면 불만이 쌓이는 정도 였습니다.
여기서 Real-Time 스케쥴링의 종류는 크게 2종류가 있습니다.
Hard real-time Systems
DeadLine
을 어기면 큰 일이 일어나므로 정해진 시간 안에 반드시 끝내도록 스케쥴링을 해야합니다.
CPU를 너무 빠르게(비싼CPU)를 사용하면 노는 시간이 있으므로 낭비하게 되는 꼴,
CPU를 너무 느리게(값싼CPU)를 사용하면 DeadLine내에 일을 마치지 못하므로 큰 일이 발생할 수 있습니다.
Soft real-time computing
-
DeadLine
을 어기더라도 Hard real-time task마냥 큰 일이 일어나는 것은 아니고 어느정도의 불편을 감수하는 정도입니다. -
일반 프로세스에 비해 높은 priority를 갖도록 해야합니다.
예를 들면 동영상을 streaming한다던지의 경우입니다.
동영상은 초당 24frame을 디코딩해서 화면에 출력해줘야합니다. 그렇지 않다면? 영상이 끊기게 됩니다.
그러나 아주 큰 일은 아니고 불편한 정도입니다.
Thread Scheduling
Thread는 하나의 프로세스안에 CPU 수행단위가 여러개 있는 경우입니다.
여기서 Thread를 구현하는 방식이 2가지가 있었습니다.
-
User Level Thread : 운영체제는 Thread의 존재를 모르고, 사용자 프로세스 본인이 내부에 Thread를 두는 것
-
Kernel Level Thread : Kernel이 Thread의 존재를 알고 있고, 운영체제가 CPU 스케쥴링을 할 때,
어느 Thread한테 CPU를 할당할지를 직접 결정하는 방식
Local Scheduling
- User level thread의 경우 사용자 수준의 thread library에 의해 어떤 thread를 스케쥴할지 결정합니다.
Global Scheduling
- Kernel level thread의 경우 일반 프로세스와 마찬 가지로 커널의 단기 스케쥴러가 어떤 thread를 스케쥴할지 결정합니다.
Algorithm Evaluation
알고리즘 평가 방법입니다.
스케쥴링의 성능 척도는 아래와 같습니다.
중국집 예시
-
활용도 - 전체 시간 중 주방장이 일한 시간의 비율
-
처리량 - 주방장이 주어진 시간 동안 몇 명의 손님에게 요리를 주었는지
사장의 입장에선 주방장이 쉬지 않고, 일을 했으면 좋겠다고 생각한다.
-
소요시간 - 손님이 중국집에 들어와 음식을 다 먹고 나가기까지 소요된 총 시간
-
대기시간 - 중국집에 들어와 순수하게 음식을 기다린 시간, 음식이 조금씩 여러번 나왔다면 각각의 음식이 나오기까지 기다린 시간을 합한 것
-
응답시간 - 최초의 음식이 나오기까지 기다린 시간
손님의 입장에서 보았을 때, 빨리 음식을 먹고 나가고 싶어한다.
이것들을 평가하면서 어떤 것이 좋은가를 평가하는 방법입니다.
크게 3가지로 구분할 수 있습니다.
Queueing model
- 확률 분호로 주어지는 arrival rate와 service rate 등을 통해 각종 performance index 값을 계산합니다.
Implementation(구현) & Measurement(성능 측정)
- 실제 시스템에 알고리즘을 구현하여 실제 작업(workload)에 대해서 성능을 측정 비교합니다.
Simulation(모의 실험)
- 알고리즘을 모의 프로그램으로 작성 후 trace를 입력으로 하여 결과를 비교합니다.
-참고 KOCW 이화여자 대학교 반효경 교수님 : 운영체제 강의