見出し画像

イベントドリブン

マルチタスクOSの登場で、「見張り役」はほんの一部で、それ以外は「イベントドリブン」と言われる、「何かあったらタスクが起動される」構造にガラッと変わりました。

各タスクは基本的に”スリープ状態”で文字通り「寝ている」わけですが、他のタスクからメッセージやイベントが届くと、むくっと起き上がり、何が来たのか内容を確認して必要な処理を実施して、用が済んだらまた寝ます。
このような構成にすることで、無駄にCPUパワーを食わないことが可能になるとともに、処理体系が整理しやすくなりました。

あみだくじをイメージしてもらって、縦棒1本を1つのタスクと見なし、他のタスクから用があるとあみだくじの横棒のように横からメッセージが届く。
処理を縦棒の途中に書いて、他のタスクに知らせなくてはならない用事がある場合は、他のタスクに知らせるべく横棒で通知する。
このように書いた図をシーケンス図と言って、今ではオブジェクト指向言語での開発ではかかせないUML(Unified Modeling Language)の1つとなっていますが、オブジェクト指向言語が登場する前からこのような図は書いてました。

ただしマルチタスクはそれまでのプログラム構成から大きく変化があったので、良いことだけではありません。当然注意しなくてはならないことも追加されました。

そのうちの1つが共通変数と共通関数の扱いです。
それまでのアーキテクチャーでは、変数はすべてグローバル変数(共通変数)でしたが、C言語にはローカル変数(静的変数とも言います)の定義が可能になったように、その変数を使える人を限定できる機能があります。
マルチタスクOSと合わせて、このあたりの注意点を次回書きたいと思います。

(次回に続く)

よろしければサポートをお願いします。また、何かコメントがあれば情報交換したいので是非お願いします。