組み込みソフト開発のしきいを下げる"リアルタイムOS"のすべて

池崎 史生

tag: 組み込み

技術解説 2001年6月19日

2. OSの機能

●プロセス管理はOSの重要な役割

 プロセスとはUNIX系OSにおける実行単位です.プロセスを管理することは,OSの機能の中でも,もっとも重要な機能の一つです.プロセスを一つ一つ細かく面倒をみる仕事をプロセス管理といいます.

 UNIX系OSでは複数のプロセスを並行して処理することが可能です.一つのプロセス内で実行されるプログラムは,あたかも自分だけが計算機を占有しているかのように振る舞うことができます.

 図5に,プロセスが処理を開始してから終了して消去されるまでの遷移図を示します.

 実行しているプログラム自身はプロセスの外側のことを知っている必要はありません.例えば,「使用可能なメモリが何番地から何バイト使えるか」といったようなことは,UNIX用のアプリケーション・プログラムを組むときに意識する必要はありません.こうした情報の収集管理はメモリ管理の役割です.プロセス管理はそこから得られた情報を利用して,プロセスにメモリを割り当てます.

f05-01.gif
[図5]プロセスの状態遷移を猫の食事にたとえると...

●PCB,コンテキスト,コンテキスト・スイッチ

 プロセスが生成されるときに,プロセス側でどのレジスタを使うか,引き数が格納してあるレジスタは何か,使用しているメモリ番地は何番から何番であるかなどの情報を,UNIX系OSならばPCB(Process Control Block)に格納しておきます.こうした情報は一般にコンテキスト(context)と呼ばれます.プリエンプション可能なマルチタスク処理を実現するためには,こうした情報を待避させておくことが絶対に不可欠です.

 割り込み処理やプロセスの切り替え処理にともなうコンテキスト・スイッチ(context switching:状況の切り替え)のために,こうした情報が必要なのです.コンテキストを保存していない場合,あるいは何らかの理由で待避していたコンテキストが破壊された場合には,割り込まれたときのプロセスは復元不可能になってしまい,システム全体に悪影響を及ぼしかねません.

▼プリエンプション(preemption)

 プロセスを並行して実行するために,スケジューラが決めた時刻にプロセスAからプロセスBへ強制的に切り替えることを「プリエンプションを行う」と呼びます.この複数のタスクの強制的切り替えができるしくみを「プリエンプティブ・マルチタスク(preemptive multi task)」と呼びます.ちなみにWindowsやMacOS(MacOS Xより前のバージョン)はプリエンプションができないので,「ノンプリエンプティブ・マルチタスクOS」です.疑似マルチタスクOSと呼ぶこともあります.

▼PCB (Process Control Block)

 プロセスを実行するために必要な情報をまとめたデータ,あるいはデータ構造のことです.

▼コンテキスト(context)

 「状態語」などと訳されています.PCBや各レジスタの値,スタック・ポインタの値など,プリエンプティブな処理を行うために必要な値です.

▼コンテキスト・スイッチ(context switching)

 「状況の切り替え」と訳されています.プリエンプションを行うとき,プロセスが元の状態で実行できるようにコンテキストを入れ替える処理のことです.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日