티스토리 뷰

반응형
실시간 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시간을 할당 받는 것이다.

 

 - 논리는 뭔가 맞는데 절대 안될거같은 이느낌무엇;

 

 

 

공룡책 연습문제를 한번 더 풀어보면 큰 도움이 될 것이다.

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함