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より小さい場合に限りあくせすができるようにする。