2

シミュレートされた OS の割り込みテーブルを作成する必要があるオペレーティング システム クラスの宿題があります。以前の割り当てから、適切なドライバーをすべてセットアップしました。

私の理解では、トラップのinterrupt_table[x]場合は= 0 、クロック割り込みの場合は= 1などの行に沿って、割り込みタイプの配列が必要です。には、割り込みの各タイプの適切なハンドラーへのポインターが含まれている必要があります。次に、適切なドライバーを呼び出しますか?私はこれを正しく理解していますか?これらのハンドラーを作成するための正しい方向に誰かが私を向けることができますか?xxinterrupt_table

助けてくれてありがとう。

4

3 に答える 3

2

割り込みハンドラに関するほとんどの詳細は、OSによって異なります。ユニバーサルに近い唯一のことは、通常、割り込みハンドラ自体で合理的に回避できる限りのことをしたくないということです。通常は、割り込みを確認し、準備ができたときに処理できるように入力について十分に記録してから戻ります。他のすべては別々に行われます。

于 2011-02-28T04:36:25.027 に答える
1

あなたの理解はかなり良いですね。

このシミュレートされたOSはどの程度シミュレートされていますか?教授自身の設計の「マシン」で完全に実行される場合、提供される割り込み、そこにある可能性のある割り込みをプローブする方法、および割り込みハンドラーが実行する必要のあるタスクの種類について、彼女は間違いなくいくつかの仕様を示しています。

本格的なx86コンピューターなどの場合は、おそらくLinux arch / x86 / pci/irq.cがヒントを提供します。

于 2011-02-28T04:37:01.107 に答える
0

割り込みを受け取ったときに何をするかは、特定の割り込みによって異なります。経験則は、特定の割り込みに対応する必要がある重要なものを見つけてから、それを「ただ」実行し (それ以上でもそれ以下でもない)、できるだけ早くハンドラーから出るというものです。また、割り込みハンドラーはドライバーのほんの一部にすぎません (これが設計方法です)。たとえば、あるシリアルポートで着信バイトの割り込みを受け取った場合、インレジスタからバイトを読み取り、それを「揮発性」変数に置き、物事を巻き上げてハンドラーから抜け出します。残りの部分 (シリアル ポートで着信バイトをどうするかなど) は、ドライバー コードで処理できます。

経験則はそのままです:「それ以上でもそれ以下でもない」

于 2011-02-28T07:30:05.490 に答える