打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
WinNT和Linux的比较
关于WinNT和Linux的比较,这个话题说起来就没个完,随便讲讲吧。
  
  第一、微内核。很多人并没有理解,微内核实际上是一种以性能下降为代价,而提高软件架构合理性的设计方案。更加完美的微内核架构Mach,在他诞生之后多年,其性能都饱受诟病,直到更强大的PowerPC G5处理器出现之后,才在新一代的Mac OS 10上得以商用。那么,如果说采用了微内核架构WinNT,其性能达到甚至超过没有采用微内核架构的Linux,那么谁的代码更优化不就一目了然了吗?
  
  在有可能安装大量第三方驱动程序的条件下,微内核架构崩溃的概率要远小于非微内核架构,这只是微内核的优点之一。
  
  第二、GDI。WinNT的GDI处理更多的是放在内核中的,XWindow则不然,因此XWindow从理论上讲就不可能比WinNT的窗口系统效率高。这样的设计如果用于服务器的OS显然不可取,但在本贴的范围内,讨论的都是个人电脑的OS,显然WinNT要比Linux更适合图形界面的桌面应用(Linux或许更适合于服务器,因为它简单,简单意味着高效)
  
  第三、线程管理。Linux内核直到2.4版,线程的实现仍是相当低效率的,连Linux开发者自己也不满意,所以才有了2.6内核的NPTL,可是2.6内核投入商用才几年?从这一点来讲,恰恰就是“落后了一代”。
  
  同样,直到2.4内核,Linux的内核任务(核内线程)仍然是不可抢占的。实际上在2.4内核上运行多优先级的高并发的多线程程序仍然是一个笑话。
  
  我个人认为WinNT的线程同步接口比pthread要更加合理和丰富,使程序开发更加方便。WaitForMultipleObjects是WinNT线程同步上的一大特色,著名的ACE专门为其WinNT实现版本包装了这个方法。
  
  第四、I/O。WinNT多年以前就实现了与POSIX 1003.1c中 aio_xxxx 语义相类似的OVERLAPPED异步I/O机制,这种模式可以显著提高I/O的吞吐率,Linux呢?
  
  实际上在线程管理和I/O模式这些对系统性能至关重要的方面,无论WinNT、IBM AIX、SUN Solaris,其先进性都超过Linux一代。和这些成熟的商用系统比起来,Linux更像是个血气方刚的小伙子,年轻不成熟,但得到全球开源界的支持,因而强壮并且后劲十足。
  
  第五、网络处理。对于大规模并发的网络操作(想一想BT下载),select和poll实现了第一代Reactor模型,而WinNT的完成端口模型和Linux 2.6内核的EPOLL则可以称之为第二代Reactor,其共同特点是使用不止一条API调用,引入了一个真正的内核对象来存储Reactor的状态信息,从而避免了第一代Reactor巨大的查询开销。而完成端口模型的诞生时间,比EPOLL要早5年以上(虽然EPOLL后来居上,比完成端口更合理一些)。
  
  文件系统我不熟悉,就不说了。但以上的对比足够说明WinNT在内核的技术体系上比Linux先进一代了吧。
  
  实际上,在OS的核心技术上,Linux一直扮演的都是一个跟随者的角色,难道一帮程序爱好者的松散结盟,真的能比软件巨头们真金白银的投入更管用么?当然,现在Linux得到了很多软件巨头的支持,所以将来他或许会有后来居上的机会。2.6内核的许多新特性已经体现出了这种可能。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Linux高性能服务器程序框架
图解|深入理解Linux高性能网络架构的那些事
利用C语言实现http服务器
Nginx优化use参数epoll,kqueue,rtsig,eventport,poll
Windows完成端口与Linux epoll技术简介
网络编程--走出完成端口的误区-端口-电脑编程网
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服