オペレーティングシステムのコンテキストでの割り込みとはどういう意味ですか?

cs.stackexchange https://cs.stackexchange.com/questions/1700

質問

私は読むことにしました オペレーティングシステムの概念 Silberschatz、夏のガルビン・ガニ(第8版)。私は私を混乱させているトピックに到達しました - 中断とそれがオペレーティングシステムに関連する彼らの役割。

テキストによれば、オペレーティングシステムは「init」などの最初のプロセスを開始し、「イベント」が発生するのを待ち、このイベントは通常割り込みによって通知されます。テキストには、割り込みはハードウェアまたはソフトウェアのいずれかから生じることがあると述べています。これは、もう少し詳細にどのように機能しますか?オペレーティングシステムは割り込みによって駆動されていますか?

私はちょうどいくつかの全体像の理解を探しています。

役に立ちましたか?

解決

OSが「init」などのプロセスを実行すると、メモリ、I/Oデバイスなど、他のサブシステム/デバイスマネージャーなどに信号を送信します。 OSは準備ができているか、新しい入力などがあることです。したがって、INITの間に、OSはサブシステムが準備が整うのを待っており、これらのサブシステムからの割り込みはまさにそれを示しています。それが「イベント」が関連するものです。

ハードウェアまたはソフトウェアの割り込みに関しては、ハードウェア割り込みはハードウェアから来るものです。例えば。キーボードなどのI/Oデバイス。ハードウェア割り込みにより、プロセッサは状態を保存し、割り込みハンドラーの実行を開始します。一方、ソフトウェア割り込みは命令セットの命令であり、プロセッサはコンテキストスイッチとも呼ばれるユーザースーパーバイザーからの特権レベルを変更します。これらの詳細については、後で教科書で説明します。

他のヒント

割り込みにより、オペレーティングシステムは、マウスクリックなどの外部イベントに注意することができます。例外としてよく知られているソフトウェア中断により、OSはコード実行からのdivide-byゼロのエラーなどの異常なイベントを処理できます。

イベントのシーケンスは通常、次のようなものです。

  1. ハードウェアは、プロセッサへの割り込みを信号します
  2. プロセッサは割り込みに気付き、現在実行中のソフトウェアを一時停止します
  3. プロセッサは、OSの一致する割り込みハンドラー機能にジャンプします
  4. 割り込みハンドラーがコースを実行し、割り込みから戻ります
  5. プロセッサは、以前に実行されているソフトウェアで中断された場所で再開します

オペレーティングシステムの最も重要な割り込みは、タイマーティック割り込みです。タイマーTIC割り込みにより、OSは現在実行中のユーザープロセスから定期的に制御を取り戻すことができます。 OSは、別のプロセスをスケジュールし、同じプロセスに戻る、ハウスキーピングなどを行うことを決定できます。タイマーティック割り込みは、先制マルチタスクの概念の基礎を提供します。

割り込みは、処理する必要がある「珍しい」イベントです すぐに, 、他に何が起こっているかに関係なく。引用符では「珍しい」と言います。なぜなら、それらは必ずしも予想外でも悪いことでもないからではなく、CPUの観点からは「珍しい」ことは、無関係のコードを実行するのに忙しい間、「ちょうど起こる」からです。

CPUには、割り込みを聞くためのいくつかのメカニズムがあり、さまざまな種類の割り込みが発生したときに「何をすべきか」を構成する何らかの方法があります。これにより、オペレーティングシステムは、ハードウェアデバイスが物事を行うときに通知されることを手配できます(通常の間隔で中断を生成するだけで非常に重要なハードウェアクロックを含む)。 CPUの割り込み処理構成を介して、OSで指定されたコードは、割り込みが発生するたびに制御を獲得します。

割り込みハンドラーが実行を開始すると、コンピューターは非常に不快な状態(アプリケーションプログラマーに対して)にあります。マシンは何か他のものをするのに忙しかった(それは なんでも)そして今、OSは「何かが起こった」ことを通知されています。マシン内のどこからでも割り込みを実際に処理するために必要な他の情報を収集し、CPUで実行されている「可能性がある」ことを邪魔することなく、必要な処理を行う必要があります。 OSが現在実行されているアプリケーションプロセスを切り替えたい場合は、後でそれを復元できるようにコンテキストを十分に保存する必要があります(もう一度、そのコンテキストを邪魔することなく)。その文脈での実行。

前述のように、割り込みは、ハードウェアデバイスから通知を取得するために使用されます(定期的にチェックすることは唯一の代替手段です)、時間を追跡し、アプリケーションプロセスからコントロールを取り戻す保証機会を取得します(どのアプリケーションが実行されているかを切り替えるため) 、無効な命令を実行する申請プロセスから回復し、またアプリケーションがOSのリクエストを実行できるようにするために回復します。これらは最後のシステム呼び出しと呼ばれます。アプリケーションがマシンと互いを台無しにするのを防ぐために、通常、マシンを「ユーザーモード」でマシンで実行します。これにより、アプリケーションは基本的に読み取りと書き込み(仮想)メモリ以外のものを既に割り当てていません。これは、それを意味することを意味します なんでも その他(ファイルの読み取り/書き込み、メモリの詳細、デバイスへのアクセスなど)アプリケーションは、システムを呼び出す必要があります。基本的に、OSが探していることがわかっている場所で何をしたいのかについての情報を残し、適切な種類の割り込みを引き起こすCPU命令を実行することにより、そうします。 OSは、アプリケーションが何をしようとしているかを確認し、その要求を実行する必要があるかどうかを判断できます。これにより、OSがプロセスの外部に影響を与えるすべてのことを行おうとするプロセスに関与することが保証されます。これは、アクセスポリシーを実施できる唯一の方法です。

したがって、本質的に、はい、OSは割り込みによって駆動されます。 「要約」OSは、マシンを「通常の動作」状態にブートストラップし、ある時点で「通常の」プロセスにコントロールします。通常の状況では、OSは割り込みを処理することによってのみ制御を取り戻します。しかし、割り込みがなければ興味深いものはほとんどないので、OSは基本的に常にすべてを制御しています。

オペレーティングシステムは、割り込みによって駆動されます。この意味は:

実行するプロセスがなく、使用するデバイスがなく、応答するユーザーがいない場合、オペレーティングシステムが静かに座って、何かが起こるのを待っています。イベントは、ほとんどの場合、割り込みまたはトラップが発生することによって合図されます。トラップは、無効な命令が与えられたときに生成されるハードウェア割り込みです。その後、OSへの制御を返します。

無効な指示の例は、プログラムが許可を与えずに別のプログラムのメモリスペースにアクセスしようとしている場合です。

ライセンス: CC-BY-SA帰属
所属していません cs.stackexchange
scroll top