【這是 ZY 第 14 篇原創技術文章】html
關於操做系統是這樣定義的: 操做系統(英語:Operating System,縮寫:OS)是管理計算機硬件與軟件資源的系統軟件,同時也是計算機系統的內核與基石。操做系統須要處理如管理與配置內存、決定系統資源供需的優先次序、控制輸入與輸出設備、操做網絡與管理文件系統等基本事務。操做系統也提供一個讓用戶與系統交互的操做界面。
對咱們來講,操做系統最直觀的感覺就是桌面系統,以及上層的應用程序,然後面的資源處理等等就是操做系統背後的黑盒。瀏覽器
讀者朋友們如今閱讀個人這篇文章,是在瀏覽器,或者某個應用程序上進行的。而一個應用程序是要運行在特定的操做系統上的。操做系統,則是要運行在硬件上的。因此這三者關係如圖。
安全
再來看看內核的定義: 「內核」指的是一個提供硬件抽象層、磁盤及文件系統控制、多任務等功能的系統軟件。內核是操做系統最基本的部分。它是爲衆多應用程序提供對計算機硬件的安全訪問的一部分軟件,這種訪問是有限的,而且內核決定一個程序在何時對某部分硬件操做多長時間。直接對硬件操做是很是複雜的,因此內核一般提供一種硬件抽象的方法來完成這些操做。硬件抽象隱藏了複雜性,爲應用軟件和硬件提供了一套簡潔,統一的接口,使程序設計更爲簡單。網絡
簡單來講,內核是一個操做系統的核心。它負責管理系統的進程、內存、設備驅動程序、文件和網絡系統等等,決定着系統的性能和穩定性。是鏈接應用程序和硬件的橋樑。
內核就是操做系統背後黑盒的核心。
函數
這時候咱們回過頭來看看操做系統和內核的定義,是否是有些明白了呢。性能
既然咱們知道了內核是什麼,接着來看看內核的分類,如今內核的主要分類有四類:
宏內核(單內核),微內核,混合內核,外內核。操作系統
咱們上面說到,內核管理着操做系統的內存,文件,IO,網絡等等,每一個功能能夠看作一個模塊,在宏內核中,這些模塊都是集成在一塊兒的,運行在內核進程中,模塊之間的交互直接經過方法調用。 .net
而在微內核中,內核只提供最核心的功能,好比任務調度,內存管理等等,其餘模塊被移出內核,運行在不一樣的進程中,這樣即便某一個模塊出現問題,只要重啓這個模塊的進程便可,不會影響到其餘模塊,穩定性大大增長。甚至能夠在系統運行過程當中替換現有模塊的實現。並且因爲模塊獨立的性質,能夠作到模塊的按需加載。可是模塊間的相互調用須要經過進程間通訊,通訊效率相對較低。 設計
咱們上面看了宏內核和微內核的實現,就會發現,二者各有千秋,也各有缺點,因此混合內核就是集中了二者的特色,讓微內核中的一些核心模塊運行在內核中,從而使內核效率更高一些。3d
外內核是把硬件暴露給應用程序,應用程序能夠直接訪問硬件,外內核對系統提供保護。目前還在研究階段。
看了上述宏內核和微內核的實現,咱們能夠總結一下:宏內核最大的特色就是模塊集成在一塊兒,而微內核是模塊間分離。基於此點出發,對好比下:
宏內核 | 微內核 | |
---|---|---|
通訊效率 | 高(函數調用) | 低(進程間通訊) |
穩定性 | 低(模塊集成在一塊兒) | 高(模塊間互不影響) |
擴展性 | 低(模塊集成在一塊兒) | 高(模塊間互不影響) |
代碼量 | 多(須要實現全部模塊) | 少(只須要實現核心功能) |
宏內核
Linux
Windows 9X 系列
MacOS 8.6 版本以前
微內核
Fuchsia
鴻蒙
Minix
混合內核
Windows XP
Windows 7
Mac OS X
XNU
外內核
Nemesis
zh.wikipedia.org/wiki/操做系統
www.cnblogs.com/smwikipedia…
zh.wikipedia.org/wiki/內核
www.oschina.net/news/108946…