# Real-Time CPU scheduling ## Soft real-time system * 會盡量完成工作,不保證 ## Hard real-time system * 所有工作都要在時間內完成 ## 兩種影響效能的延遲 1. Interrupt latency * 中斷抵達到處理的時間 ![](https://i.imgur.com/9N54kqW.png) 2. Dispatch latency * 把目前process移除CPU並載入新process的時間 ## conflict phase * 搶先任何在kernel中執行的process * 低優先權process釋放高優先權process所需的資源 ![](https://i.imgur.com/Hd6UlHq.png) ## Priority-based Scheduling * 在real-time scheduling中,對優先權做排程是非常重要的 * 只保證soft real-time * 假設process執行時間: t * deadline: d * 週期: p * 若 0 <= t <= d <= p * 頻率為1/p ![](https://i.imgur.com/uc8dVXW.png) ## Rate Montonic Scheduling * 短周期: 高優先權 * 長週期: 低優先權 ![](https://i.imgur.com/8OwmYtO.png) * 這個方法有時候會錯過deadline ![](https://i.imgur.com/JUpbY4Y.png) ## Earliest Deadline First Scheduling(EDF) * deadline越早的優先權越高 ![](https://i.imgur.com/5DRhh7D.png) 1. p1 deadline早,優先權高 2. p1 執行完換p2 執行 3. 到了下一個p1週期,此時p2 deadline = 80-50 = 30 < p1 deadline = 50 4. 因此這裡會給p2高優先權先執行完,接著換p1執行 5. 到了下一個p2週期,此時p1 deadline = 50-30 = 20 < p2 deadline = 80 6. 因此這裡會給p1高優先權先執行完,接著換p2 7. 又到了下一個p1週期 ,此時p1 deadline = 50 < p2 deadline = 80-15 = 65 8. 因此這裡會給p1高優先權先執行完,接著換p2 ![](https://i.imgur.com/EfoiReM.png) ## 評估最適合的演算法 1. Deterministic Modeling * 取一組固定的工作量讓每種排程演算法執行 * 最後選擇花費最少時間(waiting time)的 * 但結果只反映了在那些input cases上 * 真實情況不會有一組固定process來讓你決定演算法 2. Queuing Model * 使用 Little Formula 的統計結果來評估 * 假設一個穩定的系統 > 離開queue的process數量 = 抵達queue的process數量 * 平均queue長度 = 平均抵達率(每秒幾個process到) * 平均 waiting time in queue * n = λ * W 3. Simulation * 模擬當時的環境情況並隨機產生數據來測試演算法 * 通常準確度比 Queuing Model 好 4. Implementation * 實作 --- ##### last edit > [name=dot] [time=Mon, Jan 6, 2020 3:32 PM] [HOME PAGE](/bKDZoNkrT9SOBnTvY_aj2Q?both) :relieved: {%hackmd theme-dark %} ###### tags : `OS` `CSIE`