偶然翻到大学时写的一篇论文

从技术角度分析Windows成为市场主导者原因

从1946年诞生第一台电子计算机以来,它的每一代进化都以减少成本、缩小体积、降低功耗、增大容量和提高性能为目标,伴随着计算机硬件的发展,同时也加速了操作系统(简称OS)的形成和发展。传统的操作系统定义如下:操作系统是控制和管理计算机系统内各种硬件和软件资源、合理有效地组织计算机系统的工作,为用户提供一个使用方便可扩展的工作环境,从而起到连接计算机和用户的接口作用。从这个意义讲,操作系统具有化腐朽为神奇的本领,最近几年,由于智能设备移动终端的普及,操作系统,这个幕后英雄更多的为人们所熟知。
如今操作系统有三大市场,1.服务器市场,2.个人电脑市场,3.移动设备市场,各种各样的操作系统在这三个领域攻城掠地,代表性的有windows , Linux, MAC OS, IOS, Android等,截止目前,这几种操作系统的市场份额如下:

(数据来源:http://marketshare.hitslink.com/

       (数据来源:维基百科http://zh.wikipedia.org)

从图中可以看出,windows在个人电脑及服务器领域都具有绝对的优势,在移动设备市场,则由IOS与Android蚕食了绝大部分份额。Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于便携设备,Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。iOS是由苹果公司开发的手持设备操作系统。苹果的Mac OS X操作系统一样,它也是以Darwin为基础的,因此同样属于类Unix的商业操作系统。
由此我们可以看出,如今操作系统主要是windows与类Unix(Unix-Like)之间的较量。这里,我们选取类unix的代表作—Linux,从技术角度来分析其与windows 的异同,以及与市场份额之间的关系。
关于Linux与Windows之争由来已久,二者各有一批忠实的拥趸,在技术论坛中,也会不时的看到关于二者的高屋建瓴的讨论。这里我们不单纯从技术辩驳谁对谁错,而是换一个角度,考虑一个操作系统流行的必要条件是什么,进而对比windows与linux在这方面的技术上的努力。众所周知,操作系统必须依存于硬件,计算机的发展离不开硬件的支持,于是,一个操作系统能否赢得到大多数市场份额,得到更广泛的支持,很重要一点便是:硬件兼容性。下面,我们便从硬件兼容性的角度,来对比Windows与Linux是如何应对硬件兼容性的。
关于硬件兼容性的讨论,可以从两个方面考虑,一是操作系统的体系结构,二是操作系统的I/O系统。首先我们来看windows如何应对不同的硬件架构,以获得最大可能的兼容性:
1. 体系结构篇
在操作系统的发展过程中,产生了多种多样的体系结构,几乎每一个操作系统在结构上都有自己的特点,但从整体上看,到目前为止,大致可划分为四种类型,并且这种划分又和操作系统的发展阶段相一致。目前这四种结构的系统都在实际使用中,各有其适用范围。这四种体系结构分别是1.模块组合结构 2.层次结构 3.虚拟机结构 4.客户/服务器体系结构。Windows操作系统并没有单纯地使用某一种体系结构,它的设计融合了分层操作系统和客户/服务器(微内核)操作系统的特点。
Windows有一个分层设计,系统的低层部分是与处理器体系结构相关的,或者是与平台相关的,这些部分被隔离到独立的模块中,所以,系统的高层部分可以不考虑体系结构之间的差别,也不用关心硬件平台上的差异。有两个关键的组件为操作系统提供了可移植性,它们是内核(包含在Ntoskrnl.exe)和硬件抽象层(HAL,包含在Hal.dll中)。与体系结构相关的功能,比如线程环境切换(thread context switching)和陷阱分发(trap dispatching)是在内核中实现的。在同样的体系结构中,不同系统之间有所差异的功能则是在HAL中实现的。
Windows采用了双模式(dual mode)结构来保护操作系统本身,以避免被应用程序的错误所波及。操作系统核心运行在内核模式(kernel mode)下,应用程序的代码运行在用户模式(user mode)下。每当应用程序需要用到系统内核或内核的扩展模块(内核驱动程序)所提供的服务时,应用程序通过硬件指令从用户模式切换到内核模式中;当系统内核完成了所请求的服务以后,控制权又回到用户模式代码。

上图中,中央的黑线即为用户模式与内核模式的分界,在windows中,它们都有自己的运行环境,而且它们可以访问的内存空间也并不相同。在32位系统中,内核代码可以访问当前进程的整个4GB虚拟地址空间,而用户代码只能访问底端的2GB虚拟地址(或3GB,如果打开了内核启动开关/3GB的话)。
黑线以下是Windows的核心态组件,它们包括以下部分。
◆windows 内核(kernel)包含了最低级的操作系统功能,例如线程调度、中断和异常调度、多处理器同步等,同时它也提供了执行体( Executive)来实现高级结构的一组例程和基本对象。
◆windows执行体(executive)包含了基本的操作系统服务,例如内存管理器、进程和线程管理、安全控制、I/O以及进程间的通信。
◆硬件抽象层(Hardware Abstraction Layer, HAL)是指一层特殊的代码,它把内核、设备驱动程序以及windows执行体的其余部分同硬件分隔开来,使它们可以适应多种平台。
◆设备驱动程序( device drivers)包括文件系统和硬件设备驱动程序等,其中硬件设备驱动程序将用户的 I / O函数调用转换为对特定硬件设备的 I / O请求;
◆ 窗口和图形系统(windowing and graphic system)包含了实现图形用户界面( Graphical User Interface,G U I)的基本函数,比如对窗口的处理,用户界面控件,以及绘制等。
从图中可以看出,Windows通过层次划分,很好的隔离了硬件的差异,HAL是一个可加载的、内核模式的模块,它提供了针对Windows当前运行所在的硬件平台的低层接口。它隐藏了与硬件相关的细节,比如I/O接口、中断控制器,以及多处理器通信机制——任何与体系结构相关或者与机器相关的功能。
所以,Windows内部组件以及用户编写的设备驱动程序并不直接访问硬件,当它们需要获得与平台相关的信息时,它们可以通过调用HAL例程来保持可移植性。Windows随带了几个HAL,在安装的时候只有一个HAL被选中,并且被拷贝到系统磁盘上,其文件名为Hal.dll。
2.I/O系统篇
Windows I/O系统的设计目标是,为应用程序提供一个有关设备的抽象,包括硬件设备和软件设备。它由5个部分组成:I/O管理器、即插即用管理器、电源管理器、WMI例程,以及设备驱动程序。其中I/O管理器是整个I/O系统的核心,它定义了一个非常通用的框架,允许各种功能的设备驱动程序容纳于其中。I/O管理器除了支持与设备相关的驱动程序以外,它也允许与设备无关的驱动程序进入到内核中,这一类驱动程序并不操纵任何硬件设备,它们进入到内核中以后,将变成内核的一部分,一旦经过I/O管理器的初始化,便与内核融为一体。因此设备驱动程序也是内核扩展的一种形式。

对上图各部件功能的说明:
◆I/O管理器是I/O系统的核心。它将“应用程序和系统组件”与“虚拟的、逻辑的和物理的设备”连接起来,而且它定义了基础设施来支持设备驱动程序;
◆设备驱动程序通常为某一特定类型的设备提供一个I/O接口。设备驱动程序接收来自I/O管理器传送给它们的命令,当这些命令完成时,它们通知I/O管理器,设备驱动程序通常使用I/O管理器来向其他的共享同一设备接口或控制的设备驱动程序转送I/O命令。
◆Pnp管理器与I/O管理器和一种成为总线型驱动程序(bus driver)的设备驱动程序紧密地一起工作,以指导硬件资源的分配,以及检测并响应硬件设备的加入和移除。Pnp管理器和总线驱动程序负责在检测到一个设备时,将该设备的驱动程序加载进来。当一个设备被加入到一个缺乏正确的设备驱动程序的系统中时,执行体即插即用组件就会请求用户模式Pnp管理器的设备安装服务;
◆电源管理器也与I/O管理器紧密地一起工作,以指导系统和各个单独的设备驱动程序经过电源状态的转变;
◆一组windows管理规范(WMI)支持例程,它们被称为windows驱动程序模型(WDM)WMI提供者。设备驱动程序可以使用WMD WMI提供者作为中间媒介与用户模式的WMI服务进行通信,因而它们间接地成了WMI提供者;
◆注册表被当作一个数据库,保存了当前系统上附载的基本硬件设备的描述信息,以及关于驱动程序初始化和配置的设置信息;
◆.inf文件是驱动程序安装文件,是一个特定的硬件设备与控制该设备的驱动程序之间的纽带。.inf文件由类似脚本的指令构成,指令描述了该.inf文件所对应的设备、驱动程序文件的源位置和目标位置、安装驱动程序所需要的注册表修改,以及驱动程序的相依性信息。
.cat文件用于保存数字签名。Windows利用数字签名检验驱动程序文件是否已经通过了Microsoft Windows硬件质量实验室WHQL的测试。
◆HAL提供一组API,将不同平台之间的差异隐藏起来,从而使驱动程序与处理器和中断控制器的特殊性相互隔离开。
通过上图说明,我们了解到, Windows的I/O系统是一个层层封装的虚拟机。Windows在系统核心中,对设备进行了数层封装:直接构建在设备上的是硬件抽象层(HAL),在此之上的是设备驱动程序,然后是I/O系统(I/O管理器、电源管理、WDM、WMI例程等);同时还有许多在用户态运行的系统服务如WMI服务,方便应用程序管理I/O设备。正因为有这种复杂的层次结构,统一管理、兼容成百上千不同种类的系统设备才成为可能。各个抽象层次把硬件结构上的多样性屏蔽掉,使用户能够按照一个统一的方式进行I/O操作。
I/O系统定义了Windows平台上I/O处理的模型,它完成一些公共的功能,或者说对于多个驱动程序都需要的功能。它的首要任务是创建IRP来响应I/O请求,并且负责在各个驱动程序之间传递这些请求包,然后当I/O完成时将结果返回给调用者。I/O管理器利用I/O系统对象(包括驱动程序对象和设备对象)来找到各种驱动程序和设备。在内部,Windows I/O系统是以异步方式来工作的,以便获得尽可能高的性能,但是,它为用户模式应用程序提供了同步和异步两种I/O能力。
设备驱动程序不仅包括传统的硬件设备驱动程序,而且也包括文件系统、网络和分层的过滤型驱动程序。所有的驱动程序都有一个共同的结构,它们使用共同的机制与I/O管理器进行通信,或者相互之间进行通信。遵循这种Windows驱动模型的设备驱动程序被称作WDM驱动程序。WDM包括了对Windows电源管理、即插即用和WMI的支持,而且,绝大多数即插即用驱动程序都遵从WDM规范。WDM驱动程序有以下三种类型:
总线型驱动程序管理一个逻辑的或物理的总线。一个总线型驱动程序负责检测在它控制的总线上所附载的设备,检测到以后通知Pnp管理器,它也管理该总线的电源设置。
功能型驱动程序管理某一特定类型的设备。总线型驱动程序通过Pnp管理器,将设备展示给功能型驱动程序。所谓功能型驱动程序,是指该驱动程序将一个设备的操作接口导出给操作系统。一般而言,它是掌握了最多关于该设备操作的知识的驱动程序。
过滤型驱动程序在逻辑上位于功能性驱动程序之上层或下层,增加或者改变一个设备或另一个驱动程序的行为。
I/O系统的这种接口模型使得这些驱动程序可以用高级语言来编写,因而缩短开发时间和增强它们的移植性。因为所有的驱动程序展示给操作系统的是共同的结构,所以,它们可以彼此之间按层次叠加起来,从而实现模块化能力和减少驱动程序之间的重复工作。而且,所有的Windows设备驱动程序都应该被设计成可以在多处理器系统上正确地工作。
同时,Windows对即插即用设备的管理是通过Pnp管理器进行,Pnp管理器的角色是:与设备驱动程序一起工作以便动态地检测硬件设备;建立一棵内部树,由这棵树来指导硬件设备列举和驱动程序安装。通过Pnp管理器的支持,使得Windows能够识别和适应硬件配置的变化,具备强大的灵活性。从用户角度来看,即无需理解硬件或手工配置的复杂性,就可以安装和移除设备。
电源管理器与设备驱动程序一起工作,以便当需要节约能源和延长电池使用寿命时可以将设备转移到低电源消耗状态。
总结:
通过对Windows体系结构及I/O系统的讨论,我们可以得出得知,Windows对硬件兼容性的技术支持主要体现在如下三个方面:
1.分层的体系结构,及可替换的HAL层,可以隔离硬件体系结构的不同,屏蔽硬件细节,向上提供统一的接口。
2.良好的驱动开发框架,使得可以使用高级语言来编写设备驱动,提高可移植性,另一方面,编写驱动程序只需遵从规范即可,不需要涉及内核的细节,从这点上可以降低开发难度,再者,驱动分层设计,可扩展性良好,这几点可以得到硬件厂商的广泛支持。
3.对即插即用硬件的完美支持,使得其对最终用户体验良好,从而能赢得用户。
我们再来看Linux在这两个方面的技术与Windows有何不同.1991年,Linus Torvalds为当时新推出的、使用Intel 80386微处理器的计算机开发了一款全新的操作系统,Linux由此诞生。我们同样是通过体系结构与I/O系统两个方面与Windows进行对比。
1.体系结构篇
Linux是一个主要运行于Intel架构的UNIX-like操作系统,它不仅具备UNIX系统的全部特征,而且与POSIX标准兼容。Linux的功能包括真正的多任务、虚拟内存、共享库、需求装载、共享的写时复制程序执行、优秀的内存管理以及TCP/IP网络支持等。它的发行遵守GNU的通用公共许可证,与Windows 有着完全不同的开发模式和发展历史。
Linux内核基本采用模块结构,单内核模式,这使得系统具有很高的运行效率,但系统的可扩展性及可移植性会受到一定的影响。为了解决这个问题,Linux使用了附加模块技术。利用模块技术,可以方便地在内核中添加新的组件或卸载不再需要的内核组件,而且这种装载和卸载可以动态进行。
内核模块的引入也带来了对系统性能、内存利用和系统稳定性的一些影响,可动态装卸的模块需要系统增加额外的资源来记录、管理,而装入的内核模块和其他内核部分一样,具有相同的访问权限,差的内核模块会导致系统不稳定甚至崩溃,一些恶意的内核模块可能对系统安全造成极大的威胁。
总的来讲,Linux内核基本采用模块式结构构造,同时加入动态的模块技术,在追求系统整体效率的同时,实现了内核的动态可伸缩性。这样的结构给系统的移植带来一定的负面影响。
Linux内核主要由5个模块构成:进程调度模块,内存管理模块,文件系统模块,进程间通信模块和网络接口模块。这几个模块的相互关系如下图

可以看到所有的模块都与进程调度有关,它们都需要依靠进程调度程序来挂起(暂停)或重新运行它们的进程。
下图是内核结构图:

在进程管理及调度方面,Linux是一个单块式的操作系统,操作系统通常在用户进程的内存空间内进行,可免去发生系统调用时的进程切换开销。Windows是一个准微内核操作系统,许多功能以单独的进程实现,从而提高了系统的模块化程度,但进程切换上的开销要大一些。
Linux支持内核级的线程,但它将线程定义为进程的另一个“执行上下文”,从而简化了进程/线程之间的关系和调度程序的设计,它的线程库提供了和POSIX兼容的线程同步机制。Windows支持的线程是典型的进程/线程模型。它的线程同步机制和Linux类似。Linux中进程是基本的调度单位,它提供了三种调度策略。
在进程间通信机制上,Linux提供了标准的UNIX IPC机制,而Windows 则在基本IPC机制的基础上,提供了许多直接面向应用程序的高级IPC机制。从本质上看,Linux的IPC机制接近于IPC原语,比较底层,提供了最大的灵活性,也可以在此基础上建立更加复杂的高级IPC机制,而Windows 在原语级提供的IPC机制有管道、命名管道、消息传递、共享内存、信号量等。
在内存管理上,Linux 和Windows 在面对相同的进程地址空间大小时,对内存布局的使用方式不同。Windows为进程准备了2GB弱的可用虚拟地址空间,而Linux中的进程地址空间使用相对更灵活些。
在虚拟内存的使用上,Linux内核为用户管理了非常多的细节问题,用户可以认为自己真正拥有4GB地址空间,而不用关心虚拟内存是否提交物理存储等问题。Windows为程序员提供了多种虚拟内存使用方案,虽然这些方案的使用有些复杂,但却提供了一定程度上的灵活性。它也支持DOS和Win16程序的执行,但为了提供这种兼容性,它的内存管理付出了极高的性能代价。
Linux 和Windows虽然均提供了内存共享技术,但它们的实现有些细微的差别。Linux提供给用户的接口非常简单,只需将自己的虚拟内存空间区域附加到共享内存对象之上。Windows则是通过内存映射文件提供共享内存机制,从使用上讲,略显复杂。
Linux的内存交换管理灵活性很强,用户可以在普通的文件系统上建立“无洞”的文件作为交换空间,还可以使用多个交换文件,从而可以动态增加交换文件。它也提供了利用交换分区作为交换空间的方法,此方法是优选的交换空间方案。Windows 的页面文件很难摆脱碎片化的危险,为了保证它采用无碎片的页面文件,必须采取一定的措施。
Linux 和Windows 在高速缓存的使用上有一些共同之处,均尽量采用系统的全部空闲RAM作为高速缓存区域,但Linux在高速缓存管理上有一些独到之处,这是它性能之所以高的根本原因所在。
在安全性方面,Linux采用的是UNIX在安全性方面成功的技术,尽管有一些安全漏洞,但因为设计上的开放性,这些漏洞能够在很快的时间内发现并得到解决。Windows 虽然采用的ACL技术,更加复杂和严密,但因为其密码加密步骤过于简单,密码容易被破解。安全性设计上的不公开性也导致其有很多安全上的漏洞。
2.I/O系统篇
Linux中设备是由文件来表示的,每种设备都被抽象为设备文件的形式,这样就给应用程序一个一直的文件界面,方便应用程序和操作系统之间的通信。设备文件集中防止在/dev目录下,一般有几千个,都是Linux系统在安装的时候自动创建的。首先当用户进程发出输入输出请求时,系统把请求处理的权限放在文件系统,文件系统通过驱动程序提供的接口将任务下放到驱动程序,驱动程序根据需要对设备控制器进行操作,设备控制区再去控制设备本身。设备驱动程序是一组相关函数的集合,它包含设备服务子程序和中断处理程序。
在Linux 中输入/输出设备被分为三类:块设备,字符设备和网络设备。这种分类的使用方法,可以将控制不同输入/输出设备的驱动程序和其它操作系统软件成分分离开来。例如文件系统仅仅控制抽象的块设备,而将与设备有关的部分留给低层软件,即驱动程序。字符设备指那些无需缓冲区可以直接读写的设备,如系统的串口设备/dev/cua0和/dev/cua1。块设备是仅能以块为单位进行读写的设备,如软盘、硬盘、光盘等,典型块的大小为512或1024字节。从名称使人想到,字符设备在单个字符的基础上接收和发送数据。为了改进传送数据的速度和效率,块设备在整个数据缓冲区填满时才一起传送数据。
在Linux中,对每一个设备的描述是通过主设备号和从设备号,其中主设备号描述控制这个设备的驱动程序,也就是说驱动程序和主设备号是一一对应的,从设备号是用来区分同一个驱动程序控制的不同设备。 例如主IDE硬盘的每个分区的从设备号都不相同,/dev/hda2 表示主IDE硬盘的主设备号为3而从设备号为2。Linux通过使用主、从设备号将包含在系统调用中的设备特殊文件映射到设备的管理程序,以及大量系统表格中,如字符设备表—chrdevs。 块(磁盘)设备和字符设备的设备特殊文件可以通过mknod命令来创建,并使用主从设备号来描述此设备。网络设备也用设备相关文件来表示,但Linux 寻找和初始化网络设备时才建立这种文件
从以上Linux与Windows对比,我们可以看出,两者在设计理念上就有本质上的不同。两者分属不同的阵营:单内核和微内核。Linux是一个单内核,Windows则是微内核的典型实例。同时,又很有意思的一点是,两者并不是一个绝对的单内核或微内核,又在彼此吸收对方的精华之处。
单内核是一种较为简单的设计,就是把它从整体上作为一个单独的大过程来实现,同时也运行在一个单独的地址空间上。因此,这样的内核通常以单个静态的二进制文件的形式存放于磁盘中。所有内核服务都在这样的一个大内核地址空间上运行。内核之间的通信是微不足道的,因为大家都运行在内核态,并身处统一地址空间:内核可以直接调用函数。这种模式的支持者认为单模块具有简单和性能高的特点。
另一方面,微内核并不作为一个单独的大过程来实现。相反,微内核的功能被划分为多个独立的过程,每个过程叫做一个服务器。理想情况下,只有强烈请求特权服务的服务器才运行在特权模式下,其他服务器都运行在用户控件。不过,所有的服务器都保持独立并运行在各自的地址空间上。因此,就不可能像单内核那样直接调用函数,而是通过消息传递处理微内核通信:系统采用了进程间通信(IPC)机制,因此,各个服务器之间通过IPC机制互通消息,互换“服务”。服务器的各自独立有效地避免了一个服务器的失效祸及另一个。同样,模块化的系统允许一个服务器为了另一个服务器而换出。
因为IPC机制的开销多于函数调用,又因为会涉及内核空间与用户空间的上下文切换,因此,消息传递需要一定的周期,而单内核中简单的函数调用没有这些开销。正因此,Windows NT内核都在其最近的版本中不让任何微内核服务器运行在用户空间,这可以看作是向单内核的学习。
Linux是一个单内核,也就是说,Linux内核运行在单独的内核地址空间上。不过Linux也汲取了微内核的精华(单内核最大的缺点是可扩展性):其引以为豪的是模块化设计、抢占式内核、支持内核线程以及动态装载内核模块的能力。不仅如此,Linux还避其微内核设计商性能损失的缺陷,让所有事情都运行在内核态,直接调用函数,无需消息传递。
不过,凡事有利必有弊,正是由于采用单内核结构,使得Linux对内核的错误比较敏感,为了避免内核级代码可能给系统带来的危害,Linux对内核代码(如驱动程序)甚至了非常严格的检查,以避免兼容性问题。检查的内容包括:完整的内核版本号(含发行者自定义的部分)、CPU类型、GCC版本号,甚至连函数调用参数传递的方式都需要检查。
如此严格的检查虽然保证了Linux内核稳定,可靠地高速运行,但却给驱动程序开发者带来了麻烦。Linux不像Windows那样具有通用的二进制驱动程序,有时甚至是在不同的内核版本、不同的发行商与不同的GCC下,源程序都有所不同。同时由于在操作系统上的近乎垄断的地位和驱动程序在不同操作系统上的巨大差异,大多数硬件产品厂商只开发Windows驱动, 而Linux驱动多为业余人员和爱好者编写。由于爱好者往往不能够完整了解硬件产品的核心技术,而没有严密组织的开发过程通常并不严谨,造成程序中存在众多缺陷。
除了硬件兼容性之外,我们也应当看到在Linux还依然存在着其他问题:
(1) Linux发行版本过多,各版本之间存在较大差异
Linux做为自由软件,其核心的开发和规范一直是由Linux社区控制着,版本也是唯一的,而发行版本不受限制,发行版本中最著名的是Red Hat,其他发行版本包括在亚洲销量最大的Turbo Linux、在南美洲拥有最高市场份额的Conectiva S.A., 全球最大的商用Linux平台SCO, 界面华丽、在欧洲市场占第一位的SuSe SuSE Linux AG等,在国内市场占有一席之地的有中科红旗、中软、Xteam等等。
即使是支持Linux的软硬件厂商也不可能分别支持每一个Linux的发行版本,他们之中的大多数只支持Red Hat或Turbo Linux等发行量最大、影响最广的国外厂商的发行版本,这样对国内Linux的发展不利,不符合中国发展自主版权操作系统、保护国产软件的需要。
(2) 缺乏应用程序的支持
Linux操作系统已经解决了USB设备的支持问题,但新的问题随之而来。如USB闪盘,国产Linux已可做到自动挂载,但部分闪盘提供了密码校验功能,而校验程序是Windows应用程序,无法运行在Linux上,因此这部分闪盘便无法在Linux操作系统上使用了。再如CD-RW刻录机、USB扫描仪、数码相机等,也存在同样问题,虽然Linux可以识别该设备的存在,但是厂商并不提供相关的刻录、识别、图像等软件支持,用户仍无法像在Windows系统上那样顺利使用。
(3) 缺乏必要的推进力量
由于目前95%的桌面系统和40%以上的系统使用Windows,造成众多硬件厂商不愿意或没有动力开发Linux的相关驱动。在近期的Linux硬件兼容性测试中,硬件厂商纷纷表现出对Linux兼容性的重视,但送测硬件的厂商均未能在测试中提供相关Linux驱动,表明大多数硬件厂商仍在观望,推动Linux硬件兼容性的力量还有待继续加强。
(4) 缺乏必要的认证手段
硬件产品认证并不是新鲜事务,对于硬件产品认证的机构很多,像WHQL(微软硬件质量实验室、长城认证、TCO认证、FCC认证),认证的方向涵盖了Windows兼容性认证、电磁兼容认证、环保认证等诸多方面,事实证明,通过这些认证,有效的保证了广大最终用户得利益,确保了硬件产品的质量和对操作系统的支持。尤其是WHQL(微软硬件质量实验室),事实表明,通过了WHQL认证的硬件产品和驱动程序Windows操作系统存在兼容性问题会减到最小,原来常见的蓝屏、死机等不稳定的情况也大大减少。而目前还没有任何认证手段可以证明硬件对Linux操作系统的支持程度。
即便如此,我们仍然不能否认,Linux是一个优秀的操作系统,近几年来,随着移动设备市场的兴起,Linux又展示了其强大的生命力,我们期待着它在移动终端上的表现,因为在任何一个行业,垄断都是我们不想看到的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值