초록
본 논문은 상위 단계의 태스크 스케줄러와 하위 단계의 스케줄링 Framework으로 구성된 기존의 스케줄러 모델[4,5]을 수정하여, 다양한 비주기적 태스크 서버들을 지원할 수 있는 확장된 스케줄러 모델을 제안한다. 제안 모델은 기존 스케줄링 Framework과 태스크 스케줄러를 기반으로 한다. 그러나 비주기적 태스크 스케줄링을 위해 태스크 스케줄러를 다시 주기적 태스크 제어부와 비주기적 태스크 제어부로 분리하였다. 제안 모델은 대부분의 실시간 커널에서 복잡하게 결합되어 하나의 커널 스케줄러를 구성하던 구성 요소들을 기능별로 재구성이 가능하도록 명확하게 구분함으로써, 커널 하부 메커니즘과는 독립적으로 새로운 스케줄링 알고리즘과 비주기적 태스크 서버들을 구현할 수 있게 했다. Real-Time Linux[6]에 제안된 스케줄러 모델을 구현한 후, 이를 기반으로 다양한 스케줄러와 서버들을 시험적으로 구현하여 보았다. 이를 통해 향후 새로운 알고리즘과 서버를 하부이 복잡한 커널 메커니즘 수정 없이 독립적으로 개발할 수 있음을 확인하였다. 또한 여러 성능 실험을 통해 제안 모델을 기반으로 다양한 스케줄러와 서버를 구현한다 해도 실행시의 부하는 크지 않은 반면, 시스템 재구성과 새로운 스케줄러 개발을 효과적으로 지원할 수 있다는 것을 확인할 수 있었다.
This paper proposes an extended scheduler model that is an extension of the existing model proposed already in [4, 5], which consists of upper layer task scheduler and lower layer scheduling framework. However, in order to support aperiodic task scheduling, the task scheduler has been divided into two parts, such as periodic task control component and aperiodic task control component. Thus, the proposed model can support various bandwidth-preserving servers that can service aperiodic tasks. The model distinctly separates a classic monolithic kernel scheduler into several kernel components according to their functionality. This enables system developers to implement a new scheduling algorithm or aperiodic task server independent of complex low kernel mechanism, and reconfigure the system at need. In Real-Time Linux [6], we implemented the proposed scheduling framework representative scheduling algorithms, and server bandwidth-preserving servers on purpose to test. Throughout these implementations, we confirmed that a new algorithm or server could be developed independently without updates of complex low kernel modules. In order to verify efficiency of the proposed model, we measured the performance of several aperiodic task servers. The results showed this the performance of model, which even consisted of two hierarchical components and several modules, didnt have such high run-time overhead, and could efficiently support reconfiguration and scheduler development.