2017-06-15 53 views
1

outin說明特權說明?我假設他們是因爲如果他們不是,那麼以用戶模式運行的任何進程都可以訪問端口映射的I/O硬件。但我無法在網上找到任何證實這一點的信息。「out」和「in」指令是否具有特權說明?

+2

是的,他們是或可以。您在閱讀文檔時發現了什麼? –

+0

這是在線... –

回答

3

它們與I/O特權級別(IOPL)綁定,這裏記錄的是OUT,這裏是IN。 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 –