Linux 可重入核心

2022-09-02 02:09:08 字數 779 閱讀 1857

linux核心是可重入的,這意味著幾個程序可能同時在核心模式下執行。(當然單處理器系統,在某一時間只會有乙個程序執行,但許多會阻塞在核心模式)這些程序會分時共享cpu、i/o裝置等系統資源,給使用者的感覺就像是在同時執行。

提供可重入**的方法:

編寫的函式都只會影響到區域性變數,而不能改變全域性的資料結構。這樣的函式稱為可重入函式。但由於有些需要訪問i/o裝置等共享資源,所以核心還要有不可重入函式。可重入核心不僅僅侷限於這樣的可重入函式,相反,可重入核心可以包含非重入函式linux使用鎖機制,來保證在某一時間內只有乙個程序可執行該不可重入**,也就是分時共享的辦法,來實現可重入的核心。

在中斷處理例程中,不應該有不可重入**,因為不可重入**會導致處理流程等待,進而導致中斷不能得到及時的處理,甚至很容易導致系統死鎖而**得不到進一步的執行。中斷處理例程除了可以被更高優先順序的中斷暫時中止,它應該能被順序地執行完。

異常處理例程、中斷處理例程,以及這些例程的巢狀,當它們中止其他核心控制程序時,是不會改變程序執行上下文的,也就是只有當程序處於使用者態時,才會儲存被中止程序的狀態。

如果乙個硬體中斷發生,可重入核心掛起當前正在執行的程序,即使這個程序處於核心態。這種能力是非常重要的,因為這能提高發出中斷的裝置控制器的吞吐量。一旦裝置已發出乙個中斷,它就一直等待直到cpu響應。如果核心快速響應,裝置控制器在cpu處理中斷時就能執行其他任務。

實現可重入核心的乙個關鍵技術就是同步技術。如果核心控制鏈路,因對一核心資料結構訪問而被阻塞,則是不允許其他核心控制路徑對同樣的資料結構進行操作,否則,兩個控制路徑會破壞該儲存的資訊,導致核心控制鏈路路徑執行不確定。

可重入函式 可重入核心

可重入函式這一概念早有接觸,但一直未有系統的理解,最近閱讀 apue 訊號一章時,其中講解很到位,故總結如下。訊號作為一種軟中斷,能夠被程序給捕獲,因而也就中斷程序的正常執行,轉而去執行訊號處理程式,最後再返回到原程序繼續正常執行。然而,當程序正在執行 malloc 動態記憶體分配時,訊號產生從而轉...

可重入核心 可重入函式

可重入核心在ulk 深入理解linux核心 中的定義是指若干個程序可以同時在核心態下執行,也就是說多個程序可以在核心態下併發執行核心 在單處理器上,只能實現 微觀上的序列,巨集觀上的並行,即任意時刻,只有乙個進 正執行,其他程序處於阻塞或者等待狀態。這裡的可重入,是指可以多個程序進入核心,並不是重複...

可重入核心

所有的unix核心都是可重入的,這意味著若干個程序可以同時在核心態下執行 提供可重入的一種方式是編寫函式,以編寫這些函式只能修改區域性變數,而不能修改全域性資料結構,這樣的函式叫可重入函式。但是可重入核心不僅僅侷限於這樣的可重入函式。相反,可重入核心可以包含非重入函式,並且利用鎖機制保證一次只有乙個...