HARTIKからSHaRKに移行するにあたり、一番大きく変わったのがプラットフォームである。HARTIKはそれ単体でOSとして動作する事を想定した構造(というか、いわゆる普通のRTOS向けのカーネル)だったのに対し、SHaRKではOSLibと組み合わせて利用することを想定している。
OSLibは、ReTiS Lab 准教授のLuca Abeni氏とGerardo Lamastra博士により開発されたもので、kl(kernel library)/libc(Standard C library)/libm(Math library)/xlib(Extender library)という4つのライブラリの形で、一般的なOSから提供されるAPIを網羅することを目的としている。同種のものとしてユタ大学のFlux OS Toolkit、あるいはMITのExoKernelが存在するが、これらよりシンプルでかつ小規模にまとまっている点が特徴とされている。SHaRKは、HARTIKをベースとしたカーネルをOSLibの上に構築することで、OSLibがサポートしているプラットフォームならばどこでも動作する、軽量かつ柔軟性に富んだRTOS環境を提供できる、とする(図2)。
この図2から分かるように、ハードウェア依存部はOSLibに任せている関係で、OSLibが動作することがSHaRKの動作要件となる。実際のプラットフォームとして動作が確認されているのはDOS(MS-DOS or FreeDOS)、Linux、Windowsだが、DOSではdjgpp、WindowsではCygwinを利用するという話なので、別にDOSやWindowsにネイティブ対応というわけではない。逆に言えばdjgppが動けばいいので、恐らくmacOS上でも動作はするだろうと思うのだが、確認できているわけではない。
SHaRKの特徴はカーネルがモジュール構造になっている点にある。先にも少し触れたが、例えばScheduler Moduleとしては、Earliest Deadline First(EDF)、Round Robin、Constand Bandwidth Server(CBS)などがあり、EDFを利用したハードリアルタイム、CBSを利用したソフトリアルタイム、Round Robinベースのノンリアルタイムなど、用途に合わせたスケジューリングが可能だし、なんなら複数搭載させることも可能だ(この場合、Moduleの登録順にPriorityが決まっており、最初に登録したものが最高のLevel 0になる。だからEDF、CBS、Round Robinの順で登録すると、まずEDFでSchedulingが行われ、ここの空き時間にCBSが動き、さらにその空き時間でRound Robinが動くという形になる)。
他にもAperiodic Servers Module、Resource Moduleなど複数の機能がModuleの形で提供されており、この中で必要なものだけを登録してカーネルを構築する仕組みである(さすがに動的なModuleのLoad/Unloadはサポートされていない)。
Copyright © ITmedia, Inc. All Rights Reserved.