6 章の続き。

割り込みの仕組みはざっとこんな感じ。外部割込みは PIC という装置が CPU とつながっていて、割り込みの種類 (IRQ) は全部で 16 個あると。PIC と CPU はどういう風につながっているかというと、割込み信号ピンが 1 つと、何番が割り込んだを伝える 2 バイトのデータを伝える信号線の 2 種類の信号線。CPU は割込み信号で割り込みの有無を検知し、同時に PIC からの 2 バイトデータで何番の IRQ が割り込んだかがわかるようになっている、という具合みたいです。で、その番号を伝える信号線から送られる 2 バイトのデータは実は CPU の INT 命令そのものになっていて、PIC から送られるデータをそのまま実行してハンドラに飛ぶとのこと。なんかすごい離れ業ですね、コレ。

また、割込みハンドラでは

  1. 全レジスタをスタックに退避
  2. 割込みで行いたい処理を実行
  3. スタックからレジスタの値を復帰
  4. IRETD 命令で終了

の処理を行います。そのうち 1, 3, 4 はアセンブラで実装。2 は普通の C の関数。レジスタの退避 & 復帰は割込み処理が終了した時点で割込み前の状態に戻すためのもの。そして最後の仕上げとしてハンドラを IDT に登録して、マウスとキーボードの割込みマスクを解除し、割込み禁止フラグをクリアすることで、実際に割り込みが起こったときにハンドラが初めて実行されるという具合です。じゃあ、マウスとキーボード以外の割込みはどうするかというと、マスクして CPU が割込みを受け付けないようにしておきます。そうしないと、静電気などのノイズで割り込みが入ったときにハンドラが登録されてないとかで変なことになりますので注意が必要とのこと。

これで、やっとキーボード割り込みを受け付けることができました。長かった…。でも、まだマウスの割り込みは受け付けられず。IRQ12 が上がってきてない模様。

6 章終了。ハードウェアの話も出てきましたし、この章から急に難易度が上がりました。

トラックバック(0)

このブログ記事を参照しているブログ一覧: 30日で作る自作OS 9/30 - 割込み処理受け付け開始

このブログ記事に対するトラックバックURL: http://tsuyuguchi.com/mt/mt-tb.cgi/188

最近の画像

Zero History - ギブスンの新作が 9 月に発売 -
虐殺器官
ドミニオンのランダマイザアプリ、dominion minion が日本語対応!
ハイペリオンの没落 ~ 完結...でもまだ続く~
ハイペリオンの没落 ~ 完結...でもまだ続く~
ハイペリオン - 長大な叙事詩 SF のスタート -
ハイペリオン - 長大な叙事詩 SF のスタート -
「都市と星」 - 10億年と言われてもよく分からない -
「星を継ぐもの」 - 良い Sci-Fi -
トールサイズのニューロマンサーを買った
虎よ、虎よ! - 主人公フォイルの執念の物語 -

私の本棚

 

自転車走行距離

自転車走行距離

Flickr Photos

FlickrPhotos

なかのひと

Y!ログール

このサイトについて

2015年2月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28

アーカイブ

My Update

  • Loading...

その他

あわせて読みたいブログパーツ