核心必須實現一組服務和相應的介面,應用程式則可以使用這些介面,而不是直接與硬體打交道。
linux核心主要由以下5個子系統組成:程序排程、記憶體管理、虛擬檔案系統、程序間通訊以及裝置驅動。
在這個組成中,最核心的就是程序管理->程序排程和程序間通訊。
在linux系統中,我們編寫的任何應用層程式,不管是上層還是屬於中間框架層的**,甚至是最底層的驅動**,都可以以程序的形式在系統上執行。cpu可以執行在使用者態和核心態。
在linux 程序/核心模型中,每個程序就是執行在機器上的唯一的映象,它們對系統服務具有排他性,當程序需要訪問系統服務時,它會發出系統呼叫(對核心的請求),硬體則將權利模式由使用者狀態切換到核心模式。核心過程又會適時通過硬體強制返回使用者模式。當乙個程式執行在使用者模式下,它就不能直接地訪問核心資料結構或核心的程式。
程序是動態的實體,其在系統中的生命是有限的。linux核心是以執行緒為排程的單位。
任務:程序的集合,其中可以包含乙個或多個程序。
非同步:兩個事件的發生是沒有任何關聯的,一件事的發生不會因另一事件的發生而有任何變化。
同步:兩個事件之間有先後順序之分,乙個事件的發生一定是發生在某個事件之後。
如:乙個程式訪問某一硬體資源時,另乙個程式也要訪問該硬體資源,後乙個程式就要等待前乙個程式,我們就說這兩個程式同步訪問該硬體資源。(同步不是兩個事件同時發生)
核心不是程序,而是程序的管理者。
核心例程如何被啟用:1.程序呼叫系統呼叫;2.cpu正執行程序發出的異常訊號,表示諸如無效指令等非常規條件發生;3.外圍裝置發出乙個中斷訊號到cpu,每個中斷訊號都是由乙個叫做中斷處理控制代碼的核心程式來處理的,中斷與cpu的執行是非同步的,所以中斷的發生時不可預期的;4.核心執行緒被排程執行。
異常與中斷的區別:
相同點:都會導致cpu停下當前的程序進入專門的處理例程。
不同點:異常是同步發生的,它一定是發生在某一錯誤後,而中斷是非同步發生的,它的發生時隨機的。
Linux程序模型
傳統的linux模型裡有三種建立或者修改程序的操作 system用於呼叫shell,執行乙個指定的命令 fork用於建立乙個新的程序,該程序幾乎是當前程序的乙個完全拷貝 exec可以在程序中用另外的程式來替換當前執行的程序 什麼是程序?程序是乙個正在執行的程式例項,他也是linux基本的排程單位,乙...
Linux核心 程序排程
搶占式多工 由排程程式來決定什麼時間停止乙個程序的執行 程序的時間片 分配給每個可執行程序的處理器時間段 o 1 排程程式 反轉樓梯最後期限排程演算法 完全公平排程演算法 i o消耗型和處理器消耗型程序 i o消耗型程序 大部分時間用來提交i o請求或等待i o請求 處理器消耗型程序 把時間大部分用...
Linux核心 程序管理
注 對linux系統來說,執行緒只是一種特殊的程序,linux不區分執行緒和程序 程序 處於執行期的程式 包含的資源 一 程序描述符及任務結構 程序存放在任務佇列 task list 的雙向迴圈鍊錶中 鍊錶中每一項型別均為task struct 程序描述符,也可表示為task t 該結構定義在inc...