忘记密码   免费注册 查看新帖 | 论坛精华区

ChinaUnix.net

  平台 论坛 博客 认证专区 大话IT HPC论坛 徽章 文库 沙龙 自测 下载 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
12下一页
最近访问板块 发新帖
查看: 19680 | 回复: 17

LINUX 和 WINDOWS 内核的区别(更新到二、5 未完,待续) [复制链接]

论坛徽章:
0
发表于 2010-01-15 13:38 |显示全部楼层
本帖最后由 accessory 于 2010-04-08 22:31 编辑

LINUX 和 WINDOWS 内核的区别

[声明:欢迎转载,转载请注明出自CU ACCESSORY http://linux.chinaunix.net/bbs/thread-1153868-1-1.html]


关于LINUX和WINDOWS的口水站已经很多了。本文企图从技术角度来比较下2个主流操作系统的异同。偏重于内核部分。

一、动机:

我最早是 WINDOWS 阵营的。在WINDOWS下写过2年多的驱动程序。后来由于学习需要,转投LINUX,一晃也快2年了。期间经历了很多曲折,也学到了很多东西。由于在开发WINDOWS 驱动的时候,经验和知识都还不够,所以现在我感觉对LINUX似乎更熟悉些。

当然,各2年的学习也只能说是入了门。每个操作系统都很博大精深,而且在不停的发展。所以我只是从个人的角度来比较下,难免有不足之处,欢迎大家指正。

我写这篇文章希望能帮助那些同样从WINDOW阵营转过来的同学,也希望对那些从LINUX转到WINDOWS(比如老板要求)的人们和对2者都感兴趣的人们有些帮助。

总的来说,我觉得2个操作系统各有所长。我喜欢LINUX的自由,开放,也喜欢 WINDOWS的统一,兼容。下面将比较下2个操作系统的异同。

BTW:关于操作系统的版本,WINDOWS内核自WIN 2K 之后变化不是很大。我比较熟悉的也是WIN2K, WIN XP。而文中的LINUX 内核是2.6的。或者更明确的说是2.6.18。因为我对这个版本最熟悉。不过现在最新的好像已经 2.6.31了。另外关于2.6.18,引用本版T-Bagwell同学的一段话:“2.6.18貌似是相对比较稳定大版本,就像2.4.18一样,相对很稳定,很多企业,嵌入式都采用”。我常用的CENTOS 5就是基于2.6.18的。


二、二者区别:

我觉得二者最大的区别在于WINDOWS是个商业软件,而LINUX是开源软件。商业软件的好处是可以集中一大批人力物力做一件事情。容易统一,兼容(因为客户需求)。而开源的好处在于灵活,开放。


在下面的比较中,我一般先介绍下WINDOWS的,然后再介绍LINUX的。

1、观念:商业 VS 开源

WINDOWS是个商业软件,它的源码是保密的. 当然,其他非MS的人也还是有机会看到源码的. 如果你和MS 签订一个NDA(NON DISCLOSURE AGREEMENT),那么你也有可能拿到WINDOWS代码.

不过对于广大穷学生,以及连VISUAL STUDIO都在用盗版的抠门公司来说,和MS签个NDA几乎是不可想象的. 所以在WINDOWS世界,想了解WINDOW 内核的具体信息变得很难. 只能靠DDK(DRIVER DEVELOPMENT KIT) 和WINDBG(内核调试工具)泄漏出来的一些. 然后就是REVERSE ENGINEERING (逆向工程,可以简单的理解为反汇编,实际上更复杂一些).

这也造成了 <WINDOWS INTERNALS> 一书超级火爆的原因. 因为它是微软授权的,而且公布了很多内部细节. 另外一本讲内核的书是<UNDOCUMENTED WINDOWS 2K SECRETS>,虽然老了点,但是很多内幕。关于WINDOWS, undocumented 和secrets 这2个字绝对是可以类比“超级美女”的字眼。因为这些东西平时是看不到的.

与此对应,在LINUX世界,常见的一个词是RTFS。也就是READ THE FXXXXXX SOURCE CODE (这句话据说最早出于linus torvalds, 也就是LINUX之父)。意思也就是说“去读该死的代码”。言外之意,我把代码都给你你了,你还想要啥啊?这就好像一个男人对他GF / LP / LD说,我把全部的银行帐户密码都给你了,你还想要啥啊?

其实他不知道(或者认识不到)女人还需要你的时间,精力来陪她。就好像LINUX 程序员意识不到文档也是很重要的。当然,LINUX程序员应该也是知道文档的重要的,不过一个是维护成本太高,另外是LINUX 内核变化太快。所以LINUX 的文档总感觉比MSDN要差点。

话说当年WIN 2K的源码泄漏出来了一些,我也迫不及待的下载了一份.虽然至今也没看过,但是拿到WINDOWS 源码的感觉,绝对不比娶了一个绝世美女差. (当然,真要娶老婆还是看内在).

相比之下, LINUX 是开源的,代码随时可见. 这对刚从WINDOWS世界转过来的我是十分震撼的. 虽然我一直都知道这个事实, 但是当你发现了以前需要用尽各种方法,采用各种手段才可以得到只言片语的信息现在完全呈献在你面前的时候,你才能真正体会开源确实是一件伟大的工程.

看了LINUX源码之后,我终于发现,原来内核里大部分也是C语言(而不是以前想象的汇编). 同时内核似乎也就那样,不像之前想象的那么神秘. 原来编译内核也就是比编译个普通程序稍微麻烦点,用的时间长点. 原来编译内核用普通的C编译器就可以. 原来内核也是一个普通的可执行文件.(PS: 我怀疑MS也是用VS来编译WINDOWS的. 同时我也知道WINDOWS内核也是一个可执行文件.) 原来更换内核是如此的简单.

终于,内核可以被我随便改了. 哇哈哈哈!

言规正传,我觉得商业也还是有好处的。比如兼容性好,我以前用WDM写一个驱动,最多改下编译选项就可以在WIN 98, WIN 2K, WIN XP下运行。十分方便。而如果换成LINUX,那么你只好祈祷不同的内核版本之间没改那些你用到的头文件,函数接口。否则就要改代码了。

同时,开源的好处是适合学习,十分灵活。我觉得LINUX十分适合学校,学生。因为开源,当你发现不明白的地方的时候,可以直接去看源码(还记得RTFS? :wink: )。看不懂还可以到论坛上问。而对于WINDOWS,你想了解它的内部机制就只好GOOGLE,然后祈祷了。比较好的一个资源是MSDN下面的一个杂志,其中有一个主题叫UNDER THE HOOD, 或者搜搜 BUGSLAYER 也可以。这2个专题的作者Matt Pietrek和John Robbins都是大牛级的人物。

顺便说下UNDER THE HOOD 这个名字本身。以前一直不太理解,因为查字典的话,HOOD 的意思也就是个盖子。那么盖子下面有啥呢?为啥要看盖子下面呢?

来到美国之后,我渐渐明白了。HOOD 在这里应该理解为汽车的引擎盖。在美国,汽车是很普遍的。如果你开车,但是从来没打开过引擎盖,那么说明你只会用,而不了解汽车内部。那么如果你打开盖子看看呢?就可以看到很多内部细节,比如发动机啥的了。

在美国这个汽车王国,很多软件术语和汽车有关,因为人们日常生活中对汽车也很了解。比如“引擎”这个词,以前玩3D游戏的时候,常会看到介绍说,本游戏采用了最新的3D引擎。啥意思呢?就是游戏最核心的部分(汽车引擎)已经升级了。不是只把外面的人物形象改了下而已。

另外,开源软件也经常用汽车来类比。开源意外着你买了车(软件)后,可以随便拿到一个修理厂去修。也就是什么人都可以改,只要他懂。而COPY RIGHT 软件呢,就是你买了车,但是引擎盖子是锁着的,坏了只能去生产厂家修,其他人修不了。如果万一生产厂家不想修或者不会修呢?那你就只能认命了。

扯得有点远了,打住。


1.1、发布:2进制 VS 源码

这里主要讨论下WINDOWS和LINUX在发布程序采用的不同的形式和观念,这些和前面的商业还是开源的基本观念是联系在一起的。

在WINDOWS 世界,安装程序几乎全部都是以二进制形式发布的。也就是说,用户下载了一个程序,然后双击,一路NEXT,NEXT,NEXT就可以了。这个方法很适合初学者。在LINUX世界也有类似的机制,比如YUM, APT-GET 等。不过YUM和APT-GET都是比较晚才出现的,在那之前,在LINUX世界安装程序要更麻烦些。

有的时候,LINUX的YUM, APT-GET还不够用。比如有的人写的一个小软件,没有放到这些大的公共的库里面。这时,你就会发现他们一般提供一个或者一堆源文件,然后需要使用者自己下载,“编译”,安装。这也就是LINUX世界常见的源代码发布的形式。

一开始的时候,十分不习惯LINUX的这种发布形式。用惯了WINDOWS的双击安装,总觉得LINUX的安装很麻烦,又要自己./CONFIGURE, MAKE, MAKE INSTALL. 万一这个软件又依赖于其他的库,那么又要自己去找那些库,万一那些库又依赖其他的库...... 另外,各种库的版本也是一个问题,万一不兼容,那么又要找一个兼容的。

为什么LINUX世界这么多源代码发布呢?为什么WINDOWS世界流行2进制文件发布,而不是源代码呢?关于后者,很好解释,因为WINDOWS那边很多源代码都是商业秘密,是不公开的。同时,WINDOWS的程序用到的那些库在一般的系统里都装好了。所以2进制发布可行,也十分方便。

关于前一个问题,我觉得源代码发布的一个好处是可以在编译的时候进行一些优化和设置。比如同样的代码,在32或64位平台下编译的时候可以进行适当的优化。另外,用户也可以在编译的时候设置一些开关,这样在编译期间的优化一般要好于运行时间的优化。

不过源代码发布的一个坏处就是对使用者要求较高。如果运行configue,make命令顺利的话还好。如果万一不顺利,要自己改下头文件啥的,无疑是一般的使用者无法做到的。另外库之间的依赖关系如果是人手工处理的话也十分麻烦。好在LINUX世界后来有了YUM APT-GET之类的包管理系统。大多数软件都可以很方便的安装了。


2、进程及其创建 CreateProcess VS fork+execv

在WINDOWS世界,创建进程最常用的WIN 32 API 是 CreateProcess以及相关函数。这个函数需要一堆参数(WINDOWS API 的特点),不过很多参数可以简单的用NULL, TRUE OR FALSE来表示。另外,你直接告诉它要执行的是哪个文件。

到了LINUX世界,我模糊的知道fork是用来创建一个新进程的。但是当我看fork的函数说明的时候,呆住了。因为fork不需要任何参数。习惯了 CreateProcess 的10来个参数,突然换成一个不要任何参数的函数,感觉很奇妙。一方面觉得似乎事情简单了很多,不用去把10来个参数的每个意思都搞明白。另外一方面又很疑惑,我怎么告诉它我要执行某个文件呢?

后来才知道,LINUX中的进程的含义和WINDOWS中是不一样的。LINUX中的进程本身是可以执行的。而WINDOWS中,进程只是表示一个资源的拥有体,是不能执行的。要执行的话,一定需要一个线程。这也部分解释了为什么CreateProcess中为啥一定要传入要执行的文件的名字。

而fork的含义是把进程本身CLONE一个新的出来。也就是说,FORK之后,父进程和子进程都执行同样的一段代码。如果想区分的话,可以根据FORK的返回值来区分。引用一段fork的说明:

On success, the PID of the child process is returned in the parent's thread of execution, and a 0 is returned in the child's thread of execution.

同时在LINUX程序中,常见的写法如下:

int pid;
pid = fork();
switch (pid)
{
  case 0: //I am the child

  ;
  case -1: //failed.

  ;
  default: //I am the parent


}


为什么要这样设计呢?因为LINUX的设计目标之一就是应用于服务器。这种情况下,一个SERVICE可能会启动很多进程(线程)来服务不同的CLIENT. 所以FORK设计成快速复制父进程。子进程直接使用父亲的地址空间,只有子进程加载一个新的可执行文件的时候才创建自己的地址空间。

这样节省了创建地址空间这个庞大的开销,使得LINUX的进程创建十分快。不过实际上,这里的进程相对于WINDOWS中的线程,所以同WINDOWS中的线程创建相比,二者的开销应该差不多。

那么如何才能让新的进程加载一个可执行文件呢,这时就要用execv以及相关函数了。所以LINUX中,代替CreateProcess()的函数是fork+execv


3、文件格式 PE VS ELF

WINDOWS中的可执行文件格式是PE。到了LINUX就变成了ELF。2者有相似的地方,比如都分成几个SECTION,包含代码段,数据段等。但是2个又不一样。使得从一个转到另外一个的人不得不重新学习下。有点象在国内开惯了车的人,到了香港或者英国开车,虽然也是4个轮子一个方向盘,但是一个靠左行驶,一个靠右。总是需要些时间来习惯。

那么为啥LINUX不能和WINDOWS用同样的文件格式呢?我觉得可能的原因有几个。首先可能是2个差不多同时在设计的,彼此不知道对方的存在。所以也没法一方压倒一方。另外一个可能的原因是PE格式最开始还是保密的(后来MS公开了PE的SPEC),所以即使LINUX想直接用PE都不行。

顺便说下,MS OFFICE 的文档格式以前也是保密的,直到最近(好像是2008年)才公开。希望这可以使得OPEN OFFICE的开发顺利很多。


4、内核API:固定 VS 非固定

WINDOWS内核有一套固定的API,而且向后兼容。这使得WINDOWS 驱动的开发人员在不同版本之间移植时变得很容易。比如我用WDM (WINDOWS DEVICE MODEL) 开发一个驱动,最多改下编译选项就可以在WIN 98, 2K, XP, 2003 下使用。VISTA 我觉得也许都可以。

而LINUX没有固定的内核API。2.4版本的内核模块在2.6几乎很大可能是不能兼容的。要移植的话,不只是改个编译选项,而是要改一堆的头文件和实现文件等。而麻烦的是,即使都是2.6内核,不同的小版本之间也有些不同。如果你的内核模块刚好用到了变化的部分,那么也只好重新学习,然后改自己的头文件或者实现文件了。

固定内核API的好处是兼容性好,坏处是包袱比较大,不得不随时支持老的,也许是过时的接口。比如WINDOWS内核里有WDM 一套API, 但是又有网卡专用的 NDIS 一套API. 实际上2套API的很多设计目标是重合的。那么为什么有2个呢?因为NDIS是先出来的,为了兼容性,一定要支持。而NDIS又只针对网卡,所以又出来了WDM。

不固定API的坏处是升级很麻烦,外围的内核模块维护者很辛苦。好处是可以随时采用更新的设计。


5. WINDOWS与LINUX中的中断处理比较

5.1不同之处:

在WINDOWS中,有一个IRQL (注意不是IRQ)的概念。最早的时候,我以为是CPU设计里就包括了这个东东。后来看INTEL CPU手册,发现似乎没有。最近又看了一遍WINDOWS INTERALS 4TH。感觉这个东西应该是包括在PIC OR APIC里面的(关于APIC,可以看我以前的帖子)。对于X86-32,硬件设备的IRQ于IRQL之间的关系是:IRQL= 27-IRQ。引入IRQL的动机似乎是这样的:当CPU运行在低IRQL时,如果来了一个高IRQL对应的中断,那么低的中断的ISR是会被高的ISR抢过去的。就是说低的ISR又被一个更高级的ISR中断了。这样的好处是优先级高的ISR可以更快的得到响应。

另外,在具体实现中,由于操作PIC OR APCI改IRQL是比较费时的,所以WINDOWS是尽量不去直接操作硬件,而是等到万不得已的时候才改。

在LINUX中,似乎没有类似IRQL这样的观念。就我目前看过的书和代码来看,LINUX中的ISR或者是KERNLE最多是操作下CPU上的中断标志位(IF)来开启或者关闭中断。也就是说,要么中断全开,要么全关。

从这一点来看,LINUX在这部分的设计上比WINDOWS简单。


5.2 相似之处:

WINDOWS和LINUX似乎都把中断分成了2部分。在LINUX中叫ISR(还是其他?)和BOTTOM HALF。而WINODWS中,DPC(Deferred Procedure Calls)和APC(Asynchronous Procedure Calls)就非常类似BOTTOM HALF。二者把中断分成两部分的动机是差不多的。都是为了把ISR搞得越快越好。LINUX中,在ISR里一般关中断,所以时间太长的话,其他中断就得不到响应。WINDOWS中,ISR跑在一个很高的IRQL里面,同样会阻塞其他IRQL比较低的任务。

LINUX中的BOTTOM HALF 又可以分为TASKLET 和SOFIRQ。二者的主要区别是复杂度和并发性(CONCURRENCY)。下面COPY自<UNDERSTANDING LINUX NETWORK INTERNALS>一书。
Tasklet: Only one instance of each tasklet can run at any time. Different tasklets can run concurrently on different CPUs.
Softirq: Only one instance of each softirq can run at the same time on a CPU. However, the same softirq can run on different CPUs concurrentlyOnly one instance of each softirq can run at the same time on a CPU. However, the same softirq can run on different CPUs concurrently.

WINDOWS中的DPC有点类似TASKLET和SOFTIRQ。 DPC是系统范围内的,并且运行在DPC IRQL。是一个类似中断上下文的环境(INTERRUPT CONTEXT)。APC和DPC的区别是运行在更低级别的APC IRQL。另外,APC是针对每一个线程的。执行在某个线程环境中。主要目的也是把一部分事情放到以后去执行。APC又分为KERNEL APC 和USER APC。APC这个观念在LINUX中似乎没有类似的?至少我还没想到。

5.3 参考文献:
1.        WINDOWS INTERALS 4TH
2.        UNDERSTANDING LINUX NETWORK INTERNALS, 2005



UNICODE VS ASCII
KERNEL 4M/4K MIXED PAGE VS 4K PAGE
FS SEGMENT VS NO FS
GDI VS XWINDOWS
IRP VS FUNCTION POINTER
注册表 VS 普通文件


三、一致的地方

WINDOWS和LINUX很多地方又很相似。我觉得基本原因有2个。一个是2者都继续了一部分UNIX中的东西。另外一个是2者都主要基于X86体系结构。当然2者也都支持很多其他体系结构,特别是LINUX。

我下面主要讨论在X86体系下一致的地方。


1、观念
一起皆文件。

2、内核映射:2G:2G, 1G:3G. 线性映射

3、SOCKET

4、DEVICE DRIVER OR KERNEL MODULE

5、系统调用,中断


也欢迎各位直接补充在下面,我会整理到一楼。

[ 本帖最后由 accessory 于 2010-1-16 12:57 编辑 ]

评分

参与人数 1可用积分 +30 收起 理由
Godbach + 30 好文章

查看全部评分

论坛徽章:
0
发表于 2010-01-15 13:47 |显示全部楼层
期待,能否详细介绍下windows的各子系统的架构,注册表什么的

论坛徽章:
0
发表于 2010-01-15 14:05 |显示全部楼层
多谢支持,不过本篇估计主要还是以LINUX为主,毕竟是在LINUX论坛。

如果LS想了解WINDOWS的话,强力推荐2本书:
1。 WINDOWS INTERNALS ,现在出到了第5版,介绍了VISTA。这本书是任何一个WINDOWS 系统开发人员必读的宝典。看完,理解后,你就已经是高手了。前面几版,比如4 或者3 也不错,找不到5的话先看看他们也没问题。

2。 UNDOCUMENTED WINDOWS 2K SECRETS,虽然老了点,但是很多内幕。关于WINDOWS, undocumented 绝对是一个可以类比“超级美女”的字眼。 而且WIN 2K以后的变化不是很大。不像LINUX 2.4 到2.6,离得好像中国到美国那么远。:wink:

论坛徽章:
0
发表于 2010-01-15 16:12 |显示全部楼层
支持下LZ,收藏了!

论坛徽章:
0
发表于 2010-01-15 17:37 |显示全部楼层
占个位置,看看。
问一下LZ,RHEL为什么选2.6.18作为服务器版本,RedHat还真是的,我们的驱动还等给它维护一条2.6.18路线。
这个2.6.18有什么特别的吗? 还是就当时出RHEL的时候正好是2.6.18时代?

论坛徽章:
0
发表于 2010-01-15 19:25 |显示全部楼层
只能说windows可以随便抄袭linux的,而linux只能做自己的东西

论坛徽章:
0
发表于 2010-01-15 22:01 |显示全部楼层

回复 #6 emmoblin 的帖子

我到觉得linux在抄window的。以前最早接触驱动也是windows,那时被那个I/O子系统搞得昏头转向,觉得果然写driver的人工资高啊。后来再搞的2.4的linux的驱动,就觉得linux驱动蛮简单啊,为啥windows驱动模型要搞这么复杂。再后来2.6的linux driver出来了,感觉好像一个简化版的windows驱动模型啊,突然觉得明白了为什么WDM当时看起这么复杂的原因了。还有linux里面的block device driver的架构和WDM的IRP机制也很像,还有USB driver也和WDM的IRP机制很像,什么cancel handler,completion routine什么的,他们想解决的问题不都是WDM抽象出来的那些问题么

[ 本帖最后由 snail_314 于 2010-1-15 22:03 编辑 ]

论坛徽章:
4
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:28
发表于 2010-01-15 22:36 |显示全部楼层
原帖由 wsw1wsw2 于 2010-1-15 17:37 发表
占个位置,看看。
问一下LZ,RHEL为什么选2.6.18作为服务器版本,RedHat还真是的,我们的驱动还等给它维护一条2.6.18路线。
这个2.6.18有什么特别的吗? 还是就当时出RHEL的时候正好是2.6.18时代?


2.6.18貌似是相对比较稳定大版本,就像2.4.18一样,相对很稳定,很多企业,嵌入式都采用都
2.6.14好像也有

论坛徽章:
0
发表于 2010-01-16 01:37 |显示全部楼层
看来还是引起了一点口水战.

我觉得大家在发表自己的观点的时候,最好加点证据,就好像中学生写议论文一样. 否则只有论点,很难说明别人. (这里的别人主要指那些中间派,或者对2个观点都不了解的. 站在对立面的估计很难被说服,呵呵)

要辩论,那么首先要把题目设定好.把那些关键的概念定义好. 我认为"抄袭"有2种, 第一种是严格的抄袭,也就是抄袭代码,把别人的代码拿来直接用,或者稍微改改. 这种行为本身有可能是非法的. 比如商业抄袭开源后,又不开源. 但是如果开源抄袭开源,那也无所谓.

第二阵是抄袭"思想", 也就是人家已经首先提出了某个思想,然后被另外的人拿来重新"实现"了一遍, 代码还是自己写的, 但是根本思想和别人是一样的. 这种行为一般来说是合法的. 除非前者把那个具体的做法申请了专利,那么后者要么购买专利,要么用另外一种方法来实现.


有了上面2个定义,我们来看看下面的观点:

关于"windows可以随便抄袭linux的"这个观点,我不是很同意. 我假设这里的"抄袭" 是指第一种抄袭.

从法律上来说, WINDOWS是不可以随便抄袭LINUX代码的. 如果被发现,是要上法庭,被罚款的.

从个人经验上来看,我认识一个人在MS实习过,他们对这些开源算法很敏感,要求开发者不能使用.

当然, WINDOWS这么大,这么多开发者,也许私下里确实有人抄袭LINUX的代码. 那样的话,只能说看他们运气了. 如果被发现,那是要吃官司的.

另外,虽然WINDOWS是商业软件,看过源码的人很少.但是不代表没有第三方的人看过. 我觉得只要你和MS 签订一个NDA(NON DISCLOSURE AGREEMENT),那么你也有可能拿到WINDOWS代码.

如果这些中立厂商拿到WINDOWS代码后发现了他们抄袭开源的部分,他们也完全可以起诉WINDOWS,或者通知LINUX.(我认为是这样,不对对法律这块不是很熟悉)



好了, 再看7楼说的"linux在抄window". 看了蜗牛老兄后面的论据,我觉得你主要是说"思想"上的抄袭. 这个其实也不能太指责LINUX. 如果某种思想或者方法2方都在用,那么说明这种思想或者方法是成功的. 只要具体的方法没申请专利,并且专利没过期,别人就可以用.

另外从驱动上来说,很多硬件SPEC规定好了的. 软件只能那么做. 我不太熟悉USB, 但是我知道MS也是USB SPEC的制作者之一,也许在SPEC里就规定了一些类似MS特有的东西.LINUX想不支持都不行.

我看的UEFI SPEC (下一代BIOS) 中这种现象更明显.连文件格式都规定了支持FAT, 很多接口名字都规定好了, 完全是MS风格. 所以如果LINUX想支持这些硬件,就要这么做. 但是LINUX一般是没人参与制定这些SPEC的.

论坛徽章:
0
发表于 2010-01-16 01:38 |显示全部楼层

回复 #8 T-Bagwell 的帖子

没错. 另外一个原因是LINUX 版本之间变化比较大, 所以大家选定了一个也就不想随便改了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10张SACC2017门票等你来拿~

在数字化转型时代,云已成为万物智能的数字化大脑。而随着大数据应用、人工智能、移动互联网等技术的飞速发展,“智慧 +” 的概念正在深入到各行各业,提升企业效率,释放商业潜能,创造全新机遇。作为国内顶级技术盛会之一,2017 中国系统架构师大会(SACC2017)将于 10 月 19-21 日在北京新云南皇冠假日酒店震撼来袭。今年,大会以 “云智未来” 为主题,云集国内外顶级专家,围绕云计算、人工智能、大数据、移动互联网、产业应用等热点领域展开技术探讨与交流。本届大会共设置 2 大主会场,18 个技术专场;邀请来自互联网、金融、制造业、电商等多个领域,100 余位技术专家及行业领袖来分享他们的经验;并将吸引 4000 + 人次的系统运维、架构师及 IT 决策人士参会,为他们提供最具价值的交流平台。
----------------------------------------
优惠时间:2017年10月19日前

活动链接>>
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP