宏内核linux,Linux 为什么还要坚持使用宏内核?
導航:網站首頁 >
Linux 為什么還要堅持使用宏內核?
時間:2016-5-14
相關問題:
匿名網友:
目前主流的操作系統(MAC OS X,Windows)都是使用了微內核來實現,但是...答:這問題就和 CISC 和 RISC 之爭一樣沒有意義。容易歸納出來一個結論,很多時候極端終將會歸于中庸。
熱心網友:
這問題就和 CISC 和 RISC 之爭一樣沒有意義。容易歸納出來一個結論,很多時候極端終將會歸于中庸。
熱心網友:
本文還這個回答的一個債:Linux 戰略或生態圈是什么? - in nek 的回答。里面提到微內核都是學院派的意淫,這里回答為什么。
我沒有指向——我只是為了說明問題——如果是真心問這個問題很大程度上反映了提問者還是個代碼中二:)
我說的“中二”,是那種沒有經驗,只有“名”,沒有“實”的思考者。具體名稱空間定義參考這里:《道德經》講了什么?為什么它廣受推崇? - in nek 的回答。這種人,在社會中是會被老子這樣的人K的:)
對應地,這樣的人在Linux世界中也是要被Linus K的。
我解釋一下為什么:“是否微內核”僅僅是一個名字定義的問題,和用戶要解決的問題一點關系都沒有。我們在維護架構的時候,首先保證不創建額外的概念解決非直接用戶相關的問題。這種情況下,為什么要為Linux引入微內核?現在沒有問題要解決了?到了吃飽飯沒事干瞎做死的時候了嗎?
微內核只是學院概念,學院概念都是聽著很有道理,但經過打磨以后才能肯定是否正確道路的。你看每年有多少紅點設計獎?有幾個被復制到所有的類似產品中的?為什么沒有復制?不是專利和版權限制,是那個設計有創意,但并不實用。
微內核有成功的例子么?Minix是個教學系統,WindowsNT一開始說微內核,結果怎么呢?把圖像渲染丟內核里了,QNX算是最成功的商用微內核系統了,但我告訴你QNX是怎么工作的:你要把用戶程序,協議棧,驅動都放到一個進程中的。
這背后反映了什么?這反映了,如果你要參與市場競爭,你要用盡一切能力去保證功能和性能,其他一切理論優勢,都是不靠譜的。微內核可以優化到和宏內核一樣的數據流效率嗎?如果它能夠,它就不是微內核了好吧?所以,你讓微內核系統如何在市場競爭中活下去?不能在市場競爭中活下去,誰來開發微內核系統?
而且,比如Linux這樣的架構,有什么東西阻止你把驅動放到用戶態了嗎?(否則你以為fuse是什么?)有什么阻止你在其中增加一個優化的進程間通訊嗎?什么都沒有。換言之,宏內核系統分分鐘可以變成微內核系統,而微內核系統是無法回頭的。
你要成為一個想Linus那樣的好架構師,真要好好學學這個基礎的虛心實腹的設計理念。這個理念現在貫穿所有的Linux核心維護者的維護哲學。比如他們基本上,不接受沒有硬件支持的代碼,不接受概念產品的代碼,不接受已經上市產品的代碼。這些都是這個基本理念的一脈相承。
熱心網友:
我想說,現在沒有絕對宏內核,也沒有絕對微內核,只是某種形式的雜種
熱心網友:
目前得票第二的 @王垠 的答案比較有誤導性。所以說明一下。
Micro-kernel 和 kernel 的「動態性」無關。實際上,Linux kernel 內部有大量的動態行為。包括動態地使用文件系統 driver,動態加載 module。只要這些動態行為都發生在 kernel-space,就還是 monolithic-kernel。所以 @王垠 的基本比喻就是錯誤的。
用類似的比喻,Micro-kernel 的性能問題不在于「問這東西在哪」,而在于必須「把這東西復制一份,外加校驗」,從而防止內存 corruption 引起的 bug。
系統越大,bug 越多,這個事實不假。但是 micro-kernel 的擁躉搞錯了一件事情:bug 增長的拐點在什么地方。在拐點之前,要用艱苦奮斗修 bug 來解決,拐點之后,才需要加 defensive 機制。否則就是 over-defensive。什么叫 over-defensive?如果你的代碼每次訪問一個指針都要檢查 nullity,不管是高層模塊還是底層模塊,就是 over-defensive。Over-defensive 不光不能減少 bug,還會把一些在 sanity/smoking test 就能發現的 bug 整成 random failure。事實證明,Unix 內核根據「mechanism, not policy」制定的極為精簡的功能需求的復雜度遠遠在造成 bug 增長的拐點之前。
最后,monolithic-kernel 就是 micro-kernel。誰也不能阻止你把 Linux kernel driver 的 policy 部分挪到 user-space,甚至你可以把 Linux 的 paging policy 也寫成 demon。很多 Linux 的 CPU 中斷相應調度就是在 user-space 控制的。Micro-kernel 只是強制的 micro-kernel。
大家還關注:
問題推薦
總結
以上是生活随笔為你收集整理的宏内核linux,Linux 为什么还要坚持使用宏内核?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计大改!魅族Flyme 10系统界面遭
- 下一篇: linux 其他常用命令