uniX核心概述 可重入核心

2021-06-18 13:28:42 字數 841 閱讀 1602

所有的unix核心都是可重入的,這意味著若干個程序可以同時在核心態下執行。在單處理器系統上只有乙個進**正執行,但是有許多程序可能在等待cpu或某乙個i/o操作完成時在核心態下被阻塞。例如,當核心代表某一程序發出乙個讀磁碟的請求後,就讓磁碟控制器處理這個請求,並恢復執行其他程序。當裝置滿足了讀請求時,有乙個中斷就會通知核心,從而恢復以前的程序。

提供可重入核心的一種方式就是編寫函式,以便這些函式只能修改區域性變數的值,而不能改變全域性資料結構,這樣的函式叫可重入函式。但是可重入核心並不侷限於這樣的可重入函式。相反,可重入核心可以包含非可重入函式,並且利用鎖機制保證一次只有乙個程序執行非重入函式。

當乙個硬體中斷發生時,可重入核心能掛起當前正在執行的程序,即使這個程序處於核心態。這有利於提高裝置吞吐量。

現在讓我們看一下核心的重入性以及它對核心組織的影響。核心控制路徑表示核心處理系統呼叫、異常或中斷所執行的指令序列。

當下述條件之一發生時,cpu交錯執行核心控制路徑:

1、執行在使用者態下的程序呼叫乙個系統呼叫,但相應的核心控制路徑證實這個請求無法立即得到滿足;然後,核心控制路徑呼叫排程程式選擇乙個新的程序投入執行。結果程序切換發生,第乙個核心控制路徑還沒完成,而cpu又開始執行其他的核心控制路徑。在這種情況下,兩條控制路徑代表兩個不同的程序在執行。

2、當cpu執行乙個核心控制路徑時,cpu檢測到乙個異常。第乙個控制路徑掛起,而cpu開始執行合適的過程。

3、當cpu正在執行乙個啟用中斷的核心控制路徑時,乙個硬體中斷發生。第乙個控制路徑還沒完成,cpu又開始執行另乙個核心控制路徑進行中斷處理。當中斷處理程式完成後,第乙個核心路徑恢復,在這種情況下,兩個核心控制路徑執行在同一上下文中,所花費的時間都算給這個程序。然而,中斷處理程式無需代表這個程序執行。

可重入核心

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

可重入函式 可重入核心

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

可重入核心 可重入函式

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