OSレベルでのI/Oの制限方法

486でどのようにI/Oコントロールが行わているか。*1

 

486 ではIOPLビットでIOコントロールをするが、全部禁止、全部許可しかできない。

TSSの中にI/O許可マップというものを準備して、各ポートについての権限を管理する。

 

また、リアルモード用のアプリケーションをプロテクトモードで動かしても、直接IOポートにアクセスするので、他のプロセスとの連携がとれず、排他制御などに困る。

よってI/Oの仮想化をOS側が準備して、全てのI/Oへの信号をコントロールする

 

 

IOPL : I/O Privilege Level, CPUのEFLAGSレジスタの中のIOPLフィールドに設定するもの。I/Oにアクセスする際は動作しているプロセスの権限と、I/Oポートの権限レベル(IOPL)が比較され、プロセスの特権レベルがIOPLより小さい場合に限りあくせすができるようにする。

 

 

*1:参考にした書籍 32ビットコンピュータをやさしく語る はじめて読む486アスキー書籍