试图了解用户模式与内核模式以及哪些指令可以在非特权模式下运行。
根据 Abraham-Siberschatz,所有这些都可能需要 SysCall。
试图了解用户模式与内核模式以及哪些指令可以在非特权模式下运行。
根据 Abraham-Siberschatz,所有这些都可能需要 SysCall。
这取决于它是哪个 CPU 以及操作系统如何配置它。
例如; 对于 80x86,in
andout
指令可以在用户模式下执行,如果:
IOPL 字段(IO 权限级别)设置为不低于当前权限级别。
IO 权限位图(在当前任务状态段中)被配置为允许访问特定的 IO 端口。
当然,很多 IO 是内存映射的,这也允许内核将任何“内存映射 IO”区域映射到用户空间。
一般来说; 单片内核将在内核空间中运行设备驱动程序,并且不允许用户模式代码直接访问任何类型的 IO;并且微内核将在用户空间中运行设备驱动程序,并将显式配置事物,以便设备驱动程序进程可以为它正在驱动的设备(但不能为任何其他设备)进行输入/输出。