割り込みは、出力の準備ができていること、または入力が完了したことを示すために使用されていますか?[閉まっている]


-2

オペレーティングシステムの概念:

I / O中、さまざまなデバイスコントローラーは、サービスの準備ができると割り込みを発生させます。これらの割り込みは、

  • その出力が完了した、または
  • 入力データが利用可能である、または
  • 障害が検出されたこと。

割り込みは、出力の準備ができていること、または入力が完了したことを示すために使用されていますか?

そうでない場合、他の方法でそれらを示す必要がありますか?

ありがとう。


1
入力が完了したらどういう意味ですか?割り込みは、あらゆるデバイスから CPU への信号であるため、「メモリ位置xのバッファをディスク/ネットワーク/紙に書き込んだので、再び他の目的に使用できます」と言う場合があります。一方、「出力の準備ができた」とは、CPUがデバイスに「位置xのデータを取得してディスク/ネットワーク/紙に送信し、そのメモリを再利用できるようになり次第通知してください」というCPUです。この種の信号は、割り込みではなくIOポートによって行われます
ハーゲンフォンエイ

回答:


1

最も基本的なレベルでは、割り込みは非常に単純な「ちょっと!チェックしてください」というメッセージをあるものから別のものに伝えるために使用されます...

ハードウェア(例:電圧が状態を示す)またはソフトウェア(例:ユーザーがCtrl+を押すC)の両方が可能です。

いくつかの割り込みは本当に重要であり、すぐに処理する必要がありますが、他の割り込みはそれほど重要ではなく、しばらく処理されない場合があります。

割り込みのすべての使用をリストすることは不可能です。これは、一部には、新しいテクノロジーが新しい機能をもたらし、割り込みの新しい理由をもたらす可能性が高いためです。


集積回路内では、次のような非常に具体的な意味を持つ割り込みが発生することがよくあります。

  • UART(すなわち:シリアルポート)
    • フレームが受信されました-これは、ホストが周辺機器のレジスタからそのフレームのペイロードを取得し、別のフレームが到着する前にそれを保存し、最初のフレームを上書きする必要があることを意味します。
    • フレームが送信された-これは、ホストが新しいデータをペリフェラルのレジスタに送信できるようになり、別のフレームが送信されることを意味します
  • タイマー
    • PWM
      • カウンターがラップしたか上限に達した-PWM信号をリセットするために使用
      • カウンタが比較値に達しました-PWM信号を設定するために使用されます
    • スケジューリング- 実行中のタスクを横取りし、別のタスクをスケジュールするために使用
  • ゼロによる除算-何かが宇宙を破裂させようとし、停止しました...この割り込みにより、整頓または是正措置(たとえば、アプリケーションの終了)が可能になります。

別個の(別個の)コンポーネントが通信する必要がある場合、主にそうでなければ必要となる相互接続およびI / Oピンの数のために、割り込みは解読するために何らかの相互作用を必要とする可能性があります。例えば:

  • リアルタイムクロックは -割り込みを受信すると、ホストはそれのレジスタの一つに質問し、「と判断する場合がありますアラーム2は」トリガされています。この結果はシステムによって異なります。
  • サウンドカード
    • サウンドカードには、ホストがカードを無人で再生するオーディオブロックを生成できるようにするバッファが含まれている場合があります。このバッファが少なくなった場合、ホストはより多くのデータを提供する必要があります。そうしないと、バッファはアンダーラン(不足)します。
    • 割り込みが時間内に処理されない場合、ここで強制的なシステムクラッシュによって示されるように、オーディオのスニペットが繰り返し聞こえる場合があります

多くの場合、割り込みはソフトウェアによって無視され、代わりにダイレクトメモリアクセスモジュールによって処理されます。DMAを使用すると、ソフトウェアはハードウェアの低レベルの処理を無視できます。たとえば、各シンボルではなく、パケット全体が到着したときに通知されます。


1

デバイスは割り込みを使用して、あらゆる種類のイベントを通知できます。実際、デバイスまたはデバイスコントローラーの状態の変化は、割り込みを介してホストCPUに報告できます。それはすべて、デバイスのハードウェアとファームウェアの設計者次第です。

(そして、少なくとも、ドライバーを書かなければならない貧しいシュマックの意見を聞くことを望みます。非常に多くのデバイスがそのような入力なしで設計されており、厄介で非効率なドライバー設計を必要とします。デバイスのホストインターフェイス(割り込み構造を含むが、これに限定されない)がドライバーで実行できることと実行できないことを意識せずに設計されたため、デバイスの機能の一部を最大限に使用できない場合。しかし、私は脱線します。)

あなたが引用した資料はそれが行く限り正しいですが、私には非常に単純な見方であるように思われます。

「出力の準備ができている」と「出力が完了している」の違いはわかりません。(プリンタの出力トレイからピックアップする準備はできていますか?)同様に、「入力データが利用可能」と「入力完了」は同じものに近いように聞こえます。ただし、おそらく、ドライバーの側で必要な作業が異なることを意味します。私にとって、「入力完了」とは、着信データがホストメモリにあり、ローカルスレッドのI / O操作が完了できることを意味しますが、「入力データが利用可能」とは、おそらくドライバーがデバイスからデータを移動する必要があることを意味しますメモリ内バッファへのインターフェース。

しかし、これは単なるセマンティクスです。ドライバーライターとして、デバイスホストインターフェイスの仕様を注意深く読んで、特定の割り込みが実際に何を意味するのか、そしてそれに対して何をすべきかを知る必要があります。場合によっては、ファームウェアコードを読んだり、論理図を調べたりする必要さえあります。(それはエッジトリガーまたはレベルトリガーのフリップフロップですか?デバイスエンジニアは時々奇妙な考えを持っています!しかし、私は再び脱線します...)

もう少し複雑な例として、FIFOを備えた通信インターフェースを考えます。通常、ホストへの過度の割り込みを避けたいと思います。たとえば、パケットごとの割り込みが多すぎる可能性があります。したがって、このデバイスでは、「FIFO」(先入れ先出し)インターフェースを介して送信される一連のバッファーについて通知できる場合があり、デバイスはそれらをすべてワイヤ上で移動させます。

ただし、すべてのバッファが完了した場合にのみ割り込みが必要になるとは限りません。たとえば、バッファが20%または10%いっぱいになったときに通知を受けた方が良いでしょう。このような割り込みが発生したら、FIFOにバッファを追加します(もちろん、いっぱいになったら停止します)。FIFOが空のときにのみ割り込みが発生した場合、送信のために次のバッファを取得する前にわずかな遅延が発生し、スループットが低下します。FIFOが空になったときに割り込みを与えることにより、その遅延をなくすことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.