こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

はじめて読む486の割り込み関係を読んで

割込みが発生した時の特権レベルとスタックポインタの動きがよくわかりませんでした。
特権レベルが上がるとTSSのesp0が新たなスタックポインタになる
のはわかりましたが、割り込みが発生した時、

1)割り込みハンドラのあるセグメントの特権レベルが0だから
2)割り込み自体で特権レベルが0になるから

のどちらの理由で特権レベルが上がるのでしょうか?仮に1)だとすると
特権レベルを上げないで割り込みハンドラを作る事ができ、そうすると
割り込みでTSSのesp0を使わないというコードも作れそうです。

投稿日時 - 2012-06-08 07:02:44

QNo.7520826

暇なときに回答ください

質問者が選んだベストアンサー

外部割込み等で特権レベルが変化する場合は、
2)割り込み自体で(HW機能により)特権レベルが0になるからです。

関連する情報はインテルのマニュアルに書かれていますので、例えば次のようにサーチして調べて下さい。

"intel 486 割り込み マニュアル"
==>
http://download.intel.com/jp/developer/jpdoc/ia32_arh_dev_man_vol3_i.pdf
IA-32 インテル アーキテクチャ ソフトウェア・デベロッパーズ・マニュアル

次を参照下さい。

第 5 章 割り込みと例外の処理

>仮に1)だとすると
特権レベルを上げないで割り込みハンドラを作る事ができ、そうすると
割り込みでTSSのesp0を使わないというコードも作れそうです。

OSやITルーチン等のアドレス空間は一般のユーザーからは参照できないようにされています。
(4kB/1MB単位のマッピングテーブルでユーザーからはアクセス不可とされています)

次を参照下さい。

http://www.intel.com/jp/download/index.htm
http://download.intel.com/jp/developer/jpdoc/IA32_Arh_Dev_Man_Vol3_i.pdf
第 3 章 保護モードにおけるメモリ管理

投稿日時 - 2012-06-11 22:47:38

お礼

とても詳しくありがとうございます。
疑問点がほぼ解消しました。
インテルのマニュアルとにらみっこして更に勉強したいと思います。
ありがとうございました。

投稿日時 - 2012-06-13 22:32:08

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問