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