いろんなものはつながっている

組み込みOS自作入門(12)タスク間通信

タスク間通信が必要となる理由

組み込みOSでは基本的なサービスもカーネルに内蔵するのではなくスレッドとして実現することが多い。そのため、そのスレッドに対してタスク間通信で処理を依頼する。

複数スレッドがはしっている状態で、あるスレッドがある関数を実行している最中にスレッドが変わってしまい、別のスレッドがさらにその関数を実行してしまう。こうなることで例えば関数内の静的に確保されたバッファが無秩序に編集さえれてしまう。なぜそのようなことが起きてしまうのか、それは限られた資源を複数のスレッドが無秩序に使うから。だからその資源を管理する人がいればよい。そこで、資源を管理するスレッドを立ち上げて、資源を使いたいスレッドはその管理するスレッドにタスク間通信で依頼をする。

メッセージ通信

スレッドのキューのようにメッセージのキューをつくる。送信スレッドはメッセージを作成し、送信のシステムコールをよんでメッセージキューにメッセージを追加する。その際にメッセージがなく、メッセージをすでに待っているスレッドがいる場合は受信処理を行う。

メッセージを受信するときはメッセージキューにたまっているメッセージを取得する。メッセージがひとつもキューにたまっていないときはスレッドをスリープさせてメッセージがキューされるまで待つ。
タスク間通信1

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

スポンサード リンク

カテゴリー

スポンサード リンク