T-Kernel

**T-Kernel** (ティー・カーネル) は、オープンソースのリアルタイムオペレーティングシステム(RTOS)である。

## 概要

T-KernelはT-Engine(ティー・エンジン)用の組み込みオペレーティングシステムとして公開されたが、その後のバージョンアップに伴い、T-Engine以外のターゲットハードウェアもサポートするようになった。

T-Kernel 2.0からはQEMUというプロセッサエミュレータにも対応している。
トロンフォーラムが配布するT-Kernel 2.0 Software Packageには、T-Engineリファレンスボードをエミュレーションするように設定されたQEMU(emulator for tef_em1d)が含まれており、PCだけでT-Kernel 2.0用アプリケーションの開発を開始することが可能である。

T-Kernelは、従来からのITRONと同様、スタティックメモリアロケーションによるカーネルベースでのプログラミングが可能。しかし、T-Engine本来の目的である「ミドルウェアの流通」を実現するためには、ダイナミックメモリアロケーションが可能でプロセスベースでのプログラミングも可能なT-Kernel/Standard Extensionを使いこなすことが望まれる。

2013年9月に打ち上げられた国産ロケットイプシロンと、それに搭載された観測衛星ひさきに、μITRONとT-Kernelがそれぞれ使われた。2014年12月3日にH-IIAロケットで打ち上げられたはやぶさ2の制御システムにT-Kernel 2.0が用いられた。

2017年12月11日、μT-Kernel 2.0をIEEEに著作権譲渡契約を結んだと発表された。

2018年9月11日、「μT-Kernel 2.0」ベースの「IEEE 2050-2018」が、IEEE標準として正式に成立した。

2023年5月、IEEEはTRONプロジェクトが提案、作成、公開してきたリアルタイムOSを "TRON Real-time Operating System Family, 1984" の名称でIEEE Milestoneと認定した。認定銘板はTRONプロジェクトのリーダーである坂村健が1984年当時に助手として勤務していた東京大学のキャンパスに設置されている。

## T-Kernelの構造
T-Kernelは機能的に以下の３つの部分に分かれている。
; T-Kernel/OS (Operating System) : リアルタイムOSとしての基本機能を提供する。(μITRONに相当する機能は主にこの部分が受け持っている。)
; T-Kernel/SM (System Manager) : デバイスドライバやシステムメモリの管理など、システム全体の管理機能を提供する。T-KernelにおいてμITRONから拡張された機能となる。
; T-Kernel/DS (Debugger Support) : デバッガなどの開発ツールが使用するための機能を提供する。

## T-Kernelのライセンス
T-Kernelのソースコードは、トロンフォーラムがT-License(ティー・ライセンス)という独自のライセンスに従って無償で配布している。
2022年8月23日現在、T-KernelやμT-KernelなどのソフトウェアはT-License2.2に基づいてオープンソースとして公開されており、商利用を含めて無償で使用することができる。

T-Licenseでもソースコードは自由に改変することが可能であり、個人での利用はもちろん、製品に組み込んでの商利用も無償となっていたが、T-Kernelの"Single One Source"という方針の下、ソースコードの自由な再配布ができない条件になっていた。
一方、T-License 2.0からはオリジナルソースコードの再配布や改変版ソースコードの配布が可能となり、ソースコードの配布に関する自由度が高くなるように改良されている。

## T-Kernelのシリーズ展開
ターゲットハードウェアの多様化に合わせて、マルチプロセッサ／マルチコアに対応したMP T-Kernel(エムピー・ティー・カーネル)、小規模組込みシステムをターゲットとしたμT-Kernel(マイクロ・ティー・カーネル)などのシリーズ展開があり、それぞれの仕様書とソースコードも一般公開されている。
; MP T-Kernel : マルチプロセッサには、非対称型マルチプロセッサ(AMP: Asymmetric Multiple Processor)と対称型マルチプロセッサ(SMP: Symmetric Multiple Processor)がある。AMPを対象としたT-KernelをAMP T-Kernel、SMPを対象としたT-KernelをSMP T-Kernelと称する。両者を合わせてMP T-Kernelと総称する。
; AMP T-Kernel : 非対称型マルチプロセッサ(AMP:Asymmetric Multiple Processor)に対応したMP T-Kernelである。AMPのシステムは複数のプロセッサから構成される(各プロセッサが同じ種類である必要は無い)。AMP T-Kernelは各プロセッサに一つずつ割り当てられるので、システム全体としてプロセッサと同数のAMP T-Kernelが存在することになる。個々のAMP T-Kernelは、システム中の他のAMP T-Kernelと同期や通信を行う機能を有する。AMP T-Kernelのプロセッサ間の同期・通信の機能は、T-Kernel 1.00仕様の同期・通信機能をプロセッサ間で使用可能に拡張した仕様となっている。ユーザ・プログラムはいずれかのAMP T-Kernelにおいて実行され、AMP T-Kernelの同期・通信機能を利用することで、他のAMP T-Kernel上のユーザ・プログラムとの同期や通信を行うことができる。
; SMP T-Kernel : 対称型マルチプロセッサ(SMP:Symmetric Multiple Processor)に対応したMP T-Kernelである。SMPのシステムは複数のプロセッサから構成される。各プロセッサは基本的な機能に相違がなく、同一のプログラム・コードの実行が可能であり、メイン・メモリはすべてのプロセッサから共有可能である。全てのプロセッサは一つのSMP T-Kernelにより管理され、実行するプログラムは各プロセッサに動的に割り当てられる。タスクのスケジューリングやオブジェクトの管理は、SMP T-Kernelによりシステム全体で一元管理される。ユーザ・プログラムは、個々のプロセッサを意識する必要はない。シングルプロセッサにおけるT-Kernelのユーザ・プログラムと同様に、一つのSMP T-Kernel上で動作するプログラムとなる。
; μT-Kernel : 小規模な組込みシステム向けのリアルタイムOSである。μT-Kernel仕様は、小規模な組込みシステム向けに最適化・適応化を行ないやすい仕様となっている一方で、T-Kernelとの互換性を考慮してT-Kernelと共通の機能は同一のインタフェースで定義されており、型の定義もT-Kernelと共通になっている。μT-Kernelのソースコードは、トロンフォーラムのwebサイトにおいてリファレンスコードとして公開されている。μT-Kernel 3.0からはGitHubでもソースコードと仕様書が公開されるようになった。

## 脚注



## 参考文献
* 
* 
* 
* 

## 外部リンク
* , TRON Forum
* トロンフォーラム日本語サイト
* パーソナルメディアT-Engineソリューション
* 
* Sakamura home page
* ITRON Project Archive
* Introducing the μT-Kernel
* Information about T-Engine, T-Kernel, and μT-Kernel Programming