Linux 2.6 中快速系统调用指令 SYSENTER/SYSEXIT 的实现与优化
183 浏览量
更新于2024-09-06
收藏 93KB DOC 举报
Linux 2.6 对新型 CPU 快速系统调用的支持
本文分析了 Linux 2.6 中引入的对 Intel CPU 快速系统调用指令 SYSENTER/SYSEXIT 支持的实现。Linux 驱动及内核开发者通过了解快速系统调用指令的机制,可以在自己的代码中通过利用这一机制,提高系统性能,并避开由快速系统调用方式带来的一些局限(如系统调用中嵌套系统调用)。
Linux 2.4 中的系统调用机制是通过软中断指令(int 0x80)实现的。在 x86 保护模式中,处理 INT 中断指令时,CPU 首先从中断描述表 IDT 取出对应的门描述符,判断门描述符的种类,然后检查门描述符的级别 DPL 和 INT 指令调用者的级别 CPL,当 CPL<=DPL 也就是说 INT 调用者级别高于描述符指定级别时,才能成功调用,最后再根据描述符的内容,进行压栈、跳转、权限级别提升。内核代码执行完毕之后,调用 IRET 指令返回,IRET 指令恢复用户栈,并跳转回低级别的代码。
然而,在发生系统调用,由 Ring3 进入 Ring0 的这个过程浪费了不少的 CPU 周期,例如,系统调用必然需要由 Ring3 进入 Ring0(由内核调用 INT 指令的方式除外,这多半属于 Hacker 的内核模块所为),权限提升之前和之后的级别是固定的,CPL 肯定是 3,而 INT80 的 DPL 肯定也是 3,这样 CPU 检查门描述符的 DPL 和调用者的 CPL 就是完全没必要。正是由于如此,Intel x86 CPU 从 PII300(Family6,Model 3,Stepping3)之后,开始支持新的系统调用指令 sysenter/sysexit。sysenter 指令用于由 Ring3 进入 Ring0,SYSEXIT 指令用于由 Ring0 返回 Ring3。由于没有特权级别检查的处理,也没有压栈的操作,所以执行速度比 INT n/IRET 快了不少。
sysenter/sysexit 指令的优点在于,它可以减少系统调用的开销,避免了 INT n/IRET 指令中的权限级别检查和压栈操作,从而提高了系统性能。此外,sysenter/sysexit 指令还可以避免系统调用中嵌套系统调用的问题,提高了系统的可靠性和安全性。
在 Linux 2.6 中,对 sysenter/sysexit 指令的支持可以分为两个部分:一是 sysenter 指令的支持,用于由 Ring3 进入 Ring0;二是 SYSEXIT 指令的支持,用于由 Ring0 返回 Ring3。Linux 驱动及内核开发者可以通过了解 sysenter/sysexit 指令的机制,在自己的代码中通过利用这一机制,提高系统性能,并避开由快速系统调用方式带来的一些局限。
此外,在 Linux 2.6 中,还提供了一些其他的优化机制,例如缓存优化、锁优化等,都是为了提高系统性能和可靠性。因此, Linux 驱动及内核开发者需要了解这些优化机制,并在自己的代码中实施,以提高系统性能和可靠性。
Linux 2.6 中对 sysenter/sysexit 指令的支持可以提高系统性能,避免系统调用中嵌套系统调用的问题,提高系统的可靠性和安全性。Linux 驱动及内核开发者需要了解 sysenter/sysexit 指令的机制,并在自己的代码中实施,以提高系统性能和可靠性。
2008-10-25 上传
2009-11-26 上传
2020-09-16 上传
2010-06-18 上传
2020-03-30 上传
2018-08-16 上传
2013-04-23 上传
weixin_38713203
- 粉丝: 11
- 资源: 942
最新资源
- 高清艺术文字图标资源,PNG和ICO格式免费下载
- mui框架HTML5应用界面组件使用示例教程
- Vue.js开发利器:chrome-vue-devtools插件解析
- 掌握ElectronBrowserJS:打造跨平台电子应用
- 前端导师教程:构建与部署社交证明页面
- Java多线程与线程安全在断点续传中的实现
- 免Root一键卸载安卓预装应用教程
- 易语言实现高级表格滚动条完美控制技巧
- 超声波测距尺的源码实现
- 数据可视化与交互:构建易用的数据界面
- 实现Discourse外聘回复自动标记的简易插件
- 链表的头插法与尾插法实现及长度计算
- Playwright与Typescript及Mocha集成:自动化UI测试实践指南
- 128x128像素线性工具图标下载集合
- 易语言安装包程序增强版:智能导入与重复库过滤
- 利用AJAX与Spotify API在Google地图中探索世界音乐排行榜