成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

聊了聊宏內核和微內核,并吹了一波 Linux

開發 前端
內核是操作系統非常重要的組成部分,同時也是操作系統的核心。內核管理著系統資源,內核向上連接著應用程序,向下連接著硬件,它是應用程序和硬件的橋梁。

[[432382]]

內核是操作系統非常重要的組成部分,同時也是操作系統的核心。內核管理著系統資源,內核向上連接著應用程序,向下連接著硬件,它是應用程序和硬件的橋梁。

內核可以進一步的劃分,分為宏內核和微內核。

宏內核和微內核最大的區別就是,宏內核的用戶服務和內核服務都保存在相同的地址空間中,它們都由內核進行統一管理,而微內核的用戶服務和內核服務會保存在不同的地址空間中,下圖可以很好的解釋這一點。

其實這里的宏內核翻譯過來有點牽強,其實應該叫單內核或者單核。在這種單核的設計中,內核是一個大的整體,可以說是一個大進程,在這個大進程中,所有內核服務都運行在一個地址空間中,函數之間的調用鏈路少,直接通信簡單高效。

而微內核的功能會劃分為獨立的進程,進程之間通過 IPC 進行通信,高度模塊化,一個服務的故障不會影響另一個服務。不過由于模塊化的影響,函數之間調用鏈路偏長,進程之間不會直接通信,而是通過內核服務相互通信。

從內核大小上面來講,微內核的尺寸更小,只包含用戶進程相關的服務,而單核的尺寸要比微內核大的多,這點比較好理解,因為宏內核融入了太多服務和驅動。

從執行效率上來說,微內核的執行效率相對較慢,因為涉及到跨模塊調用,而宏內核執行效率高,因為函數之間會直接調用。

在微內核模塊化之后,它很容易擴展,因為內核空間與用戶空間相互隔離,在用戶態下(運行在用戶空間中的應用程序)應用程序崩潰后一般不會影響到內核中的數據。宏內核的可拓展性較差。

經過上面這些描述之后,我們很容易把宏內核和微內核的特征想象成軟件開發中的單體架構和微服務架構。

單體架構最大的特點就是函數調用方便,幾乎不存在調用鏈路,一個項目解決所有問題,項目中包含數據庫驅動、各種攔截器、控制器、權限控制,可拓展性非常差。

而微服務的架構之間的調用鏈路會比較長,模塊之間的職責分離并且相互依賴,比如權限控制模塊、路由模塊、總線通信模塊。可拓展性比較強。

這兩種不同的內核結構有不同的支持者,就和有些人認為單體架構好,有些人認為微服務架構模式好。

這就像對編程語言的爭論一樣,你說 Python 、Go、Java 以及其他語言哪個好?管他哪個好,最終都會戲謔的稱 PHP 是這個世界上最好的語言。所以,這些爭論本沒有意義,但是很有趣的是,這種爭論常常讓人想起前幾年在 CPU 領域中 RISC 和 CISC 之間的斗爭。

現代成功的 CPU 設計包括這兩種技術中的任何一種,就像 Linux 內核是微內核和宏內核的混合產品一樣。可能有些人認為 Linux 它不就是個宏內核結構么,但實際上 Linux 不單單只是一個純碎的集成內核。

為什么 Linux 會使用單內核(此處叫單內核有點應景)結構呢?我猜有下面幾個因素。

從 Linus 的角度來看,單內核的開發和選型更容易,因為避免了與消息傳遞架構、計算模塊加載方法等相關的工作。而且 Linux 的誕生原因在于 Linus 對 MINIX(一種類 UNIX 操作系統)只允許在教育上使用很不滿,再加上 Linus 本來對操作系統很感興趣,于是他開始編寫 Linux 操作系統,所以我認為當時的 Linus 開發 Linux 起源于興趣,并未經過詳細周到的設計,也并未考慮它的可拓展性。當然這只是鄙人粗淺的猜測。

這就和我們上大學的畢業設計一樣,你畢業設計做的系統,你會考慮可拓展性嗎?除非你想當產品來做,但是何必呢?

