[发明专利]在Linux内核中实现仿Windows系统调用机制的方法无效
| 申请号: | 201010622299.6 | 申请日: | 2010-12-29 |
| 公开(公告)号: | CN102073532A | 公开(公告)日: | 2011-05-25 |
| 发明(设计)人: | 周立炜;费海林;毛德操 | 申请(专利权)人: | 浙大网新科技股份有限公司 |
| 主分类号: | G06F9/45 | 分类号: | G06F9/45 |
| 代理公司: | 杭州九洲专利事务所有限公司 33101 | 代理人: | 陈继亮 |
| 地址: | 310007 浙江*** | 国省代码: | 浙江;33 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | linux 内核 实现 windows 系统 调用 机制 方法 | ||
技术领域
本发明涉及计算机操作系统领域,尤其是一种在Linux内核中实现仿Windows系统调用机制的方法。
背景技术
操作系统相当于计算机的灵魂,任何计算机都离不开操作系统,同时也都受操作系统的限制,所有的应用软件都是基于某种特定操作系统的,都只能在这种特定的操作系统上运行,搬到别的操作系统上就不能运行。操作系统的核心称为“内核”,内核为应用软件提供特定的运行环境、并提供基本的操作能力,应用软件对这些基本操作能力的调用称为“系统调用”。尽管不同操作系统所提供的基本操作能力在总体上颇为相似,但每个操作系统内核所提供的系统调用及其集合却又都是独特的,不能混用。所以,凡是应用软件都是基于特定操作系统内核的,或者说都是与特定操作系统内核绑定的,Windows应用只能在Windows内核上运行,而Linux应用也只能在Linux内核上运行。
如果能让Windows应用软件直接在Linux操作系统即Linux内核上运行,那么用户就有可能摆脱对Windows操作系统的依赖、而改用Linux操作系统,这显然是很有意义的。然而要实现这个目标就必须解决让Linux内核支持Windows系统调用的问题。
解决这个问题的总的思路是:首先在Linux内核中实现Windows系统调用的机制;然后逐个将Windows的系统调用嫁接到与之对应的Linux系统调用上,再加以必要的修改,如果没有对应的Linux系统调用就在Linux内核中加以实现。所谓“系统调用的机制”,是指:
●应用软件在用户态怎样发起系统调用;
●程序流程怎样进入内核、即进入系统态;
●内核中与具体系统调用无关、为所有系统调用所共有的操作和活动;
●程序流程怎样进入具体的系统调用、即内核中用来实现具体系统调用的功能的函数;
●怎样返回到用户态。
可见,在Linux内核中实现Windows系统调用的机制,是要实现上述目标的第一个必要条件。而本发明所述的方法,其目的就在于解决系统调用机制的问题。
而本发明的内容和特点就是:提供一种在Linux内核中实现Windows系统调用机制的方法,使得让Linux内核支持Windows系统调用成为可能。
发明内容
在Linux中,系统调用是通过一条int指令启动的,这是一条“软件中断”指令,这是对中断机制的一种模拟,CPU执行这条指令时就好像发生了一次中断一样。为此,在int指令中必须带上一个“中断向量”、或者说“中断号”,在Linux中这个中断向量是0x80。在Windows中也是一样,但中断向量是0x2e。每当CPU执行int指令时,其运行状态就从“用户态”跳转到“系统态”,这就是所谓进入了内核。进入内核之后,CPU从用户态堆栈中读取“系统调用号”及有关参数,系统调用号用来表明具体的系统调用。但是,同样的系统调用号在不同操作系统中的意义是不同的,不能混淆。
要在Linux内核中增加一种系统调用机制,方法是很多的。例如,可以在Linux的中断机制中增添一种系统调用,比方说“windows_call”,再在那里展开成系统调用机制。又例如,在/proc下面可以增添一个特殊的文件系统节点“windows_call”,再在其驱动程序中展开成系统调用机制机制。当然,这样一来启动系统调用的方式就与Windows中不同了,但是按理说这样问题也不大,只是效率略为降低了一点,因为应用程序按理说都不会直接启动系统调用,而是按Windows API的规定转辗调用动态连接库Ntdll.dll,在这个DLL内部才发起系统调用。但是,有可能违反这个规定的恰恰是微软自己。据网上的讨论,微软有可能隐藏着几个系统调用不向第三方开放,而自己的某些应用软件却可以不经过Ntdll.dll,在应用软件的代码中直接通过“int 0x2e”指令加以调用。由于微软的软件都是不开源的“黑盒子”,此说既无法证实也无法否定。所以,为最大程度地维持兼容性,最好还是像Windows一样,实现基于“int 0x2e”指令的Windows系统调用机制。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙大网新科技股份有限公司,未经浙大网新科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010622299.6/2.html,转载请声明来源钻瓜专利网。





