首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将x86驱动程序代码放在环1和2而不是0中有好处吗?

将x86驱动程序代码放在环1和2而不是0中有好处吗?
EN

Stack Overflow用户
提问于 2014-08-20 14:38:16
回答 1查看 295关注 0票数 6

单片内核的驱动程序可以是环0、1或2(对于微内核,它们将在环3-用户环中)。

将驱动程序代码放在带内核的环0或“稍微少一点”的特权环1和2中有什么好处/缺点吗?

环1和2仍然可以访问主管页,但是它们不能运行一些特殊的特权指令(如果它们运行了,就会引发一般保护错误--类似于第3环)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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之间进行转换;为了执行上下文切换,需要一个完整的中断。

还要考虑的另一个缺点是,由于许多其他体系结构只有监督者和用户模式(或等效的),您编写的管理代码运行级别元素的任何平台体系结构都必须两者兼备:

  • 根据平台是否有环1和/或2和
  • 根据平台的不同,对代码所具有的特权级别做出不同的决定。

如果您计划为不同的体系结构构建一个系统,这可能会导致一些困难。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25787507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档