例如,要實現一個類似unix或NT的操作系統,它支持基於時間片切換的不同任務,cpu應具有哪種硬件支持?要爲'搶先'任務實現OS,cpu應該支持哪些硬件特性?
英特爾80286是否開始支持執行'搶佔式'任務,並且時鐘中斷?還需要什麼硬件功能才能實現這一目標?
謝謝。
例如,要實現一個類似unix或NT的操作系統,它支持基於時間片切換的不同任務,cpu應具有哪種硬件支持?要爲'搶先'任務實現OS,cpu應該支持哪些硬件特性?
英特爾80286是否開始支持執行'搶佔式'任務,並且時鐘中斷?還需要什麼硬件功能才能實現這一目標?
謝謝。
對於操作系統來實現Preemptive multitasking有效的硬件必須具備兩個功能的支持:
一個辦法讓操作系統重新控制後,交給執行的任務。
這通常是通過定時器中斷和系統調用來實現的。
在系統調用後,操作系統恢復控制,並可以暫停當前任務以支持其他任務(特別是針對IO限制系統調用)。
定時器也是需要的,否則不進行系統調用的大腿旋轉任務將永遠不會將控制權交還給操作系統。
防止禁用上述功能的方法。
如果正在運行的任務不能足夠保持先佔機制的活動狀態,那麼它可以簡單地禁用它並永遠運行。
286是x86家族的第一處理器,以支持protected mode,以實現必要的功能的模式2
特徵1是在IBM PC可從一開始(在CPU是8086)通過使用PIT 8254。
功能1是平臺硬件的功能,而不是CPU(though it can be included in the CPU)。
功能2是CPU的功能。
請注意,還有其他可能的方法來實現1和2.
例如,一個系統有兩個CPU,其中一個可以控制另一個的執行(但不能反過來)符合這兩個功能。
@rcgldr繼續挑剔:) *分時*用於「上下文切換」,時間切片不是行話(*時間片*是,雖然)。搶佔與高優先級與低優先級無關(這是*調度策略*的一個特徵),搶佔被用作* cooperative *的對立面。最後,取決於你希望你的操作系統如何「強力先佔」,它不能在任何處理器上實現:8086沒有機制來阻止任務禁止搶佔。 –
@MargaretBloom - 刪除我之前的評論,因爲你發佈了答案。我稍後會刪除這個。我正在考慮一些嵌入式RTOS支持搶佔,但不包括時間分割,對每項任務使用不同的優先級。這是這裏不需要的區別。 – rcgldr