目錄
1. 背景,cpu排程
在程序/執行緒生命週期的什麼時候進行排程?
核心執行排程程式的條件(滿足其一即可)
cpu排程方式,是否搶占(核心態、使用者態)
2 排程原則
2.1 排程策略
2.2 程式執行模型
2.3 比較排程演算法的準則
2.4 吞吐量 vs 延遲
2.5 公平的目標
3 排程演算法
3.1 先來先服務
3.2 短程序優先
3.3 最高響應比優先
3.4 輪循
3.5 多級反饋佇列
3.6 公平共享排程
3.7 不同排程模型的評價準則
4 實時排程
4.1 概述
4.2 可排程性
4.3 排程演算法
5 多處理器排程(介紹)
6. 優先順序反轉
6.1 現象
6.2 解決方法
上下文切換
cpu排程:
從乙個狀態到另乙個狀態的時候會發生排程。
乙個程序從執行狀態切換到等待狀態乙個程序被終結了
可以搶占注意,以上一般指使用者態;核心態也可能涉及到是否搶占。
執行模型:程式在cpu突發和i/o中交替
減少平均響應時間的波動:增加吞吐量:實際上這些排程演算法和實際的排程演算法是有很多區別的(複雜的多),但是基本的特徵是類似的。fcfs:先來先服務spn(sjf) srt: 短程序優先(短作業優先)短剩餘時間優先
hrrn:最高響應比優先
round robin,輪循,使用時間切片和搶占來輪流執行任務;
multilevel feedback queues,多級反饋佇列,多級反饋佇列,優先順序佇列中的輪循;
fair share scheduling, 公平共享排程;
fifo佇列規定,如果程序在執行中阻塞,佇列中的下乙個會得到cpu。選擇下乙個最短的程序(短任務優先),即按照**的完成時間排序將任務入列;注意,它可以是搶占的也可以是不搶占的,對於搶占型別的,才是srt短剩餘時間優先。
搶占:就是如果新來乙個**時間更小的,是否會打斷當前正在執行的程序。需要**完成時間根據歷史時間分配預估未來時間的分配r = (w + s) / s (選擇r值最高的程序) ,其中 w:waiting time等待時間 s:service time執行時間程序輪流執行在乙個叫做時間量子(或時間切片)對離散單元中分配處理器;如果時間片結束了,那麼就接換到下乙個準備好的程序(processes execute every (n-1)q time units);
優點:公平;缺點:
額外的上下文切換花銷;
如果時間量子太大,則等待時間過長,極限情況下退化成fcfs;
如果時間量子太小,雖反應迅速,但是開銷大;吞吐量由於大量的上下文切換開銷而受到影響;
目標:
選擇乙個合適的時間量子;
經驗規則:維持上下文切換開銷處於1%以內。
站在使用者的角度實現公平共享cpu資源。因為有的使用者可能開的程序多,有的使用者程序少。它考慮了以下情況:
定義:正確性依賴於其時間和功能兩方面的一種作業系統;效能指標:時間約束的及時性(deadlines);速度和平均效能相對不重要;
主要特性:時間約束的可**性;
強實時系統:需要在保證的時間內完成重要的任務,必須完成;
弱實時系統:要求重要的程序的優先順序更高,盡量完成,並非必須;
一些術語,任務(工作單元job):例如:一次計算,一次檔案讀取,一次資訊傳遞等;屬性:取得進展所需資源;定時引數。
rm(rate monotonic)速率單調排程edf(earliest deadline first)最早期限排程還有對稱多處理器(smp)優先順序天花板:「擁有資源」的優先順序和「所有可以鎖定該資源任務中優先順序最高的那個任務」的優先順序相同(t3擁有t1的資源,所以它的優先順序提公升到t1);除非當前程序的優先順序高於系統中所有被鎖定的資源的優先順序的上線,否則任務嘗試執行臨界區的時候會被阻塞;
持有最高優先順序上限訊號量鎖的任務,會繼承被該鎖所阻塞的任務的優先順序。
作業系統 CPU排程
控制 協調多個程序對cpu的競爭 即按一定的排程演算法從就緒佇列中選擇乙個程序,把cpu的使用權交給被選中的程序 n個程序就緒,等待上m m 1 個cpu執行,需要決策哪個程序分配給哪個cpu執行 排程時機 核心對中斷 異常 系統呼叫處理後返回使用者態時 就緒佇列的改變引發重新排程 如程序正常終止 ...
作業系統面試 cpu排程
cpu排程是多道程式設計的基礎。本文是對作業系統概念 第七版 第五章 cpu排程的學習總結,不足之處歡迎各位博友提出,共同進步。1 介紹cpu排程常見概念。2 介紹cpu排程演算法以及特點。1 cpu排程決策發生的情況 a 當乙個程序從執行態到等待狀態。i o請求 b 執行狀態到就緒態 中斷 c 等...
作業系統 CPU排程(一)
cpu排程室多道程式作業系統的基礎。通過在程序之間切換cpu,作業系統可以提高計算機的生產效率。接下來會展示多個不同cpu的排程演算法。還要闡述為特定系統選擇演算法的問題。多道程式設計的 目標是在任何時候都有乙個程序在執行,以使cpu使用了最大化。在單處理器系統中,每次允許乙個程序執行 任何其他程序...