본문 바로가기

전공/운영체제

[운영체제] CPU 스케줄링: 실시간 CPU 스케줄링 - (1)

 

실시간 CPU 스케줄링(Real-Time CPU Scheduling)


 

실시간 시스템(real-time system)의 두 가지 종류

 

1. 연성 실시간 시스템(soft real-time system)

 

중요한 실시간 프로세스가 언제 스케줄링되는 지를 보장하지 않는다.

 

중요한 프로세스가 덜 중요한 프로세스보다 우선적으로 스케줄링된다는 것만 보장한다.

 

 

2. 경성 실시간 시스템 (hard real-time system)

 

태스크는 반드시 마감시간(deadline)까지 서비스되어야 한다는 것을 보장한다.

 

 

 

 

 

 

지연시간 최소화(Minimizing Latency)


 

- 실시간 시스템의 event-driven 특성

 

실시간 시스템은 실시간으로 발생하는 이벤트를 기다린다.

 

이때, 이벤트는 타이머 만료와 같은 소프트웨어적 이벤트이거나, 원격 제어 장치가 장애물을 만났을 때와 같은 하드웨어적 이벤트이다.

 

이벤트가 발생하면, 시스템은 최대한 빨리 응답과 서비스를 해야한다.

 

 

 

- 이벤트 지연시간(event latency)

 

이벤트 지연시간은 이벤트가 발생해서 그에 맞는 서비스가 수행될 때까지의 시간을 말한다.

 

일반적으로 이벤트가 다르면, 그에 따른 지연시간도 다르다.

 

 

다음의 두 가지 유형의 지연시간이 실시간 시스템의 성능에 영향을 준다.

 

1. 인터럽트 지연시간(interrupt latency)

 

CPU에 인터럽트가 발생한 시점부터 해당 인터럽트 처리 루틴(ISR)이 시작하기까지의 시간을 말한다.

 

실시간 태스크가 즉시 수행될 수 있도록 인터럽트 지연시간을 최소화하는 것이 중요하다.

 

경성 실시간 시스템의 경우, 인터럽트 지연시간은 단순히 최소화가 아닌 엄격한 요구 사항을 충족해야 한다.

 

인터럽트 지연시간에 영향을 주는 요인 중 하나는 커널 데이터가 업데이트되는 동안 인터럽트가 불가능한 시간이다.

 

따라서 실시간 OS는 인터럽트 불가능 시간을 매우 짧게 해야 한다. 

 

interrupt latency - operating system concepts by Silberschatz A. & Galvin P. B. & Gagne G.

 

 

2. 디스패치 지연시간(dispatch latency)

 

디스패처가 한 프로세스를 멈추고 다른 프로세스를 시작하기 위해 필요한 시간이다.

 

CPU를 즉시 사용해야 하는 실시간 태스크가 있다면 실시간 OS는 디스패치 지연시간을 최소화해야 한다.

 

디스패치 지연시간을 최소화하는 가장 효과적인 방법은 선점형 커널을 사용하는 것이다.

(선점형 커널 - 프로세스가 커널 모드에서 수행되는 동안 선점되는 것을 허용한다.)

 

dispatch latency - operating system concepts by Silberschatz A. & Galvin P. B. & Gagne G.

 

디스패치 지연시간의 충돌 단계(conflict phase)는 두 가지 요소로 구성되어 있다.

 

1. 커널에서 동작하는 프로세스에 대한 선점

2. 높은 우선순위의 프로세스가 필요한 자원을 낮은 우선순위의 프로세스 자원이 방출

 

디스패치 지연시간의 디스패치 단계(dispatch phase)에는 우선순위가 높은 프로세스를 가용한 CPU에 스케줄링한다.