本人在Unix SYS5,DOS,Windows3.x,windows9.x/NT 和Linux几个不同时期流行的OS上写过程序.在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在稳定性上的优点会将会弥补速度上微不足道的差异.
[1] [2] 下一页