2010-12-04 1 views
2

申し訳ありませんが、これは適切な場所であるかどうかはわかりませんでしたが、 :)誰かが私が把握できないオペレーティングシステムの概念を手伝ってもらえますか?割り込みは

私は現在オペレーティングシステムの理論でモジュールを作成していますが、私は把握できないいくつかの概念を持っています。これは質問するのに適した場所でしょうか?

私の主な質問は、割り込みに関するものです。 CPUが割り込みを検出したとき、私はこの割り込みがどこから発生したのかを知る必要があることを理解しています。私の理解は次のようになります。これが正しいか誰にでも教えてもらえますか?

割り込みが発生した場所をCPUが検出するために、すべてのオブジェクトを照会してソースを識別できますが、これらのI/Oベースの質問には長い時間がかかります。代わりに、割り込みサイクルを使用し、データバス上に割り込み識別子が必要です。それが8ビットデータバスである場合、256レベルの割り込みレベル(すなわち、2^8)が存在する。

割り込みサービスルーチン(ISR)は、可能なすべての割り込みレベルに対して書き込まれ、プロセッサによって標準化された固定位置(割り込みベクタ)のテーブルに格納されます。

割り込みサイクルの一部として受け取った割り込みレベル識別子は、割り込みベクタへのインデックスとして使用されます(誰かが壊れる可能性がありますか?これは少し喜んでください?)。私の理解では、割り込みレベルの識別子はCPUに渡され、割り込みベクトルをポイントするために使用されます。

また、割り込みが "サービス"されているとはどういう意味ですか?

ありがとう、長い段落を申し訳ありません、私は少しこれの多くの側面で混乱しています!

答えて

3

割り込みの仕事の大部分は、CPUが他のデバイス(パケットを受信したネットワークカードなど)によって割り込まれることを可能にすることです。私はこのユースケースを最初に理解する方が簡単だと分かります。

ネットワークカードは、データを受信したことをCPUに伝える必要がある場合、CPU上の「割り込みピン」に番号を送信します。通常は8ビットの数値になります。番号は「割り込みレベル」と呼ばれます。

CPUは、割り込みに対処するために何らかのコードにジャンプし、その後何をしていたかに戻るような方法で構築されています。これはビルトインのハードウェアなのでシンプルでなければなりません。各割り込みレベルと呼び出し先のファンクションのアドレスが一致するテーブルがあります。その機能は「割り込みサービスルーチン」と呼ばれます。あなたが言うように、このテーブルの場所は標準化されています。これは、テーブル内を検索するハードウェアであるため(そのアドレスはチップ内でハードコードされているためです)。

割り込みを処理するということは、割り込みに関連付けられたコードを実行することを意味します。ネットワークカードの場合は、ネットワークカードからパケットを読み取ってメモリにコピーすることを意味します(おそらく、ネットワークカード自体のメモリは制限されています)。あなたは "割込みサイクルの一部として受け取った割込みレベル識別子が割込みベクトルへのインデックスとして使用される"について尋ねる。それはちょうど私たちがしたことを言う別の方法です:カードからの信号(割り込みレベル)は、CPUがテーブル内のインデックス( "割り込みベクタ")として使用されます。そこで、実行するコードのアドレスを見つけます。そのコードは、ネットワークカード用のデバイスドライバ(またはおそらくOS)によってそこに置かれていました。

ISR関数が復帰すると、CPUはレジスタを割り込み受信時の状態に戻し、何も起こらなかったかのように実行を再開できます。これを考える方法の1つは、割り込みがCPUが複数のプログラムを一度に実行できるようにするメカニズム(プログラムとネットワークカードドライバ)です。

割り込みと同じ概念を「ソフトウェア割り込み」に使用することもできます。ここでは、CPU外部からの信号ではなく内部からの信号です。

0

あなたの質問には確かに多くの質問があります。 私はそのうちの1つに取り組ませてください。

割込みはservであると言われています。オハイオ州は、私が犬を退出させなければなりません。

私の愚かな例では、私はドアで傷ついている犬に割り込まれました。私は何をやっているのか(単語サービスの入力中)を止め、犬を外に出してから、タイピングを再開しました。

犬の割り込み要求を処理しました。

関連する問題