搶占式核心與非搶占式核心的區別

2021-09-30 09:05:16 字數 518 閱讀 6331

核心搶占(可搶占式核心):

即當程序位於核心空間時,有乙個更高優先順序的任務出現時,如果當前核心允許搶占,則可以將當前任務掛起,執行優先順序更高的程序。

非搶占式核心:

高優先順序的程序不能中止正在核心中執行的低優先順序的程序而搶占cpu執行。程序一旦處於核心態(例如使用者程序執行系統呼叫),則除非程序自願放棄cpu,否則該程序將一直執行下去,直至完成或退出核心。

搶占式核心的意義:

首先,這是將linux應用於實時系統所必需的。實時系統對響應時間有嚴格的限定,當乙個實時程序被實時裝置的硬體中斷喚醒後,它應在限定的時間內被排程執行。而linux不能滿足這一要求,因為linux的核心是不可搶占的,不能確定系統在核心中的停留時間。事實上當核心首席執行官的系統呼叫時,實時程序要等到核心中執行的程序退出核心才能被排程,由此產生的響應延遲,在如今的硬體條件下,會長達100ms級。這對於那些要求高實時響應的系統是不能接受的。而可搶占的核心不僅對linux的實時應用至關重要,而且能解決linux對多**(video, audio)等要求低延遲的應用支援不夠好的缺陷。

搶占式排程與非搶占式排程

資料 這是本人在作業系統期中考試前複習是碰到的問題,花了一些時間解決,現在記錄下來。在學習 cpu 排程的時候,關於搶占式 非搶占式排程方式有不理解的地方,想不到google一下就出來了很好的解釋,看來還是要多搜尋多思考。cpu 排程決策可以在如下四種環境下發生 對於第1和第4兩種情況,沒有選擇只有...

執行緒的搶占式和非搶占式排程

在乙個程序裡,執行緒的排程有搶占式或者非搶占的模式。在搶占模式下,作業系統負責分配 時間給各個程序,一旦當前的程序使用完分配給自己的 時間,作業系統將決定下乙個占用 時間的是哪乙個執行緒。因此作業系統將定期的中斷當前正在執行的執行緒,將 分配給在等待佇列的下乙個執行緒。所以任何乙個執行緒都不能獨佔 ...

核心搶占與preempt count

1 相關資料結構 struct thread info how to get the thread information struct from c static inline struct thread info current thread info void define preempt c...