2017-06-15 102 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 –