作業系統是否會在每個時間片/量子之後進行幹預?

作業系統是否會在每個時間片/量子之後進行幹預?

在進程調度的背景下,作業系統是否在每個時間片/量子結束後進行幹預?例如,如果電腦空閒並且 4 個任務到達:t1、t2、t3 和 t4,並且它們使用先來先服務進行調度,我們通常會認為 t1、t2、t3、t4 在 CPU 中,但這不是一種簡化嗎?因為我們t1、OS、t2、OS、t3、OS t4實際上會發生什麼事?如果這是真的,作業系統會在每個時間片(又稱量子)之後進行幹預,這不是效率很低嗎?

答案1

不必要。通常,調度程序會在任務量程到期後降低任務的動態優先級,但如果它仍然是最高優先級任務,則會獲得另一個任務。但總的來說,是的,當任務運行足夠長的時間時,作業系統會接管並切換到另一個任務。為什麼這應該是低效率的?

答案2

我相信在現代作業系統中,時間片的長度是可變的。調度程序在處理每個中斷(鍵盤、滑鼠、觸控螢幕、網路、磁碟傳輸完成等)以及計時器中斷後被呼叫。

粗略地說,調度程序旨在估計進程的阻塞系統呼叫之間的時間的移動平均值。在調度程序將控制權交給進程 X 之前,它會設定一個計時器,該計時器將在比進程 X 的移動平均值稍長的時間中斷。如果調度程式很好地猜測了下一個阻塞系統呼叫的時間,那麼很大一部分進程實際上會透過執行阻塞系統呼叫來自願釋放 CPU。

目標是讓互動式進程執行一些計算,進行阻塞系統呼叫以從慢速設備請求一些數據,然後在數據返回後立即重新調度。如果調度程序必須在兩個進程之間的調度之間做出決定,那麼在所有其他條件相同的情況下,它將有利於更頻繁地阻塞系統呼叫的進程。這往往會最大化同時阻塞 I/O 請求的數量,從而提高整體系統吞吐量。

相關內容