BIOS割り込みは、予約済みのハードウェア割り込みとどのように競合しませんか?

source_indent

カーネルブートローダーコードのセクションを読んでいます(スタンフォードのCS140 Pintos OSから):

# Configure serial port so we can report progress without connected VGA.
# See [IntrList] for details.
        sub %dx, %dx                    # Serial port 0.
        mov $0xe3, %al                  # 9600 bps, N-8-1.
                                        # AH is already 0 (Initialize Port).
        int $0x14                       # Destroys AX.

プロセッサはこれらの命令をリアルアドレスモードで実行しています。おそらく、割り込みは、割り込みベクタテーブルの21番目(インデックス= 0x14)のエントリを見つけ、そこでハンドラを実行することによって処理されます。このソースよると、割り込みテーブルはリアルモードのBIOSによって初期化されます。このウィキペディアのページには、上記で使用したものを含め、使用可能なBIOS割り込みが一覧表示されています。

私の混乱は、リストされている割り込み例外番号が、Intelリファレンス(20-6ページ)のリアルモード予約割り込みの説明と実質的に矛盾しているという事実から来ています(また、このWikipediaページでも繰り返されています

これらの割り込み番号はどのように競合を解消しますか?

mevets

伝説は、IBMがPCを作ったときにIntelアーキテクチャのマニュアルをわざわざ読んでいなかったことに遡ると思います。Intelは、最初の8086から、ハードウェア用に最初の32個のベクトルを予約しました。IBMはこれを無視してPCBIOSを指定し、16でサービスを開始しました(0x10-ビデオサービス)。ビデオ画面の現在のページを印刷するためのベクトル5に1つの奇妙なものがあります。ベクトル5は、境界チェック命令によって使用されます。

割り込み0x10は、「コプロセッサエラー」として存続します。浮動小数点プロセッサがオプションの補助チップだったときの名残。

あなたに関係する割り込み0x14は、シリアルポート処理のBIOSによって定義されました。仮想化の例外としてCPUによって。

リアルモードの場合、仮想化はありません。したがって、競合はありません。仮想実行モードで、int $ 0x14を実行する場合、CPUはidtの後に続きます。以来、実際の仮想例外は、仮想マシンにアクセス違反によって生じ、そして引き起こす終了仮想マシンモニタにを。[ exitは、仮想マシンの実行を停止させる条件に対してハイパーバイザーの人々が使用する用語です]。

したがって、あいまいさはなく、不適切に構築されたインターフェイスへのややばかげた順守だけです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ハードウェア割り込みの前にブランチの予測ミスはどのように処理されますか

分類Dev

Cの割り込みハンドラーは、1回の割り込み後に機能しません

分類Dev

CPUは、ハードウェア割り込みを処理するコアをどのように決定しますか?

分類Dev

割り込みハンドラが別の割り込みによって割り込まれた場合、割り込みコンテキストはどのように「復元」されますか?

分類Dev

ソフトウェアとハードウェアの割り込みとは何ですか?また、それらはどのように処理されますか?

分類Dev

ハードウェアタイマー割り込みはどこにありますか?

分類Dev

システムコールは、ハードウェア割り込みと同じ方法で実際にCPUを「割り込み」ますか?

分類Dev

割り込みがメインの値を更新していません。割り込みをどのように設定すればよいですか?

分類Dev

「割り込みハンドラの割り込みサービスルーチン」とはどういう意味ですか?

分類Dev

CTRL-Cなどの割り込みキーの組み合わせはいつどのように信号に変換されますか?

分類Dev

Linuxカーネルは、割り込み処理中にウェイクアップするプロセスをどのように見つけますか?

分類Dev

Linuxカーネルは、割り込み処理中にウェイクアップするプロセスをどのように見つけますか?

分類Dev

同期データ取得のためのハードウェア割り込み

分類Dev

WebサーバーはどのようにしてIPアドレスを「リッスン」し、割り込みまたはポーリングしますか?

分類Dev

byebugの予約済みキーワードと競合する変数名にアクセス/操作するにはどうすればよいですか?

分類Dev

byebugの予約済みキーワードと競合する変数名にアクセス/操作するにはどうすればよいですか?

分類Dev

パイプラインのソフトウェア割り込みはどうなりますか?

分類Dev

非常に多くの割り込みを生成するハードウェアがCPUを独占する可能性はありますか?

分類Dev

保護されたハードウェア割り込みハンドラーがスタックしていませんか?(DJGPP)

分類Dev

マルチコアシステムで割り込みはどのように機能しますか?

分類Dev

割り込みと特権レベルはどのように機能しますか?

分類Dev

SMPでは割り込みはどのように処理されますか?

分類Dev

キーボード割り込みはどのようにしてプロセスシグナルとして終了しますか

分類Dev

C#Async / Awaitは割り込みのように機能しますか?

分類Dev

NGINX(プロキシとして)は読み取り/書き込みの競合状態をどのように処理しますか?

分類Dev

このLinux割り込みハンドラーの実行にかかる時間を測定するにはどうすればよいですか?

分類Dev

BlockingQueue.takeはどのような状況で割り込み例外をスローしますか?

分類Dev

8086でPDP11スタイルのハードウェア割り込みを優先的に書き込む方法は?

分類Dev

OSはどのプロセスにキーボード割り込みを送信するかをどのようにして知るのですか?

Related 関連記事

  1. 1

    ハードウェア割り込みの前にブランチの予測ミスはどのように処理されますか

  2. 2

    Cの割り込みハンドラーは、1回の割り込み後に機能しません

  3. 3

    CPUは、ハードウェア割り込みを処理するコアをどのように決定しますか?

  4. 4

    割り込みハンドラが別の割り込みによって割り込まれた場合、割り込みコンテキストはどのように「復元」されますか?

  5. 5

    ソフトウェアとハードウェアの割り込みとは何ですか?また、それらはどのように処理されますか?

  6. 6

    ハードウェアタイマー割り込みはどこにありますか?

  7. 7

    システムコールは、ハードウェア割り込みと同じ方法で実際にCPUを「割り込み」ますか?

  8. 8

    割り込みがメインの値を更新していません。割り込みをどのように設定すればよいですか?

  9. 9

    「割り込みハンドラの割り込みサービスルーチン」とはどういう意味ですか?

  10. 10

    CTRL-Cなどの割り込みキーの組み合わせはいつどのように信号に変換されますか?

  11. 11

    Linuxカーネルは、割り込み処理中にウェイクアップするプロセスをどのように見つけますか?

  12. 12

    Linuxカーネルは、割り込み処理中にウェイクアップするプロセスをどのように見つけますか?

  13. 13

    同期データ取得のためのハードウェア割り込み

  14. 14

    WebサーバーはどのようにしてIPアドレスを「リッスン」し、割り込みまたはポーリングしますか?

  15. 15

    byebugの予約済みキーワードと競合する変数名にアクセス/操作するにはどうすればよいですか?

  16. 16

    byebugの予約済みキーワードと競合する変数名にアクセス/操作するにはどうすればよいですか?

  17. 17

    パイプラインのソフトウェア割り込みはどうなりますか?

  18. 18

    非常に多くの割り込みを生成するハードウェアがCPUを独占する可能性はありますか?

  19. 19

    保護されたハードウェア割り込みハンドラーがスタックしていませんか?(DJGPP)

  20. 20

    マルチコアシステムで割り込みはどのように機能しますか?

  21. 21

    割り込みと特権レベルはどのように機能しますか?

  22. 22

    SMPでは割り込みはどのように処理されますか?

  23. 23

    キーボード割り込みはどのようにしてプロセスシグナルとして終了しますか

  24. 24

    C#Async / Awaitは割り込みのように機能しますか?

  25. 25

    NGINX(プロキシとして)は読み取り/書き込みの競合状態をどのように処理しますか?

  26. 26

    このLinux割り込みハンドラーの実行にかかる時間を測定するにはどうすればよいですか?

  27. 27

    BlockingQueue.takeはどのような状況で割り込み例外をスローしますか?

  28. 28

    8086でPDP11スタイルのハードウェア割り込みを優先的に書き込む方法は?

  29. 29

    OSはどのプロセスにキーボード割り込みを送信するかをどのようにして知るのですか?

ホットタグ

アーカイブ