適応化

μT-Kernel 2.0はT-Kernel 2.0との互換性を考慮に入れて仕様が策定されている。つまり、μT-Kernel 2.0とT-Kernel 2.0の間でプログラムの移植を行う際に、共通に存在する機能のみを使っていれば再コンパイルだけで移植できるように、また、修正が避けられない場合でもそれが最小限で済むように仕様が策定されている。そのため、μT-Kernel 2.0仕様は多くのシステムを想定したAPIを持っており、必ずしも全てのシステムで必要とは限らない機能を含んでいる。その中には対象のシステムや目的によっては不要な機能も含まれるが、特定の目的に応じたμT-Kernel 2.0仕様のサブセット仕様を定めてしまうと、デバイスドライバやミドルウェア等の流通性や移植性を妨げることになる。このため、μT-Kernel 2.0ではサブセット化のための仕様を原則として定めず、すべてのμT-Kernel 2.0仕様OSは原則としてすべての機能を実装しなければならない方針をとっている。

ただし、MMUやFPUといったハードウェアの機能に強く依存する機能や、デバッグサポートにおけるフック機能などの効率性に影響を及ぼす可能性のある機能については、μT-Kernel 2.0仕様では例外的にサブセット化を許容する方針とした。このサブセット化を許容した上でアプリケーションやミドルウェアの流通性を向上させるためには、それらのソフトウェアからμT-Kernel 2.0実装に関する情報を取得できる必要がある。これを実現するため、μT-Kernel 2.0では新たに「サービスプロファイル」という仕組みを導入し、μT-Kernel 2.0における実装依存性の情報を明確に規定できるようにした。すべてのμT-Kernel 2.0の実装はサービスプロファイルを提供し、サブセット化された機能に関する情報を提供しなければならない。

また、T-Kernel 2.0と同様、ターゲットシステムで必要とされない機能は、簡易な実装とすることが許容される。

「簡易な実装」とは、仕様通りの機能は持っていないが、その機能を呼び出すことで動作が異常になるようなことがない実装ということができる。つまり、大規模のシステムをターゲットとして作成されたミドルウェアが、そのまま実行できるような環境を提供することが重要となる。例えば、MMU(Memory Management Unit)を使用しないシステムでは、μT-Kernel/SMの LockSpace() は次のように実装しても構わない。

#define LockSpace(addr, len)    ( E_OK )