作業系統實時排程中的可排程判斷條件是怎麼得出來的?

時間 2021-08-12 12:34:06

1樓:sum T

這個我也糾結了一下,本人是東秦的小菜雞,看到了就隨便寫寫

先明確兩個定義:處理時間Ci和週期時間Pi

處理時間Ci:指的是乙個任務每次需要處理的時間長度,我們假設單位是ms。

週期時間Pi:指的是HRT(硬實時任務)每次執行的間隔,我們也假設單位是ms。

然後明確一下本算式使用情況:單處理機實時系統,多個週期性硬實時任務同時發生。

我們先考慮在某段時間下,單個hrt週期性發生的情況:

處理時間是Ci=10ms

週期時間Pi=30ms

我們可以看到,此時Ci/Pi = 1/3 <= 1

實時系統足夠在DDL(deadline)之前處理這個任務。

然後我們給它加兩個夥伴:

這時候我們可以看到,實時系統已經飽和,處理器剛剛好可以完成這三個任務

此時Ci/Pi = 1(臨界狀態

我們可以設想一下,一旦再加乙個hrt,系統必然不會有足夠時間處理處理這個新的hrt,那麼此時該系統不可排程。

此時Ci/Pi > 1

綜上可知,必須滿足Ci/Pi<=1時,單處理機實時系統可排程。

ps:多處理機實時系統同理可知

2樓:知否知否

有m個程序,都是每隔一段時間就要執行一次的那種。

每個程序每次需要的CPU時間是Ci,每隔一段時間就執行一次的這個「每隔一段時間」就是Pi。

如果Ci/Pi>1說明Ci>Pi執行時間比間隔還要長,那這個間隔實際上就實現不了。所以Ci/Pi要<=1

自己理解的不一定對。

作業系統排程如何實現?

the gc 系統裡的程序可以理解為乙個鍊錶,每個節點都儲存了對應程序的資訊,然後定時器會定時觸發中斷,中斷處理程式會判斷當前程序的時間片是否用完,是否處於就緒狀態等等,然後找到乙個可執行的程序,切換上下文。細節挺多的。 用心閣 一般來說,多工有搶占式多工和協作式多工。前者就是到了乙個時間片,作業系...

作業系統執行緒排程為什麼沒有goroutine高效?

已登出 糾正乙個觀念 goroutine並不是執行緒,也不是乙個什麼 輕量級執行緒 它只是乙個函式,這個函式是跑在runtime中線程池上的。作業系統的執行緒切換上下文的開銷是不可避免的,本質上是因為CPU執行緒是有限的,而作業系統的執行緒不設上限。 我覺得這是相當好的乙個問題!我當時就是帶著這個問...

現代作業系統的核心執行緒排程是什麼方式,和CPU使用率什麼關係?

馮東 題主說的情況基本不會遇到。現代作業系統雖然都是 preemptive multitask。但是 99.99 的情況下是乙個程序 voluntarily relinquish CPU。比如說,乙個程序讀 disk 的時候,控制權就交給 disk controller 了,這時程序就被掛起了,直到...