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

組み込みOS自作入門(13)外部割込み

割り込みで重い処理はしてはいけない

ユーザからのコマンドの受付をシリアル受信割り込みで受けつけてコマンド対応処理を行うという処理はビジーループでシリアル受信をしているよりCPUを効率的に使ってはいるが、コマンド対応処理に時間がかかるとその最中は一切ほかの割り込みを受け付けられなくなってしまう。
外部割込み1

したがってコマンドの対応処理を行う処理用スレッドを別に起動しておいて、そちらにコマンドの文字列を送って処理をすることで、処理に時間がかかっても他の割り込みを受け付けないという状態にはならなくなる。

ただし、本書の実装ではシステムコールは割り込みを使って実行しているので、シリアル受信割り込みからシステムコールをよぶことは多重割り込みの処理となる。しかし、今の実装は多重割り込みは受け付けていない。

そこで、システムコールの処理を割り込みを使ってよぶのではなく、直接よべるようなパスも用意しておいて、割り込み処理からシステムコールの処理が必要な処理はこちらを使うようにする。

コマンド処理のシーケンス図

結果、以下のようにコンソールを利用するためのデバイスドライバを独立したスレッド(コンソール・ドライバ・スレッド)として起動し、入力されたコマンドの処理はまた別の独立したスレッド(コマンドスレッド)で行うようにする。

外部割込み2

関連記事

コメント

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

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

スポンサード リンク

カテゴリー

スポンサード リンク