windows和Linux比较
一、就操作系统设计的复杂度上,windows要超过Linux
如果windows抛弃人机操作的窗口界面,其性能并不比linux差;
编写Web浏览器的难度要远大于编写Web服务器的难度;
二、为何大公司喜欢用linux
1、免费且开源,相对于免费,开源更加重要;
2、开源意味着更安全;
3、开源意味着可优化;
因为开源所以透明,因为透明,所以安全,但安全是相对的。
所谓的安全是针对大公司,是针对那些真正懂linux内核的人。他们可以自己定制化linux,比如加入自己特性化的功能,修改潜在的漏洞,或者他们认为需要完善的地方,甚至可以调优linux来解决自身业务的瓶颈。
透明是把双刃剑,对那些只会linux命令的人,开源并不意味着安全,因为你根本搞不清楚自己使用的机器是否被控制, 如果别人给你一个内核中藏有木马的linux,那么恭喜你,你可能永远都会沉浸在自己幻想的所谓安全中。
换句话说,如果windows开源了,那么windows对大公司是安全的,他们可以一窥windows内核,并对其增删改,去掉 所有图形化元素,将动态加载驱动改为内核态加载,优化IOCP并将其发挥到,我相信windows也会变成安全、稳定、 可靠、的服务器,而且会比linux还要。
但对于绝大部分在windows下做开发的程序员来说,windows开不开源其实跟你没有半毛钱关系,除非你有能力将windows 上千万行的代码耐心看一遍,前提是你要能看懂。首先,你要把汇编语言再学习一遍,把操作系统的书多看几遍,把编译原理的书也多看几遍,否则这些代码在你面前和天书没本质区别;其次你要有足够的时间和足够耐心;后,你要真能识别出风险,毕竟windows是成熟的商业操作系统,如果你认为自己的智商能够超越微软那些架构师几十年的精心设计和打磨,那你还改屁操作系统啊,直接进中科院设计国产OS为国增光吧。
记住:对别人的安全并不意味着对你安全!
开发后台程序和懂服务器、懂操作系统,完全是两个概念,这两者的差别就像狗和热狗的差别一样。 在linux上开发java后台应用服务,并不意味着这个程序员有多了解linux,后台程序跑在Apache、Tomcat、Nginx这些 真正的服务器上,这些服务器在帮你的程序优雅的处理高并发、高吞吐量和低延迟,而这些服务器必须要充分利用 linux内核的性能,这就意味你要真正理解什么是多线程,什么是线程池,select、poll和epoll的区别;
三、在网络方面,windows的IOCP模型要优于linux的epoll模型
1、IOCP真正发挥了多核CPU的性能,让IO操作均衡的负载在不同CPU线程上,epoll很可能会让有的线程累死,有的饿死;
2、IOCP是Proactor异步IO,epoll是reactor同步IO;
打个不恰当的比方,IOCP属于导弹发射后不管,后通知你击中目标;epoll属于发射后需要分阶段导航。有人说epoll给了程序员更高的自由度处理来自内核的IO数据,毕竟可以手把手的制导导弹,很有成就感,但那是针对高水品程序员,如果你的水平一般的话,那结果可能是灾难性的。很有可能你会亲手把发射的导弹送出地球,或者引发另一场战争。实际上IOCP在业务处理上的难度要大于EPOLL,因为异步IO的原因,你的上层完整的业务已被碎片化了。
3、windows比linux在服务器性能上的慢,并不代表IOCP比Epoll差,这是windows定位的问题,如果你要让用户易用,那就要在某些方面做些牺牲。
多说几句:
1、我特烦那些人云亦云,一知半解的人,言必谈linux好,说来说去就是那么几条:linux开源、安全、稳定。你看,很多大公司在用,windows还要经常打补丁,有时还崩溃。linux都特么开源了,等于人人都可以随时打补丁,人家偷偷打补丁还要让你知道么?如果自己代码写的烂,不管是linux还是windows,都一样的下场。合着linux就是专门为跑你的烂代码设计的,永远不崩溃跑不死么?
2、你要是觉得linux好,那就在linux上写代码、看小电影、上网聊天,好不要在windows上办公。你一边用着windows,一边鄙视windows,端起碗来吃肉,放下碗就骂娘,有意思么?
3、你拿linux服务器方面的性能比windows 服务器性能,拿长处比短处;你怎么不拿windows的人机交互和linux的人机交互做对比啊。当然这种装逼犯,肯定会自豪的说:我们大牛级猿就喜欢玩这种DOS命令行,你咋不复古去玩打孔卡片交互呢。你干嘛还用智能触屏手机,干脆腰上挂个BP机,左手小灵通,右手大哥大,不是更拉风么?
我特么明明能用打火机点着的,你非要给我给我展示一段钻木取火野外求生。说到底计算机、操作系统只是工具,怎么好用怎么好,不是让你噼里啪啦对着键盘一顿敲,自我感觉风骚的一比。我特么就问你:键盘敲出来的命令和鼠标点出来的命令,到底区别在哪?区别在你的骚操作上么?你的骚操作能否让CPU感知到,从而让CPU跑的更快?
无意为Windows洗白,Windows当然有不好的一面,实事求是有一说一,因为没有一个操作系统是高大全的。
==================更新顺便答复===================
1、不管是支持的还是反对的,都表示感谢。文章的言辞可能比较激烈,本意没有贬低linux,当然更没想表扬windows。能够引发大家的思考和讨论才是目的,即使是反对的意见我觉得也挺好的。我写的历史文章连个评论都没有,这就让我无比的郁闷。。。。。
2、本人一直使用C/C++开发,Linux、windows两个平台上都写过服务器程序,linux平台上开发过IM服务器,使用epoll模型;windows平台上开发过web服务器,使用IOCP模型。客户端程序也写过很多,因为写程序能挣到钱从而让我快乐。。。。。。
3、脱离具体业务谈服务器性能都是耍流氓,绝知此事要躬行。。。。。。
4、还是多说一句:因果关系不能颠倒,不是因为很多设备上都使用linux就证明linux好,而是因为linux的开源,让大家有机会选择它来作为底层操作系统,从而支持上层业务。试想如果linux不开源,设备商该如何选择,自己开发一套操作系统么?如果IOS开源了,很多设备也会支持IOS。不能因为只有苹果一家公司使用IOS,而Android有很多设备商支持,就得出Android比IOS好。设备商就是想支持IOS,那也要苹果同意才行啊。我相信很多设备商都在骂狗日的苹果为何这么保守,为什么就不让我上。。。。。。
相关文章