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


9

私は、夏の間、Silberschatz、Galvin Gagne(第8版)によるオペレーティングシステムコンセプトを読むことにしました。オペレーティングシステムに関連する割り込みとその役割-私を混乱させるトピックにたどり着きました。

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

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

回答:


8

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

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


4

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

イベントのシーケンスは通常、次のようになります。

  1. ハードウェアがプロセッサに割り込みを通知します
  2. プロセッサは割り込みに気づき、現在実行中のソフトウェアを一時停止します
  3. プロセッサはOSの対応する割り込みハンドラー関数にジャンプします
  4. 割り込みハンドラーはそのコースを実行し、割り込みから戻ります
  5. プロセッサは、以前に実行していたソフトウェアで中断したところから再開します

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


4

割り込みは、他に何が起こっているかに関係なく、すぐに処理する必要のある「異常な」イベントです。それらは必ずしも予期せぬものや悪いものではないため、引用符で「異常」と言いますが、CPUの観点からは「異常」です。これは、無関係である可能性のあるコードの実行でビジー状態になっているためです。

CPUには、割り込みをリッスンするためのいくつかのメカニズムと、さまざまな種類の割り込みが発生したときに「何をすべきか」を構成するいくつかの方法があります。これにより、オペレーティングシステムは、ハードウェアデバイスが動作するときに通知されるように調整できます(非常に重要なハードウェアクロックを含み、定期的に割り込みを生成するだけです)。CPUの割り込み処理構成により、割り込みが発生するたびに、OS内の指定されたコードが制御を取得します。

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

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

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


3

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

実行するプロセス、サービスを提供するI / Oデバイス、および応答するユーザーがいない場合、オペレーティングシステムは静かに待機し、何かが発生するのを待ちます。ほとんどの場合、イベントは割り込みまたはトラップの発生によって通知されます。トラップは、無効な命令が与えられたときに生成されるハードウェア割り込みであり、OSに制御を返します。

無効な命令の例としては、プログラムが許可を得ずに別のプログラムのメモリ空間にアクセスしようとした場合があります。


あなたが説明したように、割り込みは必ずしも何かが悪いまたは無効である必要はありません

トラップ割り込みについて説明していましたが、エラーや無効な命令が原因で生成されたことがわかりました。通知してくれて
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.