1. 程式人生 > >linux核心搶佔及配置

linux核心搶佔及配置

1.使用者空間的應用程式,通過系統呼叫,進入核心空間。這個時候使用者空間的程序要傳遞很多變數、引數的值給核心,核心態執行的時候也要儲存使用者程序的一些暫存器值、變數等。所謂的“程序上下文”,可以看作是使用者程序傳遞給核心的這些引數以及核心要儲存的那一整套的變數和暫存器值和當時的環境等

2.硬體通過觸發訊號,導致核心呼叫中斷處理程式,進入核心空間。這個過程中,硬體的一些變數和引數也要傳遞給核心,核心通過這些引數進行中斷處理。所謂的“中斷上下文”,其實也可以看作就是硬體傳遞過來的這些引數和核心需要儲存的一些其他環境(主要是當前被打斷執行的程序環境)。

4、Preemptible kernel(linux核心搶佔模式)

n        No Forced Preemption(Server):非強迫式搶佔。這是傳統的Linux搶佔式模型,針對於高吞吐量設計。它同樣在很多時候會提供很好的響應,但是也可能會有較長的延遲。如果是要建立伺服器或者用於科學運算,或者要最大化核心的運算能力而不理會排程上的延遲,則選這項。

n        Voluntary Kernel Preemption(Desktop):自動式核心搶佔。這個選項通過向核心新增更多的“清晰搶佔點”來減少核心延遲。這些新的搶佔點以降低吞吐量為代價,來降低核心的最大延遲,提供更快的應用程式響應。這通過允許低優先順序的程序自動搶佔來響應事件,即使程序在核心中進行系統呼叫。這使得應用程式執行得更“流暢”,即使系統已經是高負荷運轉。嵌入式系統裡面通常選擇N。

n        Preemptible Kernel(Low-Latency Desktop):可搶佔式核心(低延遲桌面)。這個選項通過使所有核心程式碼(非致命部分)編譯為“可搶佔”來降低核心延遲。通過允許低優先順序程序進行強制搶佔來響應事件,即使這些程序正在進行系統呼叫或者未達到正常的“搶佔點”。這使得應用程式執行得更加“流暢”,即使系統已經是高負荷運轉。代價是吞吐量降低,核心執行開銷增大。嵌入式系統編譯核心通常選擇Y,這樣只有很少的延遲。

其中,Preemptible Kernel子選項提供了最快的響應,適合對實時性要求較高的嵌入式系統。