{eval=Array;=+count(Array);}
一、就操作系統設計的復雜度上,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機,左手小靈通,右手大哥大,不是更拉風么?
我特么明明能用打火機點著的,你非要給我給我展示一段鉆木取火野外求生。說到底計算機、操作系統只是工具,怎么好用怎么好,不是讓你噼里啪啦對著鍵盤一頓敲,自我感覺風騷的一比。我特么就問你:鍵盤敲出來的命令和鼠標點出來的命
由于開發人員不同,面對的用戶群體不同,Linux系統和Windows系統的區別可以從以下幾方面來看:
從技術層面來看:Linux和Windows最大的區別是Linux允許所有用戶具有完全訪問代碼的權限,用戶可以做自己喜歡的任何改動。訪問代碼的好處是可以很容易地修復Bug,并改進系統。相反,大多數Windows用戶不具有訪問代碼的權限,也就說Windows系統不允許用戶進行修改;
從用戶定位來看:Windows是個商業系統,更適合“普通人”,這個系統能夠開箱即用,不用進行各種復雜的配置,操作只有那么固定的幾種,能夠輕松的滿足辦公、游戲等日常需要。而Linux系統作為一類開源系統,更接近底層,開放的東西也更多,更適合IT技術人員使用;
從價格角度來看:Linux和Windows服務器之間有比較明顯的差異,Linux能夠成為流行的Web操作系統之一,主要原因是它相對便宜,Windows則昂貴得多;
從安全角度來看:Linux比Windows有更多的漏洞,但Linux開源軟件開發方式有助于暴露錯誤,用眾人智慧解決問題,各種補丁更新也很快。
本質上嘛,就是文件系統的區別
舉個例子(僅僅是為了說明問題)對于二進制數據段01011101,Linux認為它表示加法運算符,Windows則認為它是減法運算符,這就是兩個系統本質區別,就好比我國人認為豎起大拇指表示贊同,厲害,但在有的國家就是不好的意思。
中文的操作系統這個詞,其對應英文是Operating System,將Operating翻譯成操作,其實不是很準確,當然想換個更準確的詞也不容易,但我們要知道,這個Operating其實有控制的意思。而OS的本質其實應該是控制,即它是控制計算機的各種資源的系統,OS主要包含四種功能:CPU管理(進程管理),內存管理,外存管理和I/O管理。
要比較Linux系統和Windows系統的本質區別,不是討論其是不是共享、價格是不是便宜或服務支持好不好,而要考慮其本質的區別,我認為主要有四個:
不同的體系和生態
經過ucloud被禁用GMS服務后,國內很多人都明白了生態對一個操作系統的重要性。我認為對于Windows系統和Linux系統來說,生態不同是其本質的一個區別。
對于普通的Windows個人用戶來說,現在在Windows平臺上,你幾乎可以找到所有的你需要的軟件,如果你有覺得一個重要需求還得不到滿足,那可以恭喜你,你可能發現了一片藍海,馬上可以組織人馬來開發這方面的軟件了,靠率先推出一種軟件,你發家致富實現財務自由估計是沒問題的。
而對于普通的Linux用戶來說,現在普通的辦公軟件都還能滿足,但你想一些個人專業軟件或玩熱門游戲,則幾乎都找不到合適的替代品。簡單說,Linux桌面版還只能作為學習linux的工具,想在上面完成一些專業工作則不可能。
從服務器搭建的角度來看,這也是兩個體系:
在windows系統下,基本上微軟軟件可以把一切都搞定,目前就是Windows Server 2003操作系統+SQL Server的標準版或者企業版,個人服務器也可以在Windows10下搭建。
一般Linux系統使用LAMP組合,就是Linux + Php + Mysql + Appache,可以發布PHP網站。另外也可以支持ASP等。
兩大操作系統的體系結構不同
Window體系結構是分層的模塊化結構,主要層次有硬件抽象層HAL、內核、執行體和大量的子系統集合。
1.內核:內核執行Windows操作系統中最基本的操作,主要提供下列功能:線程安排和調度、陷阱處理和異常調度、中斷處理和調度、多處理器同步、供執行體使用的基本內核對象。
內核始終在核心態上,代碼短小緊湊、可移植性好。通常除了中斷服務例程(ISR),正在運行的程序是不能搶先內核的。
2.硬件抽象層HAL:為運行在WINDOWS操作系統上的硬件平臺提供低端接口,HAL隱藏各種與硬件有關的細節。
3.執行體:執行體從用戶態導處并且可以調用函數。
4.系統進程和系統線程:系統進程是一種特殊的、只運行在核心態的系統線程(只運行在內核態,執行加載于系統空間中的代碼)宿主。
系統線程沒有用戶進程地址空間,因此必須從系統內存堆中分配動態存儲區,系統線程只能從內核調用。
linux體系結構可以認為是分成了內外兩塊空間(現在CPU可以執行不同工作模式):
用戶空間:用戶空間又包含了用戶的應用程序和c庫
內核空間:內核空間又包括系統調用,內核以及平臺架構相關的代碼
用戶空間和內核空間是程序執行的兩種不同的狀態,我們可以通過系統調用和硬件中斷來完成用戶空間到內核空間的轉移。
1.Linux內核
內核是操作系統的核心。
有:系統調用、內存管理、進程管理、設備驅動文件、文件系統和網絡管理等。
2.Linux Shell
Shell是用戶交互界面,提供用戶與內核進行交互的接口。
3.Linux文件系統
文件系統是文件儲存在磁盤等儲存設備上的組織方法。
4.Linux應用程序
標準的Linux系統一般都有一套稱為應用程序的程序集,包括:文本編輯器、編程語言、X Window、辦公套件、Internet工具和 數據庫等。
核心代碼的可訪問性
Linux和Windows之間最大的區別之一,就是Linux允許所有用戶都具有完全訪問代碼的權限,他們可以做自己喜歡的任何改動。訪問代碼的好處是,它可以很容易地修復Bug,并改進系統。
相反,大多數Windows用戶不具有訪問代碼的權限,也不允許他們進行修改。
有些人覺得,公開核心的代碼,會有一些惡意開發者破壞系統,并降低安全性。
對于普通用戶來說,訪問核心代碼其實意義不大,我們其實沒有修改代碼的能力;但這一點對于一些大公司或重要部門的關鍵應用來說,還是很重要的,他們可以進行有針對性的優化。
熟悉了Linux之后,你會覺得能隨意訪問內核很好,這一切都在自己的控制下。而對于Windows,你要想搞清楚內核到底是什么樣的,必須精通匯編語言,精通內核函數地址,幾乎非黑客不能做到。
性能不同
Linux可以針對機器的配置進行有針對性的優化,它對于x86_64的支持也領先Windows 不少。在相同配置下,經過優化過的Linux在性能方面確實遠遠超過Windows,所以國內的大部分企業服務器,使用的都是Linux平臺(當然這與Linux價格便宜也有關系)。
Windows不能針對配置進行任何的優化,只能把所有的模塊都固定的安裝上去。不管你是不是跑某種和GUI完全無關的關鍵服務,Windows GUI一定是要運行的,如果一個GUI的BUG導致了系統的崩潰,那只能怪你自己倒霉了。當然,從普通個人用戶的使用感受來看,windows還是非常出色的,它的圖形操作使用起來還是要簡潔明了得多。
結論:
對于中小企業來說,Linux和Windows其實相當于代表了兩條技術路線,你選擇了一條之后,短時間內再進行重構的可能性幾乎沒有;而對于普通技術人員來說,也是走了一條路再走另一條的可能性也不大,畢竟要精通一個操作系統還是需要很大精力的。而且真成了某一個體系的高手之后,兩者的思維方式幾乎都不同了。
很多人說,國內服務器領域幾乎是Linux一統天下,但其實中小企業也有很多用Windows的,就是很多可能用的是盜版。所以,這兩者學習任何一種,都還是能找到工作的。
先說結論:最本質的區別就是開源與閉源。
Linux是開源的操作系統,從系統層面來說,你可以把它移植到其它硬件平臺上去。你可以很方便拿到它的源代碼(下載),經過定制、裁剪,可以移植到幾乎所有的硬件平臺上,如 x86、arm、mips、alpha等,所以從嵌入式(如 android)到服務器都看到它的身影,有源代碼在手,量身定制很方便。從應用層面來看,你覺得哪個開源軟件不好(比如有BUG,或者你希望擴展該軟件功能),你都可以下載它的源代碼進行修復(前提是你有相應的編程能力)。
而Windows系統是閉源的,不管是操作系統還是上面的軟件,發行出來是什么樣就什么樣,你都只能被動接受。
至于其它重要性區別也有,但不算是本質性區別。比如Windows是基于圖形界面的操作系統,Linux是基于指令界面的操作系統。但它倆也有對方的東西(暫不評價好壞),Windows也有cmd, PowerShell,而Linux也有GNOME,KDE。
再其它的一些功能性的區別就不一一詳談了。
總結來說,Linux系統的開源特點提供給你更多的可能性,而Windows系統是閉源的,具備商業性。
深度 Deepin正式版不解決Linux內核U盤啟動安裝失敗高達60%機型的重大問題,倡導自主可控替換Windows系統就是一句空話。
Linux宏內核其實就像是一個龐大的“垃圾填埋場”,什么都往里面堆放,不需要的多的臃腫累贅、礙手礙腳,基本需要的卻沒有。兼容各種驅動的急需嚴重缺乏,導致deepin、優麒麟等各種發行版只能運行在虛擬機里。谷歌看到這一點,裁下一塊Linux內核另起爐灶,成就了世界第一大移動操作系統。
功能單一,應用狹窄,Linux在服務器系統領域很滋潤。面向大眾的桌面系統現在Linux內核面對各種五花八門的硬件不能獨當一面,缺陷暴露無遺。現在的Deepin不能算是真正意義上的系統,只能說是叫“奶瓶系統”,要躺在虛擬機的懷中靠“喂奶”才能正常穩定的運行。
1.Linux內核為基礎開發的系統都統稱為Linux系統。比如Cent OS、Android、Ubuntu等都可以叫做Linux系統,Linux系統他是一個家族,他們有共同特性。但不同于Windows操作系統。
2.內核不同,Linux操作系統使用Linux內核,Windows操作系統使用NT內核;Linux內核代碼開源,NT內核代碼閉源
3.Linux是免費的,Windows是收費的
4.Windows軟件支持豐富,而Linux軟件支持就很少了
5.Windows易用性高,Linux操作系統有一定的門檻,Linux使用命令行字符模式為主要操作方式,Windows使用窗口、圖標、鼠標點擊形象化的方式為主要操作方式,如果不懂命令行,基本使用Linux是寸步難行的。
6.市場和安全性,Linux市場主攻服務器市場,Windows系統主打桌面市場,Linux主要應用于網絡,而Windows操作系統最開始應用于打印服務。Linux安全性比Windows安全性高,要求它更加可靠。
這是兩個完全不同的平臺,
linux系統程序員用的居多,對個人用戶而言,上手難度偏高。
windows系統面向的就是個人用戶,操作簡單,而且軟件生態沒有敵手
Linux主要用來做服務器了,其原因是由于linux先用資源少,而且穩定,性能高。win得話,基本都是滿足大部分用戶了,沒有人閑的沒事干整天用linux去瀏覽網頁7噶的,也不現實,這個東西要從應用場景和產品的出發點綜合考慮
0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答