本文分享自天翼云開發者社區《常用內核架構》,作者:JackW
宏內核
應用程式呼叫記憶體分配的 API(應用程式介面)函式,
處理器切換到特權模式,開始運行內核代碼,
內核里的記憶體管理代碼按照特定的演算法,分配一塊記憶體,
把分配的記憶體塊的首地址,回傳給記憶體分配的 API 函式,
記憶體分配的 API 函式回傳,處理器開始運行用戶模式下的應用程式,應用程式就得到了一塊記憶體的首地址,并且可以使用這塊記憶體了,
特點:功能耦合,效率高;但是開發一個新的功能也得重新編譯、鏈接、安裝內核,因為它沒有模塊化,沒有擴展性、沒有移植性,高度耦合在一起,一旦其中一個組件有漏洞,內核中所有的組件可能都會出問題,

微內核
應用程式發送記憶體分配的訊息,這個發送訊息的函式是微內核提供的,相當于系統 API,微內核的 API(應用程式介面)相當少,極端情況下僅需要兩個,一個接收訊息的 API 和一個發送訊息的 API,
處理器切換到特權模式,開始運行內核代碼,
微內核代碼讓當前行程停止運行,并根據訊息包中的資料,確定訊息發送給誰,分配記憶體的訊息當然是發送給記憶體管理服務行程,
記憶體管理服務行程收到訊息,分配一塊記憶體,
記憶體管理服務行程,也會通過訊息的形式回傳分配記憶體塊的地址給內核,然后繼續等待下一條訊息,
微內核把包含記憶體塊地址的訊息回傳給發送記憶體分配訊息的應用程式,
處理器開始運行用戶模式下的應用程式,應用程式就得到了一塊記憶體的首地址,并且可以使用這塊記憶體了,
特點:微內核犧牲一定性能,具有不少優點,首先,系統結構相當清晰利于協作開發,其次,系統有良好的移植性,微內核代碼量非常少,就算重寫整個內核也不是難事,最后,微內核有相當好的伸縮性、擴展性,因為那些系統功能只是一個行程,可以隨時拿掉一個服務行程以減少系統功能,或者增加幾個服務行程以增強系統功能,
Darwin-XUN 內核
Darwin是蘋果公司2000年開發的開源OS,集成了卡耐基梅隆大學的微內核Mach和伯克利大學的類Unix作業系統,后者提供一整套的作業系統服務,

Windows NT(new Technology)
微軟為了獲得市場,從不穩定的Windows3.1、95/98、ME之后推出NT,后續的XP更是成為其商業巔峰,

總結
Linux 性能良好,結構例外復雜,不利于問題的排查和功能的擴展,而 Darwin-XNU 和 Windows 結構良好,層面分明,利于功能擴展,不容易產生問題且性能穩定,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/550668.html
標籤:其他
下一篇:返回列表
