{eval=Array;=+count(Array);}
一、就操作系統(tǒng)設(shè)計(jì)的復(fù)雜度上,windows要超過Linux
如果windows拋棄人機(jī)操作的窗口界面,其性能并不比linux差;
編寫Web瀏覽器的難度要遠(yuǎn)大于編寫Web服務(wù)器的難度;
二、為何大公司喜歡用linux
1、免費(fèi)且開源,相對于免費(fèi),開源更加重要;
2、開源意味著更安全;
3、開源意味著可優(yōu)化;
因?yàn)殚_源所以透明,因?yàn)橥该鳎园踩踩窍鄬Φ摹?/p>
所謂的安全是針對大公司,是針對那些真正懂linux內(nèi)核的人。他們可以自己定制化linux,比如加入自己特性化的功能,修改潛在的漏洞,或者他們認(rèn)為需要完善的地方,甚至可以調(diào)優(yōu)linux來解決自身業(yè)務(wù)的瓶頸。
透明是把雙刃劍,對那些只會linux命令的人,開源并不意味著安全,因?yàn)槟愀靖悴磺宄约菏褂玫臋C(jī)器是否被控制, 如果別人給你一個(gè)內(nèi)核中藏有木馬的linux,那么恭喜你,你可能永遠(yuǎn)都會沉浸在自己幻想的所謂安全中。
換句話說,如果windows開源了,那么windows對大公司是安全的,他們可以一窺windows內(nèi)核,并對其增刪改,去掉 所有圖形化元素,將動態(tài)加載驅(qū)動改為內(nèi)核態(tài)加載,優(yōu)化IOCP并將其發(fā)揮到極致,我相信windows也會變成安全、穩(wěn)定、 可靠、優(yōu)秀的服務(wù)器,而且會比linux還要優(yōu)秀。
但對于絕大部分在windows下做開發(fā)的程序員來說,windows開不開源其實(shí)跟你沒有半毛錢關(guān)系,除非你有能力將windows 上千萬行的代碼耐心看一遍,前提是你要能看懂。首先,你要把匯編語言再學(xué)習(xí)一遍,把操作系統(tǒng)的書多看幾遍,把編譯原理的書也多看幾遍,否則這些代碼在你面前和天書沒本質(zhì)區(qū)別;其次你要有足夠的時(shí)間和足夠耐心;最后,你要真能識別出風(fēng)險(xiǎn),畢竟windows是最成熟的商業(yè)操作系統(tǒng),如果你認(rèn)為自己的智商能夠超越微軟那些頂級架構(gòu)師幾十年的精心設(shè)計(jì)和打磨,那你還改屁操作系統(tǒng)啊,直接進(jìn)中科院設(shè)計(jì)國產(chǎn)OS為國增光吧。
記住:對別人的安全并不意味著對你安全!
開發(fā)后臺程序和懂服務(wù)器、懂操作系統(tǒng),完全是兩個(gè)概念,這兩者的差別就像狗和熱狗的差別一樣。 在linux上開發(fā)java后臺應(yīng)用服務(wù),并不意味著這個(gè)程序員有多了解linux,后臺程序跑在Apache、Tomcat、Nginx這些 真正的服務(wù)器上,這些服務(wù)器在幫你的程序優(yōu)雅的處理高并發(fā)、高吞吐量和低延遲,而這些服務(wù)器必須要充分利用 linux內(nèi)核的性能,這就意味你要真正理解什么是多線程,什么是線程池,select、poll和epoll的區(qū)別;
三、在網(wǎng)絡(luò)方面,windows的IOCP模型要優(yōu)于linux的epoll模型
1、IOCP真正發(fā)揮了多核CPU的性能,讓IO操作均衡的負(fù)載在不同CPU線程上,epoll很可能會讓有的線程累死,有的餓死;
2、IOCP是Proactor異步IO,epoll是reactor同步IO;
打個(gè)不恰當(dāng)?shù)谋确剑琁OCP屬于導(dǎo)彈發(fā)射后不管,最后通知你擊中目標(biāo);epoll屬于發(fā)射后需要分階段導(dǎo)航。有人說epoll給了程序員更高的自由度處理來自內(nèi)核的IO數(shù)據(jù),畢竟可以手把手的制導(dǎo)導(dǎo)彈,很有成就感,但那是針對高水品程序員,如果你的水平一般的話,那結(jié)果可能是災(zāi)難性的。很有可能你會親手把發(fā)射的導(dǎo)彈送出地球,或者引發(fā)另一場戰(zhàn)爭。實(shí)際上IOCP在業(yè)務(wù)處理上的難度要大于EPOLL,因?yàn)楫惒絀O的原因,你的上層完整的業(yè)務(wù)已被碎片化了。
3、windows比linux在服務(wù)器性能上的慢,并不代表IOCP比Epoll差,這是windows定位的問題,如果你要讓用戶易用,那就要在某些方面做些犧牲。
多說幾句:
1、我特?zé)┠切┤嗽埔嘣疲恢虢獾娜耍员卣刲inux好,說來說去就是那么幾條:linux開源、安全、穩(wěn)定。你看,很多大公司在用,windows還要經(jīng)常打補(bǔ)丁,有時(shí)還崩潰。linux都特么開源了,等于人人都可以隨時(shí)打補(bǔ)丁,人家偷偷打補(bǔ)丁還要讓你知道么?如果自己代碼寫的爛,不管是linux還是windows,都一樣的下場。合著linux就是專門為跑你的爛代碼設(shè)計(jì)的,永遠(yuǎn)不崩潰跑不死么?
2、你要是覺得linux好,那就在linux上寫代碼、看小電影、上網(wǎng)聊天,最好不要在windows上辦公。你一邊用著windows,一邊鄙視windows,端起碗來吃肉,放下碗就罵娘,有意思么?
3、你拿linux服務(wù)器方面的性能比windows 服務(wù)器性能,拿長處比短處;你怎么不拿windows的人機(jī)交互和linux的人機(jī)交互做對比啊。當(dāng)然這種裝逼犯,肯定會自豪的說:我們大牛級猿就喜歡玩這種DOS命令行,你咋不復(fù)古去玩打孔卡片交互呢。你干嘛還用智能觸屏手機(jī),干脆腰上掛個(gè)BP機(jī),左手小靈通,右手大哥大,不是更拉風(fēng)么?
我特么明明能用打火機(jī)點(diǎn)著的,你非要給我給我展示一段鉆木取火野外求生。說到底計(jì)算機(jī)、操作系統(tǒng)只是工具,怎么好用怎么好,不是讓你噼里啪啦對著鍵盤一頓敲,自我感覺風(fēng)騷的一比。我特么就問你:鍵盤敲出來的命令和鼠標(biāo)點(diǎn)出來的命
由于開發(fā)人員不同,面對的用戶群體不同,Linux系統(tǒng)和Windows系統(tǒng)的區(qū)別可以從以下幾方面來看:
從技術(shù)層面來看:Linux和Windows最大的區(qū)別是Linux允許所有用戶具有完全訪問代碼的權(quán)限,用戶可以做自己喜歡的任何改動。訪問代碼的好處是可以很容易地修復(fù)Bug,并改進(jìn)系統(tǒng)。相反,大多數(shù)Windows用戶不具有訪問代碼的權(quán)限,也就說Windows系統(tǒng)不允許用戶進(jìn)行修改;
從用戶定位來看:Windows是個(gè)商業(yè)系統(tǒng),更適合“普通人”,這個(gè)系統(tǒng)能夠開箱即用,不用進(jìn)行各種復(fù)雜的配置,操作只有那么固定的幾種,能夠輕松的滿足辦公、游戲等日常需要。而Linux系統(tǒng)作為一類開源系統(tǒng),更接近底層,開放的東西也更多,更適合IT技術(shù)人員使用;
從價(jià)格角度來看:Linux和Windows服務(wù)器之間有比較明顯的差異,Linux能夠成為流行的Web操作系統(tǒng)之一,主要原因是它相對便宜,Windows則昂貴得多;
從安全角度來看:Linux比Windows有更多的漏洞,但Linux開源軟件開發(fā)方式有助于暴露錯誤,用眾人智慧解決問題,各種補(bǔ)丁更新也很快。
本質(zhì)上嘛,就是文件系統(tǒng)的區(qū)別
舉個(gè)例子(僅僅是為了說明問題)對于二進(jìn)制數(shù)據(jù)段01011101,Linux認(rèn)為它表示加法運(yùn)算符,Windows則認(rèn)為它是減法運(yùn)算符,這就是兩個(gè)系統(tǒng)本質(zhì)區(qū)別,就好比我國人認(rèn)為豎起大拇指表示贊同,厲害,但在有的國家就是不好的意思。
中文的操作系統(tǒng)這個(gè)詞,其對應(yīng)英文是Operating System,將Operating翻譯成操作,其實(shí)不是很準(zhǔn)確,當(dāng)然想換個(gè)更準(zhǔn)確的詞也不容易,但我們要知道,這個(gè)Operating其實(shí)有控制的意思。而OS的本質(zhì)其實(shí)應(yīng)該是控制,即它是控制計(jì)算機(jī)的各種資源的系統(tǒng),OS主要包含四種功能:CPU管理(進(jìn)程管理),內(nèi)存管理,外存管理和I/O管理。
要比較Linux系統(tǒng)和Windows系統(tǒng)的本質(zhì)區(qū)別,不是討論其是不是共享、價(jià)格是不是便宜或服務(wù)支持好不好,而要考慮其本質(zhì)的區(qū)別,我認(rèn)為主要有四個(gè):
不同的體系和生態(tài)
經(jīng)過ucloud被禁用GMS服務(wù)后,國內(nèi)很多人都明白了生態(tài)對一個(gè)操作系統(tǒng)的重要性。我認(rèn)為對于Windows系統(tǒng)和Linux系統(tǒng)來說,生態(tài)不同是其本質(zhì)的一個(gè)區(qū)別。
對于普通的Windows個(gè)人用戶來說,現(xiàn)在在Windows平臺上,你幾乎可以找到所有的你需要的軟件,如果你有覺得一個(gè)重要需求還得不到滿足,那可以恭喜你,你可能發(fā)現(xiàn)了一片藍(lán)海,馬上可以組織人馬來開發(fā)這方面的軟件了,靠率先推出一種軟件,你發(fā)家致富實(shí)現(xiàn)財(cái)務(wù)自由估計(jì)是沒問題的。
而對于普通的Linux用戶來說,現(xiàn)在普通的辦公軟件都還能滿足,但你想一些個(gè)人專業(yè)軟件或玩熱門游戲,則幾乎都找不到合適的替代品。簡單說,Linux桌面版還只能作為學(xué)習(xí)linux的工具,想在上面完成一些專業(yè)工作則不可能。
從服務(wù)器搭建的角度來看,這也是兩個(gè)體系:
在windows系統(tǒng)下,基本上微軟軟件可以把一切都搞定,目前就是Windows Server 2003操作系統(tǒng)+SQL Server的標(biāo)準(zhǔn)版或者企業(yè)版,個(gè)人服務(wù)器也可以在Windows10下搭建。
一般Linux系統(tǒng)使用LAMP組合,就是Linux + Php + Mysql + Appache,可以發(fā)布PHP網(wǎng)站。另外也可以支持ASP等。
兩大操作系統(tǒng)的體系結(jié)構(gòu)不同
Window體系結(jié)構(gòu)是分層的模塊化結(jié)構(gòu),主要層次有硬件抽象層HAL、內(nèi)核、執(zhí)行體和大量的子系統(tǒng)集合。
1.內(nèi)核:內(nèi)核執(zhí)行Windows操作系統(tǒng)中最基本的操作,主要提供下列功能:線程安排和調(diào)度、陷阱處理和異常調(diào)度、中斷處理和調(diào)度、多處理器同步、供執(zhí)行體使用的基本內(nèi)核對象。
內(nèi)核始終在核心態(tài)上,代碼短小緊湊、可移植性好。通常除了中斷服務(wù)例程(ISR),正在運(yùn)行的程序是不能搶先內(nèi)核的。
2.硬件抽象層HAL:為運(yùn)行在WINDOWS操作系統(tǒng)上的硬件平臺提供低端接口,HAL隱藏各種與硬件有關(guān)的細(xì)節(jié)。
3.執(zhí)行體:執(zhí)行體從用戶態(tài)導(dǎo)處并且可以調(diào)用函數(shù)。
4.系統(tǒng)進(jìn)程和系統(tǒng)線程:系統(tǒng)進(jìn)程是一種特殊的、只運(yùn)行在核心態(tài)的系統(tǒng)線程(只運(yùn)行在內(nèi)核態(tài),執(zhí)行加載于系統(tǒng)空間中的代碼)宿主。
系統(tǒng)線程沒有用戶進(jìn)程地址空間,因此必須從系統(tǒng)內(nèi)存堆中分配動態(tài)存儲區(qū),系統(tǒng)線程只能從內(nèi)核調(diào)用。
linux體系結(jié)構(gòu)可以認(rèn)為是分成了內(nèi)外兩塊空間(現(xiàn)在CPU可以執(zhí)行不同工作模式):
用戶空間:用戶空間又包含了用戶的應(yīng)用程序和c庫
內(nèi)核空間:內(nèi)核空間又包括系統(tǒng)調(diào)用,內(nèi)核以及平臺架構(gòu)相關(guān)的代碼
用戶空間和內(nèi)核空間是程序執(zhí)行的兩種不同的狀態(tài),我們可以通過系統(tǒng)調(diào)用和硬件中斷來完成用戶空間到內(nèi)核空間的轉(zhuǎn)移。
1.Linux內(nèi)核
內(nèi)核是操作系統(tǒng)的核心。
有:系統(tǒng)調(diào)用、內(nèi)存管理、進(jìn)程管理、設(shè)備驅(qū)動文件、文件系統(tǒng)和網(wǎng)絡(luò)管理等。
2.Linux Shell
Shell是用戶交互界面,提供用戶與內(nèi)核進(jìn)行交互的接口。
3.Linux文件系統(tǒng)
文件系統(tǒng)是文件儲存在磁盤等儲存設(shè)備上的組織方法。
4.Linux應(yīng)用程序
標(biāo)準(zhǔn)的Linux系統(tǒng)一般都有一套稱為應(yīng)用程序的程序集,包括:文本編輯器、編程語言、X Window、辦公套件、Internet工具和 數(shù)據(jù)庫等。
核心代碼的可訪問性
Linux和Windows之間最大的區(qū)別之一,就是Linux允許所有用戶都具有完全訪問代碼的權(quán)限,他們可以做自己喜歡的任何改動。訪問代碼的好處是,它可以很容易地修復(fù)Bug,并改進(jìn)系統(tǒng)。
相反,大多數(shù)Windows用戶不具有訪問代碼的權(quán)限,也不允許他們進(jìn)行修改。
有些人覺得,公開核心的代碼,會有一些惡意開發(fā)者破壞系統(tǒng),并降低安全性。
對于普通用戶來說,訪問核心代碼其實(shí)意義不大,我們其實(shí)沒有修改代碼的能力;但這一點(diǎn)對于一些大公司或重要部門的關(guān)鍵應(yīng)用來說,還是很重要的,他們可以進(jìn)行有針對性的優(yōu)化。
熟悉了Linux之后,你會覺得能隨意訪問內(nèi)核很好,這一切都在自己的控制下。而對于Windows,你要想搞清楚內(nèi)核到底是什么樣的,必須精通匯編語言,精通內(nèi)核函數(shù)地址,幾乎非黑客不能做到。
性能不同
Linux可以針對機(jī)器的配置進(jìn)行有針對性的優(yōu)化,它對于x86_64的支持也領(lǐng)先Windows 不少。在相同配置下,經(jīng)過優(yōu)化過的Linux在性能方面確實(shí)遠(yuǎn)遠(yuǎn)超過Windows,所以國內(nèi)的大部分企業(yè)服務(wù)器,使用的都是Linux平臺(當(dāng)然這與Linux價(jià)格便宜也有關(guān)系)。
Windows不能針對配置進(jìn)行任何的優(yōu)化,只能把所有的模塊都固定的安裝上去。不管你是不是跑某種和GUI完全無關(guān)的關(guān)鍵服務(wù),Windows GUI一定是要運(yùn)行的,如果一個(gè)GUI的BUG導(dǎo)致了系統(tǒng)的崩潰,那只能怪你自己倒霉了。當(dāng)然,從普通個(gè)人用戶的使用感受來看,windows還是非常出色的,它的圖形操作使用起來還是要簡潔明了得多。
結(jié)論:
對于中小企業(yè)來說,Linux和Windows其實(shí)相當(dāng)于代表了兩條技術(shù)路線,你選擇了一條之后,短時(shí)間內(nèi)再進(jìn)行重構(gòu)的可能性幾乎沒有;而對于普通技術(shù)人員來說,也是走了一條路再走另一條的可能性也不大,畢竟要精通一個(gè)操作系統(tǒng)還是需要很大精力的。而且真成了某一個(gè)體系的高手之后,兩者的思維方式幾乎都不同了。
很多人說,國內(nèi)服務(wù)器領(lǐng)域幾乎是Linux一統(tǒng)天下,但其實(shí)中小企業(yè)也有很多用Windows的,就是很多可能用的是盜版。所以,這兩者學(xué)習(xí)任何一種,都還是能找到工作的。
先說結(jié)論:最本質(zhì)的區(qū)別就是開源與閉源。
Linux是開源的操作系統(tǒng),從系統(tǒng)層面來說,你可以把它移植到其它硬件平臺上去。你可以很方便拿到它的源代碼(下載),經(jīng)過定制、裁剪,可以移植到幾乎所有的硬件平臺上,如 x86、arm、mips、alpha等,所以從嵌入式(如 android)到服務(wù)器都看到它的身影,有源代碼在手,量身定制很方便。從應(yīng)用層面來看,你覺得哪個(gè)開源軟件不好(比如有BUG,或者你希望擴(kuò)展該軟件功能),你都可以下載它的源代碼進(jìn)行修復(fù)(前提是你有相應(yīng)的編程能力)。
而Windows系統(tǒng)是閉源的,不管是操作系統(tǒng)還是上面的軟件,發(fā)行出來是什么樣就什么樣,你都只能被動接受。
至于其它重要性區(qū)別也有,但不算是本質(zhì)性區(qū)別。比如Windows是基于圖形界面的操作系統(tǒng),Linux是基于指令界面的操作系統(tǒng)。但它倆也有對方的東西(暫不評價(jià)好壞),Windows也有cmd, PowerShell,而Linux也有GNOME,KDE。
再其它的一些功能性的區(qū)別就不一一詳談了。
總結(jié)來說,Linux系統(tǒng)的開源特點(diǎn)提供給你更多的可能性,而Windows系統(tǒng)是閉源的,具備商業(yè)性。
深度 Deepin正式版不解決Linux內(nèi)核U盤啟動安裝失敗高達(dá)60%機(jī)型的重大問題,倡導(dǎo)自主可控替換Windows系統(tǒng)就是一句空話。
Linux宏內(nèi)核其實(shí)就像是一個(gè)龐大的“垃圾填埋場”,什么都往里面堆放,不需要的多的臃腫累贅、礙手礙腳,基本需要的卻沒有。兼容各種驅(qū)動的急需嚴(yán)重缺乏,導(dǎo)致deepin、優(yōu)麒麟等各種發(fā)行版只能運(yùn)行在虛擬機(jī)里。谷歌看到這一點(diǎn),裁下一塊Linux內(nèi)核另起爐灶,成就了世界第一大移動操作系統(tǒng)。
功能單一,應(yīng)用狹窄,Linux在服務(wù)器系統(tǒng)領(lǐng)域很滋潤。面向大眾的桌面系統(tǒng)現(xiàn)在Linux內(nèi)核面對各種五花八門的硬件不能獨(dú)當(dāng)一面,缺陷暴露無遺。現(xiàn)在的Deepin不能算是真正意義上的系統(tǒng),只能說是叫“奶瓶系統(tǒng)”,要躺在虛擬機(jī)的懷中靠“喂奶”才能正常穩(wěn)定的運(yùn)行。
1.Linux內(nèi)核為基礎(chǔ)開發(fā)的系統(tǒng)都統(tǒng)稱為Linux系統(tǒng)。比如Cent OS、Android、Ubuntu等都可以叫做Linux系統(tǒng),Linux系統(tǒng)他是一個(gè)家族,他們有共同特性。但不同于Windows操作系統(tǒng)。
2.內(nèi)核不同,Linux操作系統(tǒng)使用Linux內(nèi)核,Windows操作系統(tǒng)使用NT內(nèi)核;Linux內(nèi)核代碼開源,NT內(nèi)核代碼閉源
3.Linux是免費(fèi)的,Windows是收費(fèi)的
4.Windows軟件支持豐富,而Linux軟件支持就很少了
5.Windows易用性高,Linux操作系統(tǒng)有一定的門檻,Linux使用命令行字符模式為主要操作方式,Windows使用窗口、圖標(biāo)、鼠標(biāo)點(diǎn)擊形象化的方式為主要操作方式,如果不懂命令行,基本使用Linux是寸步難行的。
6.市場和安全性,Linux市場主攻服務(wù)器市場,Windows系統(tǒng)主打桌面市場,Linux主要應(yīng)用于網(wǎng)絡(luò),而Windows操作系統(tǒng)最開始應(yīng)用于打印服務(wù)。Linux安全性比Windows安全性高,要求它更加可靠。
這是兩個(gè)完全不同的平臺,
linux系統(tǒng)程序員用的居多,對個(gè)人用戶而言,上手難度偏高。
windows系統(tǒng)面向的就是個(gè)人用戶,操作簡單,而且軟件生態(tài)沒有敵手
Linux主要用來做服務(wù)器了,其原因是由于linux先用資源少,而且穩(wěn)定,性能高。win得話,基本都是滿足大部分用戶了,沒有人閑的沒事干整天用linux去瀏覽網(wǎng)頁7噶的,也不現(xiàn)實(shí),這個(gè)東西要從應(yīng)用場景和產(chǎn)品的出發(fā)點(diǎn)綜合考慮
0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答