2017-06-15 28 views
1

outおよびin命令の特権命令はありますか?彼らがそうでなければ、ユーザーモードで実行されているプロセスがポートにマップされたI/Oハードウェアにアクセスできるからだと思います。しかし、私はそれを確認する何かをオンラインで見つけることができません。"out"と "in"命令の特権命令はありますか?

+2

はいそうです。ドキュメンテーションを読むと何が見つかりましたか? –

+0

これはオンラインで... –

答えて

3

これらは、OUTとここではINに記載されているように、I/O特権レベル(IOPL)に関連付けられています。 IOPLは(R|E)FLAGSレジスタのビット12-13です。現在の特権レベルがより大きい場合(すなわち、より小さい特権がある場合)、IOPLの値はINOUTになりません。

これは、特権レベルの概念を持たないリアルモード以外の動作モードにも当てはまります。

+3

最初の256ポートの特権ビットマップもあります。 – fuz

+0

@fuzはい、ですが、この質問は具体的に指示に関するものでした。 –

+1

しかし、ポイントは、オペレーティングシステムが 'outb 0x60'がユーザー空間プロセスで許可されるように構成することができますが、' outb 0x50'フォルトが正しいことです。 OTOHでは、Linuxはソフトウェアでより大きなビットマップを使用します。おそらく 'in' /' out'から例外をキャッチし、それが許可されるべきかどうかを(ソフトウェアで)チェックします。 http://man7.org/linux/man-pages/man2/ioperm.2.htmlを参照してください。 –