2

申し訳ありませんが、ここで質問するのが適切かどうかわかりませんでしたが、受け入れられることを願っています。そうでない場合は申し訳ありません。:)

私は現在、オペレーティング システム理論のモジュールを行っていますが、理解できない概念がいくつかあります。質問するのに適切な場所でしょうか?

私の主な質問は割り込みについてです。CPU が割り込みが発生したことを検出すると、この割り込みが発生した場所を特定する必要があることを理解しています。私の理解は次のとおりです。誰かがこれが正しいかどうか教えてください。私の知識のいくつかのギャップを説明してください。

CPU が割り込みの発生場所を検出するには、すべてのオブジェクトにクエリを実行してソースを特定できますが、これらの I/O ベースの質問には時間がかかります。代わりに、割り込みサイクルを使用し、データ バス上の割り込み識別子を期待します。8 ビット データ バスの場合、256 の割り込みレベル (つまり 2^8) があります。(どうしてこれなの?)

そのため、割り込みサービス ルーチン (ISR) は、考えられるすべての割り込みレベルに対して記述され、プロセッサによって標準化された固定位置 (割り込みベクトル) のテーブルに格納されます。私のメモには、「住所を取得する前に場所を知っておく必要があります」と書かれています(これはどういう意味ですか?)

割り込みサイクルの一部として受信された割り込みレベル識別子は、割り込みベクトルへのインデックスとして使用されます (誰かがこれを少し分解してもらえますか?)。私の理解では、割り込みレベル識別子である値がCPUに渡され、割り込みベクトルを指すために使用されます。

また、割り込みが「処理された」と言われるとき、それはどういう意味ですか?

どうもありがとうございました。長い段落で申し訳ありません。これについて多くの点で少し混乱しています。

4

2 に答える 2

3

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

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

CPU は、何らかのコードにジャンプして割り込みを処理し、それから元の処理に戻ることができるように構築されています。これは組み込みのハードウェアであるため、単純にする必要があります。各割り込みレベルと呼び出す関数のアドレスを一致させるテーブルがあります。その機能を「割り込みサービスルーチン」と呼びます。あなたが言うように、このテーブルの場所は標準化されています。これは、テーブルを検索するのはハードウェアであるためです (したがって、そのアドレスはチップにハードコードされています)。

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

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

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

于 2010-12-04T00:53:47.073 に答える
0

確かに、あなたの質問には多くの質問があります。それらの1つに対処しましょう。

割り込みは、割り込みが完了した「作業」が完了すると、サーブ、OH HANG ON、I HAVE TO LET THE DOG OUT. と呼ばれます。

私のばかげたサンプル ケースでは、犬がドアをひっかくのに邪魔されました。私は自分がしていたことを止め(サービスという言葉を入力している最中に)、犬を外に出してから、入力を再開しました。

私は犬の割り込み要求を「処理」しました。

于 2010-12-04T00:57:38.390 に答える