プロが教える店舗&オフィスのセキュリティ対策術

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

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

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

A 回答 (1件)

外部割込み等で特権レベルが変化する場合は、


2)割り込み自体で(HW機能により)特権レベルが0になるからです。

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

"intel 486 割り込み マニュアル"
==>
http://download.intel.com/jp/developer/jpdoc/ia3 …
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/IA3 …
第 3 章 保護モードにおけるメモリ管理
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/06/13 22:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!