3

OSが割り込みを処理してハードウェアと通信する方法について読んでいましたが、割り込み駆動以外のアーキテクチャがあるかどうか疑問に思っていました。Linuxカーネルに関するRobertLoveの本の中で、彼はLinuxが処理するアーキテクチャのほとんどが割り込み駆動型であると述べていますが、他のアーキテクチャは何ですか?誰かが例をあげることができますか?ありがとう。

4

4 に答える 4

3

あなたの質問に対する簡単な答えは、他のモデルは1つだけであり、それがポーリングであるということです。ポーリングモデルでは、システムはハードウェアに何かが起こったかどうかを繰り返し尋ねます。このモデルの欠点は、CPUが常に要求に忙しく、要求している場合にのみアクティビティについて知ることができることです。それが何か他のことをし始めた場合、それは行動を逃す可能性があります(行動の時に活動を求めていなかったので)。

長い答え:

考えてみれば、実際には、ポーリング(プル)とイベント駆動型(プッシュ)の2つのシステムしか考えられません。前者では、何かが起こったかどうかをハードウェアに尋ね、後者では、ハードウェアが教えてくれます。別の言い方をすれば、前者のエージェンシーはCPU / OSであり、後者のエージェンシーはハードウェアです。2つのパーティがあり、各パーティは2つのことのいずれかを実行できるため、2種類のシステム(プッシュ/割り込みとプル/ポーリング)に加えて、ハイブリッド(割り込み駆動型とポーリングベースの両方)しか使用できません。異なる時間または異なるコンテキストで)。

3つのシステムのいずれかを実装するさまざまな方法を想像することができ、内部で実際に可能なシステムの1つを実装している場合でも、それらを別個のモデルとして数えることができます。しかし、それはあなたが探しているものではないと思います。

于 2012-09-29T01:27:36.397 に答える
2

低レベルでは、ポーリングが主な代替手段です。ただし、アーキテクチャ上、主なアプローチはモノリシックであり、割り込みがデバイスドライバーとマイクロカーネルを直接駆動します。デバイスドライバーは、ハードウェアイベントが発生したときにカーネルから通知を受ける別個のプロセスである場合があります。割り込みは発生しますが、非常に小さなカーネルによって管理されます。これがあなたの見積もりが言及している違いだと思います。ポーリングはもはやあまり一般的ではありません。最もよく知られているマイクロカーネルベースのOSの1つは、教育に使用されるMinixです。

于 2012-09-29T02:47:37.373 に答える
1

私が推測しているのは、そのいくつかのハードリアルタイムシステムでは、非同期割り込みを使用する代わりに、システムは明確に定義された時間(定期的である可能性があります)でI / Oデバイスの状態をチェック(ポーリング)します。デバイスの準備ができていないか、予期しない状態にある場合、システムは障害を報告します。

于 2012-09-29T01:21:27.373 に答える
1

私は、ポーリングアーキテクチャを決定論的なプロセスの方向性と同一視し、割り込みをランダムなプロセスの方向性に駆動します。どちらもそれ自体のメリットが優れているわけではなく、一般的には両方が必要です。これは、外部タスクとインターフェースによって異なります。多くの場合、システムは多くのプロセスの相互作用を許可する必要があり、ランダム性なしで定期的にサービスを提供する必要があるものからランダムなサービス制約を経験しながら、要件を満たすよりもプロセスのコンテキストでランダム性を分割するアーキテクチャを計画することが有益です。不十分な設計では、特定のタイミング制約指向のサービスがランダムに違反され、機能的なジレンマに対するソフトウェアレベルの解決策が残されていません。ランダムプロセスは、離散イベントシミュレーションモデリングを使用してさらに複雑にモデル化されます。

于 2014-08-06T18:45:51.680 に答える