ハラパン・メディアテック 代表取締役
宇野 俊夫

 複数のタスクを切り替えながら実行するマルチタスクOSは,カーネル部に組み込まれたスケジューラによって,どのタスクに計算資源を割り当てるかを管理している。OSは複数のタスクを切り替えながら実行するために,タスク固有のCPUコアのレジスタ値などの情報を管理する。タスクの再開に必要なこれらの情報を「コンテクスト」と呼ぶ。OSはタスクごとに「TCB(task control block)」と呼ばれるメモリ領域を確保しており,ここにコンテクストを格納する。OSのスケジューラがタスクを切り替えるときには,現在実行中のタスクのコンテクストをTCBに保存し,次に実行するタスクのコンテクストをTCBから読み出す。この一連の処理が「コンテクスト・スイッチ」である。

 ソフトウエア開発者がタスクの実行順序を制御しやすいように,リアルタイムOSはタスクをさまざまな状態に分けて管理する。例えば「組み込み速修キット」に付属する「Smalight OS」には「Run」「Ready」「Wait」「Suspend」などの状態がある。Runは実行中の状態であり,RunのタスクはCPUコア1個当たりに1個しか存在しない。Ready状態のタスクはいつでも実行可能だが,他のタスクが実行中のためにCPUコアへの割り付けを待っている状態である。Waitは,タスク自身の要求により何らかの事象を待っている状態。一定時間の待機や,他のタスクからの通信待ちが終わったらReady状態になる。Suspendは,他のタスクからの要求によって強制的に中断させられている状態である。

組み込みアカデミートップページへ
『日経エレクトロニクス』2007年1月1日号の同梱別冊「組み込み速修キット」を使って,組み込みシステム開発への理解を深めてもらうための特設サイトです。