早早回頭找爹娘
莫要問我還你債
自甘墮落每日頭條 寫: ↑週日 6月 12, 2022 9:41 am 「軟體」微內核與宏內核
2019-08-28 由 zhyuzh 發表于科技
核心模式與用戶模式(Kernel Mode & User Mode)
我們都知道一台計算機或者手機都要有個作業系統(Operating System簡稱OS),最常用的作業系統就是手機上的安卓(Android)和電腦上的Windows,其次還有蘋果手機上的iOS和蘋果筆記本上的macOS,也許你還聽說過另外的作業系統比如Unix、Linux、Ubuntu等等。總之,這些都是作業系統。
買一個硬體設備(電腦、筆記本或者手機),首先上面一般都已經安裝了作業系統,然後我們可以在作業系統的基礎上再安裝各種各樣的軟體程序或APP。硬體-作業系統-軟體程序,這就像磚頭一層一層累加起來。
作業系統本身也是代碼編寫出來的,所以也是軟體。從這裡我們就可以看出來,同樣都是軟體,作業系統可以直接控制硬體,而應用程式不能直接控制硬體,必須要通過作業系統來間接使用硬體資源。
內核(kernel)就是作業系統的最主要代碼,我們也可以簡單的認為Kernel(內核)就是指作業系統。
所有的軟體代碼,無論作業系統還是應用程式,本質是都是由中央處理器晶片(CPU)來運行的,但如果你安裝的APP代碼裡面有病毒怎麼辦?CPU運行這些有問題的代碼就會遇到困難,甚至會死機。
幾乎每個程式設計師都能開發應用程式APP,全世界的APP數不勝數,也就沒辦法嚴格控制以確保APP代碼不會導致死機。
但是作業系統就少很多,而且都是比較大型公司編寫的,也經過了很多的嚴格測試,相對而言就比較可控。
所以,計算機的CPU規定,「我只信賴作業系統的代碼,不信賴應用程式的代碼。如果應用程式代碼雲小時候遇到問題,作業系統你可以停止它。」
於是,遵照CPU的規則,Kernel核心代碼就運行在最高權限的核心模式下(Kernel mode),而應用程式代碼就只能運行在權限比較低的用戶模式下(User mode)。
Kernel mode是具有最高權限的模式,也叫做管理員模式(Supervisor mode)。
內核的作用
內核有什麼作用?或者我們說作業系統提供什麼功能,起什麼作用?
首先,要直接控制CPU和內存,我們暫且稱為關鍵功能。
我們都知道計算機可以同時運行很多軟體做很多事,這叫做多進程(Multi-process)或者多任務(Multi-tasking),那麼作業系統就要能夠實現多個任務的管理和安排,還要負責多個任務之間的協作通信。一般的,主要包含:
Virtual memory,將內存虛擬化以供應用程式使用。
Task Schedules,任務排程。
IPC,Inter-process communication,進程間通信。
其次,要實現基本的功能服務,我們暫且稱為服務功能。
應用程式可以調用這些服務來實現各種功能,比較基礎的作業系統服務有:
File System,文件系統,保存和讀取文件。
Network,網絡服務,讓應用程式可以聯網。
Graphic,圖形服務,提供屏幕上顯示圖形的能力。
GUI,界面服務,提供界面工具按鈕顯示。
當然還有很多其他的,這裡就不一一列舉了。
另外,要能夠支援更多硬體設備,我們暫且稱為設備驅動。
比如增加了一個攝像頭,一個光線傳感器,作業系統要確保這些設備能夠被應用程式使用起來才行。其實就是要對各種硬體的驅動進行管理,就是Device driver設備啟動服務。
原文網址:https://kknews.cc/tech/6avq4kl.html