单片内核的驱动程序可以是环0、1或2(对于微内核,它们将在环3-用户环中)。
将驱动程序代码放在带内核的环0或“稍微少一点”的特权环1和2中有什么好处/缺点吗?
环1和2仍然可以访问主管页,但是它们不能运行一些特殊的特权指令(如果它们运行了,就会引发一般保护错误--类似于第3环)。
发布于 2014-08-20 16:53:04
使用环1和环2最明显的优点是架构分离,可以保护内核不受故障设备驱动程序的影响。理论上,正确编写的内核将允许一个优雅的失败,当一个司机在外圈有一个灾难性的故障。在环形0中运行驱动程序可能会允许它在失败时删除整个内核。
将驱动程序移到环1和2中的一个缺点是性能开销,这与内核和驱动程序之间不断需要环转换有关。当然,在微内核系统中,this is necessary and could be sufficiently fast depending on your needs。通过适当的优化,将内核与其服务分离可能会对性能造成很小的影响。话虽如此,用于快速上下文切换的Intel SYSENTER/SYSEXIT (和等效的AMD SYSCALL/SYSRET)指令只允许在环0和3之间进行转换;为了执行上下文切换,需要一个完整的中断。
还要考虑的另一个缺点是,由于许多其他体系结构只有监督者和用户模式(或等效的),您编写的管理代码运行级别元素的任何平台体系结构都必须两者兼备:
如果您计划为不同的体系结构构建一个系统,这可能会导致一些困难。
https://stackoverflow.com/questions/25787507
复制相似问题