티스토리 뷰
실시간 CPU 스케줄링에는 연성과 경성이 있다. 경성은 지나면 아무의미가 없는 경우이다.
지연시간 최소화
1. 인터럽트 지연시간.
2. 디스패치 지연시간.
이 두가지가 실시간 시스템의 성능을 좌우한다. ( 직접 해볼 수 없기 때문에 와닿지는 않는다 )
인터럽트 지연시간.
- CPU에 Interrupt가 발생한 시점부터 인터럽트 처리루틴이 시작하기까지의 시간.
- 인터럽트 지연시간은 정해진시간보다 작아야한다.
주요 원인은 커널 자료구조 갱신동안 Interrupt가 불가능하다는 점 때문이다.
디스패치 지연시간.
- 스케줄링 디스패처가 하나의 프로세스를 봉쇄하고 다른 프로세스를 시작하는데 걸리는 시간.
( 얘를 최소화하는 가장 효과적인 방법은 선점형 스케줄링을 적용하는 것이다. )
근데 결국 Context Switch인건가.....
실시간 OS의 스케줄러는 반드시 선점을 이용한 우선순위 알고리즘을 지원해야만 한다.
( 이유는 당연하지만 실시간 프로세스가 들어오면 먼저 처리해야되니까 ;; )
때문에 실시간 프로세스들에게는 최상위 우선순위를 부여한다.
1. Rate-Monotic 스케줄링.
- 선점 가능한 정적 우선순위 정책을 이용해 주기 Task들을 스케줄링.
결국 주기가 짧으면 높은 우선순위를 갖는다는 말이다.
- N개의 프로세스에 대해 CPU이용률이 최악의 경우 N(2^(1/N) - 1)이 한계이다.
최적이긴 하지만 프로세스가 증가함에 따라 CPU이용률이 69%까지 감소한다.
프로세스 목록에 따른 CPU점유율 계산과 CPU가 감당할 수 있는지 없는지 꼭 한번 연습해보자.
2. Earliest-Deadline-First 스케줄링.
- 마감시간에 따라 우선순위를 동적으로 부여한다.
EDF에서는 프로세스가 실행가능한 상태가 되면 OS에게 마감시간을 반드시 알려야한다.
그러면 우선순위가 재조정되고 필요에 따라 선점이 이루어진다.
- 매력적인 이유는 이론적으로 최적이다. ( CPU이용률 100% 가능 )
그러나 Switch Context 등의 지연으로 인해 불가능하다.
3. 일정비율의 몫 스케줄링.
- 스케줄러는 모든 응용들에게 T개의 시간 몫을 할당하여 동작.
한 개의 응용이 N개의 몫을 할당받으면, 모든 프로세스 시간 중 N/T시간을 할당 받는 것이다.
- 논리는 뭔가 맞는데 절대 안될거같은 이느낌무엇;
공룡책 연습문제를 한번 더 풀어보면 큰 도움이 될 것이다.
'운영체제(OS)' 카테고리의 다른 글
[OS] Semaphore . ( feat. IPC, mutex ... ) (0) | 2019.12.03 |
---|---|
[OS] "동적연결 & 공유" 라이브러리 (1) | 2019.11.20 |
[OS] 다중 처리기 스케줄링 (0) | 2019.11.04 |
[OS] CPU Scheduling 기본 ( 6가지 ) (0) | 2019.11.04 |
[OS] CPU Scheduling (0) | 2019.09.30 |