실시간 시스템에서 작업들은 주기적 작업(periodic tasks)과 비주기적 작업(aperiodic tasks)으로 나뉜다. 이러한 작업들을 효율적으로 처리하기 위해서는 각 작업의 특성을 이해하고, 적절한 스케줄링 알고리즘을 적용해야 한다. 이 장에서는 주기적 작업과 비주기적 작업의 차이점, 각 작업의 특성, 그리고 Preempt RT 환경에서 이들을 처리하기 위한 방법에 대해 상세히 설명한다.

주기적 작업 (Periodic Tasks)

주기적 작업은 일정한 주기를 가지고 반복적으로 실행되는 작업이다. 예를 들어, 센서 데이터를 주기적으로 읽어오는 작업이나 특정 시간 간격마다 시스템 상태를 점검하는 작업이 이에 해당한다. 주기적 작업의 중요한 속성은 다음과 같다.

주기적 작업은 일반적으로 타임드 이벤트 기반 스케줄링에 의해 처리되며, 대표적인 스케줄링 알고리즘으로는 Rate Monotonic Scheduling (RMS)과 Earliest Deadline First (EDF) 등이 있다.

Rate Monotonic Scheduling (RMS)

RMS는 작업의 주기 T_i에 따라 우선순위를 할당하는 고정 우선순위 스케줄링 알고리즘이다. 주기가 짧은 작업일수록 높은 우선순위를 부여받는다. RMS에서 시스템이 스케줄러블(schedulable)하려면, 다음 조건을 만족해야 한다:

\sum_{i=1}^{n} \frac{C_i}{T_i} \leq n(2^{\frac{1}{n}} - 1)

여기서 n은 시스템에 존재하는 주기적 작업의 수를 나타낸다. 이 부등식은 Liu와 Layland에 의해 도출된 것으로, 주기적 작업들이 충돌 없이 스케줄링될 수 있는지 판단하는 중요한 기준이 된다.

비주기적 작업 (Aperiodic Tasks)

비주기적 작업은 특정 주기를 가지지 않고, 외부 이벤트나 특정 조건이 발생할 때 실행되는 작업이다. 사용자 입력, 네트워크 패킷 수신, 또는 비정기적으로 발생하는 하드웨어 인터럽트가 여기에 해당한다. 비주기적 작업의 주요 속성은 다음과 같다.

비주기적 작업은 주기적 작업과 달리 스케줄링에 있어 불확실성이 크기 때문에, 이를 효율적으로 처리하기 위한 다양한 알고리즘이 개발되었다. 가장 일반적인 방법 중 하나는 서버 기반 스케줄링이다.

서버 기반 스케줄링

비주기적 작업을 처리하기 위해 주기적 작업과 함께 스케줄링할 수 있도록 하는 방법으로, 서버 개념이 사용된다. 서버는 비주기적 작업을 처리하기 위해 주기적 작업과 동일한 형태로 스케줄링된다. 대표적인 서버 기반 스케줄링 알고리즘으로는 다음이 있다.

주기적 작업과 비주기적 작업의 상호작용

실시간 시스템에서는 주기적 작업과 비주기적 작업이 공존할 수 있으며, 이들 간의 상호작용이 시스템 성능에 중요한 영향을 미친다. 특히, 비주기적 작업이 주기적 작업의 실행을 방해할 수 있기 때문에, 이러한 상호작용을 신중히 관리해야 한다.

비주기적 작업의 우선순위 관리

비주기적 작업은 종종 주기적 작업보다 낮은 우선순위를 가지지만, 상황에 따라 즉시 처리되어야 하는 경우도 있다. 이를 위해 우선순위 상속(priority inheritance)과 우선순위 역전(priority inversion) 방지 기법이 사용될 수 있다.

주기적 작업과 비주기적 작업의 스케줄링 전략

주기적 작업과 비주기적 작업을 동시에 처리하기 위한 스케줄링 전략은 다양한 방법으로 구현될 수 있다. 대표적인 전략으로는 다음이 있다.

비주기적 작업의 처리 성능 분석

비주기적 작업의 처리 성능을 분석하기 위해 주요 지표로 응답 시간(response time)스루풋(throughput)이 사용된다.

응답 시간과 스루풋은 상호 의존적인 관계에 있으며, 스케줄링 알고리즘의 선택에 따라 이들 지표가 크게 달라질 수 있다. 적절한 스케줄링 기법을 적용하여 비주기적 작업의 응답 시간을 최소화하면서도 스루풋을 최대화하는 것이 중요하다.


주기적 작업과 비주기적 작업의 처리는 실시간 시스템 설계에서 중요한 부분이다. 두 작업의 특성을 이해하고, 적절한 스케줄링 알고리즘을 선택하는 것은 실시간 시스템의 안정성과 성능을 보장하는 데 필수적이다. 이 장에서는 Preempt RT 환경에서 주기적 작업과 비주기적 작업을 효과적으로 처리하기 위한 다양한 기법과 전략을 논의하였다. 이를 바탕으로 실시간 애플리케이션의 설계와 구현에 있어 올바른 결정을 내릴 수 있을 것이다.