另一個原因是充足的開發時間。Linux 沒有研發時間限制,也沒有發布時間表。任何限制都只能單獨修改和擴展內核。核心的單一設計內部完全模塊化,在這種情況下修改或添加不是很困難。問題是沒有必要為了追求未經證實的可維護性的小幅增加而重寫 Linux 內核。Linus 一再強調以下觀點:為了這個好處而損失速度是不值得的。

Linux 是一個借鑒了微內核精髓的宏內核結構,Linux 支持模塊化的設計、搶占式內核、對內核線程的支持以及動態加載內核模塊的能力。不僅如此,Linux 還避免了其微內核設計的性能損失,允許一切運行在內核模式下,直接調用函數,無需消息傳遞。

所以綜合一點來講,Linux 是一個模塊化、多線程和內核可調度的操作系統。

模塊化的設計:Linux 支持內核模塊的動態加載,盡管 Linux 內核也是單核,但它允許在需要時動態刪除和加載一些內核代碼。

可搶占性:Linux 內核支持可搶占,與傳統的 UNIX 不同,Linux 內核具有允許內核中運行的任務優先執行的能力。在各種 UNIX 產品中,只有 Solaris 和 IRIX 支持搶占,但大多數傳統 UNIX 內核不支持搶占。

在 Linux 身上,完美體現了務實性。如果一項功能沒有價值或創意不佳,則不會開始實施。相反,在 Linux 的發展過程中,形成了一種值得稱道的務實態度:任何改變都必須針對現實中實際存在的問題,需要經過完整的設計和正確簡潔的實現。

 

如果 Linux 是純微內核設計,那么移植到其他架構會更容易。實際情況是,Linux 內核移植雖然不是很簡單,但也絕非不可能完成的事情。

 

責任編輯:武曉燕 來源: 程序員cxuan
相關推薦

2021-01-04 08:09:07

Linux內核Watchdog

2024-12-27 09:46:10

2020-12-28 08:51:06

操作系統微內核Dubbo

2023-12-14 11:35:32

.NET泄露模式

2021-02-20 06:08:07

LinuxWindows內核

2021-09-09 12:01:13

Linux內核f宏

2014-08-28 15:08:35

Linux內核

2021-01-01 09:03:44

故障HAProxy服務器

2010-03-02 09:17:32

Linux local

2022-05-10 08:49:46

設備驅動Linux

2021-09-27 09:19:13

微信關懷模式 騰訊

2020-12-30 09:05:24

架構微內核系統

2012-07-25 13:21:17

ibmdw

2020-08-06 17:16:47

抖音Tiktok美國

2021-02-25 09:50:01

LinuxWindows內核

2013-11-05 09:58:39

Linux內核

2010-04-21 12:54:46

Unix內核

2013-11-12 11:01:46

Linux內核

2013-11-06 13:03:10

Linux內核

2021-05-19 07:56:26

Linux內核搶占
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品成人一区二区三区 | 成人精品| 九九热在线视频观看这里只有精品 | 中文在线一区二区 | 91精品国产高清一区二区三区 | 成人黄色网址大全 | 亚洲在线一区二区 | 亚欧洲精品在线视频免费观看 | 中文字幕在线观看成人 | 亚洲视频一区 | 欧美free性 | avtt国产| 亚洲一区二区中文字幕 | 韩国精品一区 | 91影院在线观看 | 99精品视频在线观看免费播放 | 亚洲欧美中文日韩在线v日本 | 日韩av在线免费 | 超碰免费在线观看 | 精品欧美一区二区三区免费观看 | 日韩欧美国产精品一区二区三区 | 亚洲激情在线视频 | 中文字幕精品一区二区三区精品 | 日韩一区二区黄色片 | 国产成人综合在线 | 亚洲一区免费在线 | 欧美日韩一二区 | 九九热在线免费观看 | 亚洲区一区二区 | 男人阁久久 | 久久久久99| 久久r精品 | 欧美大片一区二区 | 国内自拍第一页 | 欧美日韩在线一区 | 国产欧美精品区一区二区三区 | 日本欧美国产 | www.狠狠操| 黄色免费网站在线看 | 夜夜爽夜夜操 | 成人精品鲁一区一区二区 |