对Linux操作系统的内核系统概述

Linux操作系统有很多值得学习的地方,这里我们主要介绍Linux操作系统,包括介绍Linux兼容内核等方面。Linux操作系统是由Unix操作系统演变而来的。由于是开放源代码的项目,问世之后就得到了广泛的关心和参与,得以逐步趋于成熟。在技术 上,Linux几乎全盘继承了Unix,所以从一开始就有着相当的高度和优势。 然而,Linux在技术上的优势和先进性并未转化成市场占有率。十年过去了,台式机操作系统的市场实际上已被Windows垄断。

短期计划

2009年2月,将提供针对主流发行版的Linux兼容内核安装包 。

中期计划

实现所有win32系统调用,真正体现Linux兼容内核在兼容性和效率上的优势。

长期计划

实现Windows设备驱动框架与设备驱动支撑界面。

项目背景

就中国目前的状况而言,绝大多数用户都使用Windows,并且已经习惯于使用Windows。从某一方面而言,微软在占领中国操作系统市场的过程中,已经把一代中国人训练成了Windows的用户。 可是,操作系统不同于其他个别的应用软件,这是带有根本性的基础软件。整个世界、整个国家的计算机应用都依赖于同一个公司的产品,这不是一件好事。而在桌面操作系统上还有可能与Windows形成竞争的,则非Linux莫属。 为此,无论是国外还是国内,都有不少的公司和组织在致力于推动Linux的应用、拓展Linux的市场,并且得到许多国家政府的支持,然而效果却不甚理想。

究其原因,一是用户已经习惯于使用Windows,二是许多用户实际上已经离不开Windows上的一些应用软件。于是人们开始设法让Windows的应用软件可以在Linux操作系统上运行,这样就可以使Windows的用户“平滑转移”到Linux,同时仍能使用 Windows应用软件。Wine就是在这个方向上有着里程碑意义的项目和产品。其思路是一个适配层在Linux内核外,形成一个虚拟的Win32应用软 件界面,让Windows应用软件“以为”是在Windows内核上运行。实质上,这是企图在内核外“抹平”两个内核之间的差别,即“内核差别核外补”。

可是,要在核外补平核内的差别实非易事,有些差别甚至不可能在核外补平。即使是可以在核外补平的那一部分,也在性能上有着不同程度的问题。所以Wine并没有扭转局势。在这样的背景下,知名操作系统专家毛德操在2003年提出了开发“兼容内核”的思路,主张“内核差别核内补”,对Linux内核加以必要的改进,使其能既支持Linux应用软件、也支持Windows应用软件。经过一段时期的酝酿,Linux兼容内核项目于2005年9月正式启动,由毛德操领导,浙大网新中央研究院进行研发。项目的官方网站http://linux.insigma.com.cn也同时正式开通。 作为上市公司和高新企业,浙大网新从技术、人才和资金方面为项目的顺利实施提供了强有力的支持,并将兼容内核的研发纳入公司的发展战略。 其意图为把Linux的内核扩充成既支持Linux应用、也支持Windows应用,既支持Linux设备驱动、也支持Windows设备驱动的 兼容内核,从而实现Linux操作系统与Windows之间的高度兼容,使用户可以直接在Linux上高效运行Windows应用而无需安装Windows操作系 统,摆脱对Windows操作系统的依赖。

社区反响

兼容内核项目的启动得到了许多专家的赞同。中国开源软件推进联盟主席陆首群、工程院院士倪光南、OSDL亚太区总裁平野正信等人均给予高度评价。包括北京共创开源软件有限公司在内的一些Linux操作系统厂商更表示愿与浙大网新携手迎接中国开源软件产业的新崛起。此外,浙大网新还与浙江大学计算机学院的同行结成合作伙伴关系,共同从事兼容内核的研发。

项目思路

对于兼容内核的研发,毛德操总结提出了以“一个框架,两个界面”为主体,“嫁接与仿制相结合”的思路。
所谓一个框架是指设备驱动框架。这是因为两个内核中的设备驱动框架有较大的结构性不同,而把Windows的设备驱动模块(.sys模块)动态安装到Linux内核中去,Linux内核中必须有与之配套的框架。而两个界面,则是指系统调用界面和内核模块支撑界面。前者的目的是在Linux内核中实现一套与Linux操作系统调用平行的Windows系统调用,实际实现的是Windows的“应用软件二进制界面”、即ABI。后者的目的是为Windows设备驱动模块的运行提供类似于库函数的支撑,相当于Linux内核中“导出”函数的集合。但是,“一个框架,两个界面”的实现并不意味着从始研发,而是应该尽量把Windows函数的界面“嫁接”到Linux内核中的对应函数上。事实上,对于大多数的Windows系统调用和内核模块支撑函数,在不同程度上Linux内核中都能找到其对应物。例如,在请求分配缓冲区 时,Windows的设备驱动模块需要内核的支持,而Linux的设备驱动模块也有同样的要求,二者的函数调用界面不同,但是实际完成的操作却是基本相同 的。 当然,嫁接并不是简单的对接,往往还要对Linux内核中的资源加以扩充、修改、甚至重新组合。另一方面,对于一些Windows所特有的、在Linux内核中找不到对应物的功能和性质,则需要加以仿制。

技术路线

在具体的技术路线方面,Linux操作系统兼容内核项目以Wine为起点,初期阶段基本依赖Wine,随着Windows系统调用的逐步实现,慢慢地逐步走向独立自主,最后就基本上摆脱Wine,实现了Windows的系统调用界面。之所以说“基本上”摆脱Wine,是因为Wine项目所开发的许多(用户空间的)动态连接库(DLL)对于兼容内核而言还是不可或缺的。显然,这样一条渐进的研发路线有助于兼容内核的平滑推进。对于设备驱动,则以另一个开源项目NDIS Wrapper的成果作为起点,同样也采用渐进的研发路线。此外,对于具体功能点的实现,例如具体系统调用的实现,将采用先粗后细,逐步逼近,螺旋式推进 的策略。这是因为Windows系统调用往往带有许多可选项,要一次就实现所有的可选项不现实,也会拖其它功能点的后腿,所以螺旋式推进是比较合适的对 策。

项目宗旨

相关推荐