首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
搜索中心 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>其他编程>正文

Linux兼容内核的三个重要源泉详细介绍

http://www.oklinux.cn  2008-07-08  linuxidc   会员收藏  游客收藏  【 】 
您查看的文章来源于http://www.oklinux.cn

我们要开发、构建的Linux兼容内核并非无源之水,也不需要从零开始“重新发明轮子”。正如牛顿所说要“站在巨人肩膀上”一样,我们也应该充分利用别人已经取得的成就、特别是开源社区已经取得的成就。

除Linux本身以外,兼容内核主要的源泉有三个,那就是Wine、NdisWrapper、以及ReactOS。三者都是在Sourceforge立项的开源项目,源代码可从www.sourceforge.net下载。

下面对三个源泉分别作一简单的介绍。

Wine

按Wine项目自己的说法,Wine是“Wine Is Not an Emulator”的缩写。这使人不免想起GNU的“Gnu is Not Unix”。许多人对此可能一笑了之,觉得这是文字游戏或者幽默。可是笔者却觉得这背后其实自有深意。GNU说它不是Unix,意思是说虽然它基本上就是Unix,或者非常像Unix,可是你不能按Unix的各种标准来要求它,有些地方它与真正的Unix是点差别的。这是一种“有言在先”式的声明。而Wine为什么说它不是仿真器呢?这反映了Wine的设计者生怕别人误以为Wine是个仿真器。这主要是因为“仿真器”这个词容易使人误解,以为是对CPU机器指令的仿真,那是效率非常低的。所以这实际上是在申辩,说Wine的效率不低。当然,Wine的效率比普通意义上的仿真确实要高得多。

那么Wine到底是什么呢?

? 对于Windows应用软件而言,Wine为其提供对Windows运行环境的仿真,所以Wine也可以理解为“WIN Emulator”。这也正是Windows应用软件能够在Linux上运行的条件与原因。不过这种仿真并不是对CPU指令的仿真,而是对Win32 API函数调用的仿真。

?对于Linux及其内核而言,Wine是内核与Windows应用软件之间的一个中间层。它一方面为Windows应用软件提供各种动态连接库(DLL),使应用软件通过Win32 API进行的库函数调用得以落实,一方面将应用软件和动态连接库原本对Windows内核所作的系统调用翻译成对Linux内核的系统调用,把它们转嫁到Linux内核上来。

?对于许多作为Windows操作系统组成部分的动态连接库、服务/守护程序、工具程序而言,Wine是这些软件在Linux上的移植、实际上是仿制。在“关于Linux兼容内核的知识产权问题”一文的第二部分中,笔者把Windows上的软件分成五类,这些软件都属于第五类,即由微软开发,又理应属于操作系统、跟Windows相捆绑的那部分软件。

Wine完全不触及Linux内核,所有的操作都是在内核外面进行。有些操作本来应该在内核中实现,但是因为不触及内核,就只好设法在内核外面、即用户空间中设法补偿。但是,在内核外面用Linux系统调用来实现Windows系统调用,就好像要用一种高级语言来实现另一种高级语言一样(比方说,用Cobol来实现Fortran),往往会导致相当笨拙的实现,有些甚至根本就实现不了。这是因为,Linux或者Windows的每一个特定的系统调用就好像高级语言的一种语句,我们固然可以把它看成是个黑盒子,但是要让两个这样的黑盒子在输入参数和条件,计算结果和副作用等等各方面都完全一样是很困难的。诚然,Linux的系统调用是很丰富、很灵活、“表现力”很强的,有点像是C语言,这给通过Linux系统调用实现Windows系统调用提供了一个良好的基础。但是,即便如此,也还存在不少的困难。下面我们通过一个例子加以说明。

共7页: 上一页 1 [2] [3] [4] [5] [6] [7] 下一页

上一篇:Linux环境下重新编译GCC-4.3.0   下一篇:对Linux服务器四种级别入侵简述及反击措施

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·Linux环境下重新编译GCC-4.3.0
·Linux终端不回显
·Linux2.6与2.4内核驱动程序的区别
·Linux下对C代码的编译
·Ubuntu 8.04开发环境设置的一些体会
·Linux文件系统ext4 相关知识大全
·升级Linux内核错误解决
·C语言编写Linux下的守护进程
·避免Linux脚本多次运行
·学习Linux源码及实践
·Linux下创建和编译Qt项目
·Linux 下部署Java工程编码问题
·Linux启动时自动加载脚本
·Linux log路径/var/log系统级别log syslog openlog cl
·准备进行Linux设备驱动的开发了
·Ubuntu调用函数分析
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·Linux环境下重新编译GCC-4.3.0
·Linux终端不回显
·Linux2.6与2.4内核驱动程序的区别
·Linux下对C代码的编译
·Ubuntu 8.04开发环境设置的一些体会
·Linux文件系统ext4 相关知识大全
·升级Linux内核错误解决
·C语言编写Linux下的守护进程
·避免Linux脚本多次运行
·学习Linux源码及实践
·Linux下创建和编译Qt项目
·Linux 下部署Java工程编码问题
  阅读排行
·开源空间 网络安全工具开发函数库Libne
·Linux下Qtopia Core 4.3(QT/E)交叉编译
·Linux socket编程实例:echo服务器程序
·Linux环境下OpenGL编程学习
·Linux编程时获取当前时间实例解析
·升级Redhat Linux 9.0内核有感
·GNU/Linux应用程序编程:用管道进行编
·Linux中断处理学习笔记
·Linux系统中限制用户进程CPU及内存占用
·解决Linux中Matlab中文乱码问题
·Linux环境下Wine的中文显示以及freetyp
·如何在Ubuntu 7.0上实现C/C++开发环境
·Linux下安装g77 fortran complier过程
·SUSE Linux中安装Quartus 7.2过程笔记
·Linux程序设计入门 系统进程的详细介绍
网摘收藏: