1時間でわかる組込みリアルタイムOS


TOP | NEWS | TRON PROJECT | TRON ASSOCIATION | CALENDARS | LINK | TRONSHOW | TRON 関連資料

トップ > 1時間でわかる組込みリアルタイムOS−目次 > Chap.4

Chap.4 リアルタイムOS下でのプログラミングスタイル

(1)サービスコール型プログラミング

 サービスコールとは?

OSのもつ機能を要求するときに使うコマンドです。コマンドには相手先を指定したり、時間などの値を指定します。コマンドに応じて指定するものが異なります。μITRONではVer.3まではシステムコールと呼ばれていました。

 サービスコール型プログラミングとは?

OSの機能をコマンドで要求しながら処理を行うプログラミング方式です。コマンドで要求することをサービスコールの「発行」といいます。
  C言語では、決められたサービスコール用の関数を引数付きでコールすることでOSに処理を要求します。関数の戻り値としては要求の結果(依頼がOKかNGかを表す数値で返す)や割り当てられたID番号などです。サービスコールによっては引数で指定したメモリ番地(アドレス)にデータを入れて返すものもあります。

  通常の関数と異なるところは、呼び出された関数の処理が終了しても呼び出し元に戻るとは限らない点です。自タスクを待ち状態にしたり、休止状態にするサービスコールを発行した場合はOSのスケジューラが起動して他のタスクに実行が移ります。待ちが解除されて次にディスパッチされるまでは発行したサービスコールから復帰できません。逆に言えば、サービスコールを発行せずに処理を続ける限りは他のタスクに実行が移ることはありません。なぜならスケジューラが機能できないからです。

  実行中タスクでサービスコールを発行しなくとも唯一他のタスクに実行が移る場合があるのは、割込みハンドラからサービスコールが発行された時です。割込みをマイクロプロセッサに対して禁止しない限りは、強制的に割込みハンドラに実行が移ります。ただし、現在実行中のタスクの優先度が他よりも高ければ他のタスクに実行が移ることはありません(割込みハンドラとサービスコールの処理は実行されますが最優先タスクのため再びディスパッチされます)。 この場合、割込みハンドラから起動されたタスクは、実行の待ち行列に入ります。



 


トップ > 1時間でわかる組込みリアルタイムOS−目次 > Chap.4 前のページ | 次のページ



TOP | NEWS | TRON PROJECT | TRON ASSOCIATION | CALENDARS | LINK | TRONSHOW | TRON 関連資料

Copyright 1999-2004 TRON ASSOCIATION
webmaster@tron.org

1時間でわかる組込みリアルタイムOS