μT-Kernelの概念

基本的な用語の意味

タスクと自タスク

プログラムの並行実行の単位を「タスク」と呼ぶ。すなわち、一つのタスク中のプログラムは逐次的に実行されるのに対して、異なるタスクのプログラムは並行して実行が行われる。ただし、並行して実行が行われるというのは、アプリケーションから見た概念的な動作であり、実装上はカーネルの制御のもとで、それぞれのタスクが時分割で実行される。

また、システムコールを呼び出したタスクを「自タスク」と呼ぶ。

ディスパッチとディスパッチャ

プロセッサが実行するタスクを切り替えることを「ディスパッチ」(または「タスクディスパッチ」)と呼ぶ。また、ディスパッチを実現するカーネル内の機構を「ディスパッチャ」(または「タスクディスパッチャ」)と呼ぶ。

スケジューリングとスケジューラ

次に実行すべきタスクを決定する処理を「スケジューリング」(または「タスクスケジューリング」)と呼ぶ。また、スケジューリングを実現するカーネル内の機構を「スケジューラ」(または「タスクスケジューラ」)と呼ぶ。スケジューラは、一般的な実装では、システムコール処理の中やディスパッチャの中で実現される。

コンテキスト

一般に、プログラムの実行される環境を「コンテキスト」と呼ぶ。コンテキストが同じというためには、少なくとも、プロセッサの動作モードが同一で、用いているスタック空間が同一(スタック領域が一連)でなければならない。ただし、コンテキストはアプリケーションから見た概念であり、独立したコンテキストで実行すべき処理であっても、実装上は同一のプロセッサ動作モードで同一のスタック空間で実行されることもある。

優先順位

処理が実行される順序を決める順序関係を「優先順位」と呼ぶ。優先順位の低い処理を実行中に、優先順位の高い処理が実行できる状態になった場合、優先順位の高い処理を先に実行するのが原則である。

注意補足事項
 

優先度は、タスクやメッセージの処理順序を制御するために、アプリケーションによって与えられるパラメータである。それに対して優先順位は、優先度の指定などに基づき決定される処理の実行順序を示すために用いる概念である。

タスク間の優先順位は、タスクの優先度に基づいて定められる。

APIとシステムコール

アプリケーションやミドルウェアからμT-Kernelの提供する機能を呼び出すための標準インタフェースを総称して、API(Application Program Interface)と呼ぶ。APIは、カーネルの機能を直接的に呼び出すシステムコールのほか、拡張SVCやマクロ、ライブラリ関数として実現されるものも含まれる。

カーネル

狭義の意味のカーネルは、μT-Kernelのうちサブシステム・デバイスドライバとして実現された部分を除いた中核を指す。広義の意味ではμT-Kernel全体を指す。

一般的に、μT-Kernel/OSおよびμT-Kernel/DSは狭義の意味のカーネルに含まれるが、μT-Kernel/SMについてはμT-Kernel/OSのサブシステムの機能を用いたμT-Kernel/OSの拡張機能である実装も考えられる。この場合、μT-Kernel/SMは狭義の意味のカーネルに含まれない。

一方、μT-KernelあるいはμT-Kernel本体と呼んだ場合には、μT-Kernel/OS、μT-Kernel/SM、μT-Kernel/DSを合わせたものを指す。

実装定義

仕様として標準化していない事項である。実装ごとに仕様を規定しなければならない。実装仕様書に具体的な実装内容について明記しなければならない。アプリケーションプログラムにおいて、実装定義の事項に依存している部分は移植性が確保されない。

実装依存

仕様において、ターゲットシステム、または、システムの動作条件によって振舞いが変わる事項であることを示す。実装ごとに振舞いを規定しなければならない。実装仕様書に具体的な実装内容について明記しなければならない。アプリケーションプログラムにおいて、実装依存の事項に依存している部分は基本的に移植する際に変更が必要となる。