在環境切換(context switch)時,必須儲存切換前行程的哪些內容?
- A該行程所使用的磁碟檔案內容
- B暫存器的值與程式計數器等CPU的執行狀態
- C該行程在實體記憶體中的全部內容
以甘特圖顯示 CPU 排程的動作,也就是作業系統決定以什麼順序把 CPU 分配給多個等待執行之行程的方式。可切換先到先服務、最短工作優先、最短剩餘時間優先、循環分時、優先順序排程,比較平均等待時間與往返時間如何變化。
收藏與最近使用的工具只儲存在這個瀏覽器(localStorage)中。
往返時間 = 完成時間 − 到達時間,等待時間 = 往返時間 − 執行時間,回應時間 = 第一次分配到 CPU 的時間 − 到達時間。條件相同的行程,依到達較早者優先,若也相同則依表格上方的順序選擇。在循環分時中,時間用完的行程會排在同一時間到達的行程後面。切換所需的時間(內容切換的額外負擔)以 0 計算。
其他輸入維持目前的值,只讓選擇的輸入在目前值的 1/4 到 4 倍之間變化時的結果。紅點是目前的值。
若只有 1 個 CPU,同時能執行的行程只有 1 個。有多個處於可執行狀態的行程時,由作業系統的 CPU 排程器決定下一個把 CPU 分配給誰。評估時會使用從到達到完成的往返時間、可以執行卻被迫等待的等待時間、到開始執行為止的回應時間等指標。即使是同一組行程,這些平均值也會因分配順序而大幅改變。在「全部在時間 0 到達」的範例中,先執行長度 24 之長行程的先到先服務,平均等待時間為 17,若改成由短到長執行則可減為 3。
先到先服務(FCFS)是依到達順序執行到結束的最簡單方式。短行程排在長行程後面時,短行程也會被迫等待很久(護航效應)。最短工作優先(SJF)從執行時間短的行程開始執行,使平均等待時間變小。最短剩餘時間優先(SRT)在每次有新行程到達時比較剩餘時間,若來了更短的行程,就從執行中的行程搶占 CPU。SRT 能使平均等待時間最小,但必須事先知道執行時間,而且長行程可能一直被延後(飢餓)。
循環分時是依序以固定時間(時間配額、時間片段)分配 CPU,並把時間用完的行程排到等待佇列最後面的方式。每個行程都能很快開始一點一點地執行,因此回應時間短,適合互動式系統。時間配額太長時與先到先服務相同,太短則行程切換(內容切換)變多,其負擔就無法忽視。請改變時間配額,確認比較表中的平均回應時間與切換次數如何變化。
優先順序排程是從優先順序高的行程開始執行的方式,分為不搶占與可搶占兩種。為了防止優先順序低的行程一直等待的飢餓現象,會使用依等待時間提高優先順序的老化(aging)技巧。實際的作業系統會組合這些方式。例如依優先順序分成不同佇列、同一優先順序內以循環分時輪流,並逐步降低大量使用 CPU 之行程優先順序的多層回饋佇列,以及優先執行累計執行時間較少之行程的 Linux CFS 等。
往返時間是行程從到達到完成的整段時間。等待時間是其中可以執行卻沒分配到 CPU 而等待的時間,等於往返時間減去執行時間(沒有輸入輸出等待時)。
全部同時到達時,最短工作優先(SJF)能使平均等待時間最小;途中有行程到達且可搶占時,則是最短剩餘時間優先(SRT)。不過兩者都必須事先知道執行時間,實務上是由過去的執行時間來預測。
本工具會選到達較早者,若也相同則選表格中較上方的列。考題中常會寫明條件相同時的選法,請配合題目調整表格的順序。
在日本的基本資訊技術士考試、應用資訊技術士考試等資訊類證照考試中,常見的題型是給定行程的到達時間與處理時間表,求某種方式下特定行程的完成時間或平均往返時間。輸入表格後,可用甘特圖與結果表確認。