background image

从程序员的角度看

Linux 和 windows 的对比

 系统架构的对比 

1 内核 
(1) 内核的*性 
Linux 的内核表现出了高度的可配置性和独立性,主要是完成:IO 驱动设 
备管理

,TCP/IP,以及任务调度.Linux 的标准内核发布版本有 40~50MB,而我 

现在在一些评估板上试验的嵌入式

Linux 系统(使用 Arm 或 M68K 系列的 CPU) 

只用到了

2MB,同样实现了网络功能和完整的任务调度,这使得 Linux 可以适 

用于从高端服务器到嵌入式应用的各个等级的计算平台上

,与之相比,windows 没有明确

的内核概念

.windows 只适合台式机,NT 从未真正的打入高端服务器,WinCE 也遇到了一

些结构性的困难

(2) 内核的任务管理 
衡量一个内核的重要指标是多任务环境下的安全性和任务调度的效率

Linux 在这方面继承了 Unix 的优点.而 win9.x(包括 winme)从来就没有实现过安全的多
任务环境

,NT/2K 勉强做到了安全性,但是效率还是不敢恭维,我曾今将一个多串口并发

驱动的应用程序改写成多线程的方式

,原本希望提高处理速度,实际上速度降低了 2 到 3

.这也就不难理解为什么同样的企业级应用在低硬件的机器上跑得比高硬件配置的

NT/2k 快. 
2 系统的可增值性与历史兼容性 
一个设计优良的操作系统应该有一个精简和一致的构造

,在添加新的功能时不必破坏原

有的结构

,而且在后继发展中能够保持前后一致性.Unix 由于当初设计时的科学性,以致

20 多年的时间内,没有在设计思想上做过大的变动.虽然 Unix 有很多的版本,但是通过

Posix 标准,这些系统在源代码上保持高度的兼容. 
与之相比

,windows 的几乎每个操作系统的框架设计都显得十分的随意,几乎不考虑硬件

有了新的发展后

,会出现什么问题.windown16 位和 32 位两个时期的操作系统出现明显

"代沟",作为一个好的 os,这种硬件上的差异是应该由其本身来考虑的,而不是把问题

交给二次开发者

,比如定义一堆 PSZ,LPSZ 的指针,将来 64 位时代, 大概要出现 LLPSZ

 

3 GUI 图形用户界面 
Linux 的 GUI 建立在 X-WINDOWS 的基础,这是与 windows 的 GUI 完全不同的一种架

windows 的 GUI 是通过应用程序直接调用 winows 底层的 GUI 函数.或者说这是一种

垂直的关系

.而 Linux 的 GUI 是应用程序通过 socket 向 X-WINDOW server 发送请求实

现的,只有

X server 在真正的写屏幕.或者说这是一种平行的关系.后者的方式带来

更高的系统稳定性

,因为图形显示系统崩溃,对于 Linux 来说,只不过是死掉一个进程

而已,而对

windows 来说会导致整个系统的崩溃.当然 X-window 的开销要比

windows 的方式大,但是由于硬件的发展 X-window 在稳定性上的优点会将会弥补速
度上微不足道的差异.

 

 

4 应用开发环境 

 

Linux 上的开发工具没有 windows 的容易入门,并不代表 Linux 上的开发环境比

windows 差,其实 linux 编程入门慢,但是一旦熟悉了,以后就很少需要补充新的概念,
与之相比,微软用一些很

“简便”的编程概念吸引你,然后很快的淘汰这些概念,强迫你

学习新的概念,你发现很多时间花费在气喘嘘嘘的跟着微软后面跑.你在这方面花费
的时间远远超过你去学习

linux 编程的时间.