2-9 스케쥴링 알고리즘과 우선순위
- 프로세스 스케쥴러
- 스케쥴링 알고리즘
- 프로세스 스케쥴러의 동작 시점
프로세스 스케쥴러
스케쥴러
일반 OS와 리얼타임 OS를 결정짓는 역할
-> 스케줄러의 동작 방식에 따라 일반 OS가 되기도, 리얼타임 OS가 되기도 함
리얼타임 OS : 실시간으로 동작을 처리하며 응답성이 좋은 OS
-> A라는 프로그램을 리얼타임 OS와 일반 OS가 동시에 실행한 경우, 리얼타임 OS가 더 빠르게 처리
-> 최종적으로 동작 처리를 마무리하고 실행하는 것은 CPU 성능에 의존적(리얼타임 OS가 무조건적으로 빠르진 않음)
타임 슬라이스
프로세스는 클럭을 기준으로 동작하고, 이 클럭이 모여서 타임 슬라이스를 형성
-> 프로세스에게 할당된 러닝 시간의 기준을 의미
ex) 타임 슬라이스가 3클럭으로 정해진 프로세스는 3클럭의 시간만 동작 후 Ready 상태로 전환, 다른 프로세스가 Running
선점형 OS, 비선점형 OS
프로세스의 선점을 허용하는지의 여부를 기준으로 구분
선점형 OS : 프로세스의 타임 슬라이스가 끝나면 다음 프로세스가 자동적으로 실행
-> 우선순위를 고려해서 동작하던 프로세스를 스케쥴러가 강제로 밀어냄
비선점형 OS : 사용자가 "특정 프로세스가 동작을 포기하겠다."는 코드를 명시하지 않으면 우선순위가 높은 프로세스라도 동작을 양보하지 않음
-> 코드를 명시하지 않으면 스케쥴러가 개입해서 프로세스를 밀어내지 않아 스케쥴러의 개입이 적음
RTOS
Soft RTOS : 일반적인 OS보다 하는 작업이 특화되어 있어 응답성이 좋은 RTOS
Hard RTOS : 응답성이 좋은 개념이 아닌, 데드라인이 있어서 해당 기간까지는 무조건 응답을 마무리하는 RTOS
ex) 자동차의 ABS 등 크리티컬한 상황을 마주할 수 있는 시스템에 들어가는 OS : Hard RTOS
-> RTOS의 디자인은 일반 OS보다 난이도가 높으며 전혀 다름 알고리즘과 스케쥴러를 통해 디자인
스케쥴링 알고리즘
라운드 로빈
동일한 우선순위의 프로세스들에게 평등하게 적용하는 방식
-> 같은 우선순위를 가진 큐 내부에서는 동등한 우선순위를 부여
-> 타임 슬라이스에 따라 돌아가면서 실행
-> 낮은 우선순위의 프로세스들이 그에 맞게 실행 시간이 차등 분배되는 것이 아닌 아예 Blocking 상태에 있음
-> 우선순위가 높은 상태의 프로세스라더라도 I/O 연산을 하기 때문에 높은 우선순위의 프로세스가 Blocking 상태에 들어가면 그 시간동안 낮은 우선순위의 프로세스가 동작
우선순위 기반 방식
우선순위가 높은 프로세스에게 특권을 부여하는 방식
프로세스 스케쥴러의 동작 시점
1. 매 타임 슬라이스마다 동작
하나의 타임 슬라이스가 마무리되면 다른 프로세스로 동작을 이동시켜주어야 함
-> 타임 슬라이스 사이에 컨텍스트 스위칭이 발생
-> 타임 슬라이스 도중에 컨텍스트 스위칭이 발생할 수 있는지는 디자인하기 나름
ex) 타임 슬라이스의 클럭이 짧아서 스케줄러가 자주 동작하는 경우
-> 굳이 타임 슬라이스 사이에 스케줄러의 동작을 허용하지 않아도 충분
ex) 타임 슬라이스의 클럭이 길어서 스케쥴러가 자주 동작하지 않는 경우
-> 상황에 따라서 타임 슬라이스 사이에 스케쥴러의 동작을 허용해야할 경우가 있을 수 있음
-> 기본적으로 스케쥴러의 동작이 적게 일어나면서 효율적인 프로세스 관리가 되는 것이 좋은 스케쥴러
2. 프로세스가 생성 및 소멸될 때마다 동작
생성 : 프로세스의 정보를 확인하고 해당 프로세스를 어떤 상태에 둘 것인가를 위해 스케쥴러가 동작
소멸 : 다른 프로세스를 동작시켜야하기 때문에 스케쥴러가 동작
3. 현재 실행 중인 프로세스가 블로킹 상태에 놓일때 마다 동작
현재 실행 중인 프로세스가 Blocking 상태에 들어가면 우선순위에 따라 다른 프로세스를 동작시키기 위해서 스케쥴러가 동작