[发明专利]在用户空间中进行系统调用截取的方法和系统有效
申请号: | 200710137019.0 | 申请日: | 2007-07-19 |
公开(公告)号: | CN101158914A | 公开(公告)日: | 2008-04-09 |
发明(设计)人: | 马克·沃特斯 | 申请(专利权)人: | 国际商业机器公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F11/36 |
代理公司: | 中国国际贸易促进委员会专利商标事务所 | 代理人: | 付建军 |
地址: | 美国*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用户 空间 进行 系统 调用 截取 方法 | ||
技术领域
一般来说,本发明涉及截取系统调用的方法,更确切地说,这种方法允许从用户空间截取系统调用。
背景技术
应用程序级的若干虚拟化系统将应用程序与底层物理硬件隔离,其目的是为了保护(容错)、(利用在Linux上运行的IBM的MetaCluster,MetaCluster是IBM公司在某些国家中的商标)通过检查点和重新开始的流动性(应用程序再定位)、确定性重放或者仅仅是资源隔离,如Linux(Linux是Linux Torvalds在美国、其他国家或兼而有之的注册商标)的Vserver(Vserver是Linux Torvalds在某些国家中的商标)、Virtuozzo(Virtuozzo是Swsoft在某些国家中的商标)的OpenVZ,它们都需要截取和改变现有系统调用的原始语义。
做到这一点的一种方法是在内核中改变系统调用例程,以引进语义的系统调用截取和修改。在操作系统内部执行必需的改变难以实行,危及整个系统的稳定性和安全性,并且用户和维护者通常不太愿意接受,因为它增加了内核的复杂性并可能危及系统的完整性和支持它的能力。
存在着某些方法将代码插入到程序中以分析其行为,例如通过收集分析数据。这种修改程序使其分析自己的技术被称为“探测方法”。探测方法可以用于检测系统调用,有可能以这种方式从用户空间修改它们。不过,现有探测方法虽然对于调试足以胜任,但是不能满足高性能要求,如容错系统的要求。
检测可执行代码的“ptrace”方法——如Linux strace工具使用的——需要外部控制器过程,当信号通知它时,它在每次系统调用发生时都停止、内观,然后再重新开始。尽管这种方法是一般的方法,但是形成的运行开销巨大。
LD_PRELOAD方法——也是检测可执行代码——执行动态链接符号插入,以截取和替换以动态符号形式存在的系统调用。这种方法仅限于动态可执行文件,不适用于系统调用内联在库中的情况(因为存在着关联符号)。现在内联系统调用在最近的Linux标准库中越来越常见,使得这种方法遭到反对。
机器码重写法是另一种可执行码的探测方法:可执行机器码被静态地或动态地重写,并且当遇到系统调用时,能够插入某种附加代码以提供附加值。这种方法不支持自修改的可执行码,并且运行开销也可能非常可观。实例是数字设备公司工作站上过去可用的ATOM产品。ATOM在编译时向要被分析的程序内插入代码。
因此需要一种新方法,在程序执行期间截取所有类型的系统调用,并且从用户空间修改它们的行为,同时避免(对容错系统无法接受的)运行开销,因为内核码以特权模式执行,并且不能由程序修改。
发明内容
本发明的目的是提供截取系统调用并从用户空间修改它们行为的探测方法,它适用于任何类型的可执行码,同时保持良好的性能水平。
根据权利要求1,达到这个目的是利用了在用户空间中执行过程中截取系统调用并且在用户空间中执行与截取的系统调用有关的若干操作的方法,所述方法在计算机上执行,其中,操作系统内核支持包括系统跟踪的ptrace系统调用,所述方法进一步包括:
—在执行过程中启动信号处理程序,所述信号处理程序包含执行与将要截取的系统调用有关的操作的代码;
—在执行过程中,在执行将要截取的系统调用之前,进行在内核中设置系统跟踪旗标和自跟踪旗标的自ptrace请求;
—在执行系统调用之后,内核验证已设置系统跟踪旗标和自跟踪旗标;
—内核保存系统调用信息并发送与信号处理程序对应的、传递系统调用信息的信号;
—执行过程收到信号后,开始信号处理程序的执行;
—在信号处理程序执行结束时,在执行过程中,在所截取系统调用后跟随的下一条指令重新开始执行,同时提供系统调用返回信息。
根据权利要求2,达到这个目的也是利用了权利要求1的方法,进一步包括在内核发送信号之前:
—内核使系统跟踪旗标和自跟踪旗标复位。
根据权利要求3,达到这个目的也是利用了权利要求1或2的方法,其中执行自ptrace请求的步骤包括:
—在执行过程的任务描述符中保存系统跟踪旗标和自跟踪旗标。
根据权利要求4,达到这个目的也是利用了权利要求1或2的方法,其中执行自ptrace请求的步骤进一步包括:
—在执行过程的任务描述符中保存自跟踪旗标,在执行过程的线程描述符中保存系统跟踪旗标。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国际商业机器公司,未经国际商业机器公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200710137019.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种新型击鼓棒
- 下一篇:一种空气滤清器的胶圈