试图了解用户模式与内核模式,哪些指令可以在非特权模式下运行。
每个亚伯拉罕·塞伯萨茨,所有这些都可能需要syscall。
它取决于它是哪个CPU以及OS如何配置。
例如;对于80x86,in
和out
指令可以在用户模式下执行:
-
IOPL字段(IO特权级别(设置为不小于当前特权级别。
-
IO权限Bitmap(在当前任务状态段中(配置为允许访问特定的IO端口/s。
当然,许多IO是内存映射的,这也允许内核可以将任何"内存映射"区域映射到用户空间中。
一般而言;整体内核将在内核空间中运行设备驱动程序,并且不允许用户模式代码直接访问任何类型的IO;微型内核将在用户空间中运行设备驱动程序,并会明确配置事物,以便设备驱动程序进程可以为其驾驶的设备执行输入/输出(但没有其他设备(。