標準的linux核心只達到了軟實時的要求:對使用者空間的時間處理提供了基本的posix操作,但是對硬時間限制沒***。通過ingo molnar的realtime preemption patch(簡稱為rt-preempt)和thomas gleixner的有著高精度支援的通用時鐘事件層,核心就獲得了硬實時的能力。
rt-preempt patch在業界已經獲得了廣泛的關注,它簡潔的設計和向主線整合的目標使得它成為硬實時應用程式的有趣選擇,不論是專業調音台還是工業控制。
當這個patch變得越來越有用,重要的組成部分進入了linux核心,我們覺得很有必要為它寫更多文件。本文濃縮概述了rt-preempt核心及其使用。
1.通過rtmutexes的重新實現使核心裡的鎖源語(使用自旋鎖)可被搶占
2.以前被如spinlock_t和rwlock_t保護的臨界區現在變得可以被搶占了。使用raw_spinlock_t建立不可搶占區域(在核心中)依舊是可能的(類似spinlock_t的相同api)。
3.為核心裡的自旋鎖和訊號量實現優先順序繼承。更多優先順序反轉和優先順序繼承的資訊請參考:
4.把中斷處理器變為可被搶占的核心執行緒:rt-preempt patch在核心執行緒上下文中處理軟中斷處理器。
5.把老的linux計時器api變成分別的幾個基本結構,有針對高精度核心計時器的還有乙個是針對超時的,這使得使用者空間的posix計時器具有高精度。
對待實時程序 RT 搶占的問題
乙個程序被喚醒,在linux中是呼叫try to wake up函式,對於rt程序也不例外,對於一般程序而言,如果在乙個cpu執行佇列上被喚醒的程序的優先順序大於該cpu的當前程序,那麼就會發生搶占,而如果兩個程序都是rt程序則不會發生搶占,理由是cache的保持,如果發生搶占的話,被搶占的rt程序...
linux程序搶占
搶占時伴隨著schedule 的執行。核心提供了乙個tif need resched標誌來表明是否要用schedule 排程一次。根據搶占發生的時機分為使用者搶占和核心搶占。使用者搶占發生在核心即將返回到使用者空間的時候。核心搶占發生在返回核心空間的時候。1 使用者搶占 核心在即將返回使用者空間時檢...
Linux 核心搶占
核心搶占 kernel preemption 是一種有效的降低系統響應延時的方法。在核心裡,有三個相關的配置選項。顧名思義,不開啟核心搶占。這是很多伺服器的預設配置選項。在沒有開啟核心搶占的時候,程序的排程時機僅僅發生在非常有限的幾處 程序自己主動觸發排程,例如 通過sleep schedule y...