浙大搞的一个Linux兼容内核,兼容windows的内核的项目,据说是毛德操发起的,研究生时研读过他的内核分析,狠是经典啊,现在能够静下心来读一本书的时间都没有了。
兼容内核是一个自由、开源的操作系统项目,目的是要把Linux的内核扩充成一个既支持Linux应用、也支持Windows应用,既支持Linux设备驱动、也支持Windows设备驱动的兼容内核;使用户可以直接在Linux操作系统上高效运行Windows应用。
通过兼容内核,我们希望原来习惯于windows操作习惯的用户可以在Linux上延续他们的操作习惯。用户购买的第三方软件可以变成与操作系统无关,对于用户来说,本来是一旦购买了Windows的应用软件,从此只能选择Windows操作系统,而现在却还可以有选择,这对于Linux当然是意义重大,可以提高桌面Linux的市场竞争力。
有兴趣的可以去cc
还可以下载进行测试~~
据“Undocumented Windows 2000 Secrets”介绍,Win2k共有248个常规的系统调用(有逆向工程的结果为证)。其中有的系统调用很简单,或者几乎可以直接用相应的Linux系统调用替代,有的却非常复杂。显然,要从零开始开发出这些系统调用是不大现实的(尽管ReactOS确实在这样做),我们要做的是尽量利用Linux内核中的低层函数来实现这些Windows系统调用。在某种意义上,Wine是在内核外面将Windows应用嫁接到Linux系统调用上,而我们的兼容内核则要在内核里面将Windows系统调用嫁接到Linux的诸多内核函数上。之所以在内核里面嫁接比在内核外面嫁接更好,一方面是因为内核函数的“粒度”较小,内核函数与系统调用之间的关系有点像汇编语言与高级语言之间的关系。另一方面是因为内核空间是统一的,可以提供全局的视野。例如,在内核中可以看到所有进程的进程控制块(PCB);而一出内核,到了用户空间,进程之间就互相隔离了。所以,凡是要求有全局视野的操作,就应该在内核中实现。
除这些常规的系统调用外,Win2k还有639个图形界面(GUI)系统调用。这等于是把X11搬到了内核里面。在WinNT 4.0以前,Windows也像Linux一样,由用户空间的图形服务进程来实现对图形和视窗的操作和管理,那样当然效率比较低。从WinNT 4.0开始,就把图形操作和视窗管理移到了内核里面,成为一个可安装模块win32k.sys。这对于提高图形操作的速度很有意义,否则游戏软件的运行就不会有那么流畅(当然,后来又有了DirectX,进一步提高了图像/图形操作的速度,那是后话)。所以,严格地说,所谓Windows系统调用界面也包括这些图形操作调用。不过实现这些调用的“原材料”不再是Linux内核函数,而是X11中的相关函数。当然,事情有轻重缓急,完全没有必要在一开始就把这六百多个调用也一锅煮。实际上,即使是248个常规系统调用的实现,也没有必要一步到位。
阅读(1110) | 评论(1) | 转发(0) |