操作系統學習筆記(五)--CPU調度


由於第四章線程的介紹沒有上傳視頻,故之后看書來補。

最近開始學習操作系統原理這門課程,特將學習筆記整理成技術博客的形式發表,希望能給大家的操作系統學習帶來幫助。同時盼望大家能對文章評論,大家一起多多交流,共同進步!

本篇文章大致內容為:

  • 基本概念(Basic Concept)
  • 調度准則(Scheduling Criteria)
  • 調度算法(Scheduling Algorithm)
  • 實時調度(Real-Time Scheduling)
  • 算法評價(Algorithm Evaluation)

基本概念(Basic Concept)

通過多道程序設計可以盡可能高的提高CPU利用率,但道數不可能無限增加。

同時: 宏觀-程序進入內存,被操作系統調度; 微觀-進程正在CPU上運行(Running)

調度:切換的過程中,切換越多,系統消耗越多,故道數不可能無限增加(另外還有內存方面的考慮)

CPU-I/O Burst Cycle   CPU-I/O執行期

  • 進程執行包括一系列的CPU執行期和輸入輸出等待期

CPU執行期分布:為指數型或多階指數型

CPU型程序:大部分時間用在CPU上的程序

I/O型程序:大部分時間用在I/O上的程序

 

CPU調度(進程調度,低級調度,短程調度)  CPU Scheduler

選擇內存上的處於就緒狀態的進程,並分配CPU給它們使用(依照算法)。

什么時候進行CPU調度?或CPU調度的時機:

  1. Switches from running to waiting state
  2. Switches from running to ready state
  3. Switches from waiting to ready state:就緒隊列來了新進程。
  4. Switched from waiting to ready state

注:1和4為非剝奪式/非搶占式(nonpreemptive)的,2和3為剝奪式/搶占式(preemptive)的。

 

調度程序(Dispatcher)

調度程序將CPU的控制權交給就緒隊列中選中的進程,包括:

  • switching context  上下文切換(中斷現場的保存與恢復)
  • switching to user mode  切換到用戶態(PSW最高位),用戶態:非特權指令;系統態:非特權指令+特權指令
  • jumping to the proper location in the user program to restart that program  跳轉到程序上一次中斷前執行的語句的上一行

調度延時(Dispatch latency)

換下一個進程並換上另一個新進程所需的時間,也叫系統消耗(overload)

調度准則(Scheduling Criteria)

  • CPU利用率(CPU utilization)
  • 吞吐量(Throughout):單位時間內執行作業的數量。
  • 周轉時間(Turnaround time):提交完畢->執行結束所需時間。
  • 等待時間(Waiting time):在就緒隊列內等待的時間,多次等待時間做和。
  • 響應時間(Response time):提交完成->首次給出相應所需時間。

周轉時間的組成:后備等待+就緒隊列等待時間之和+運行時間之和+阻塞隊列等待時間之和

優化准則(Optimization Criteria):對於相同作業而言,

  • Max CPU utilization  CPU利用率最大化
  • Max Throughput  單位時間最大吞吐量
  • Min turnaround time  最小化周轉時間
  • Min waiting time  最小化等待時間
  • Min response time  最小化響應時間

調度算法(Scheduling Algorithms)

  1. First-Come,First-Served(FCFS):先來先服務的調度原則
  2. Shortest-Job-First(SJF) Scheduling:短作業優先調度原則
  3. Priority Scheduling:優先級調度原則
  4. Round-Robin Scheduling:時間塊調度原則
  5. Multilevel Queue Scheduling:多級隊列調度原則
  6. Multilevel Feedback Queue:多級反饋隊列調度原則

FCFS Scheduling

Gantt Chart:甘特圖

SJF Scheduling:選擇下一次CPU執行期最短的進程執行,分為兩種,nonpreemptive 非搶占式的 和 preemptive 搶占式的。

搶占式-Shortest-Remainging-Time-First(SRTF)  最短剩余時間優先

SJF可以獲得最小的平均等待時間。

Example of Non-Preemptive SJF:

 

 

Example of Preeptive SJF:

 

確定下一次CPU執行期的長短(Determining Length of Next CPU Burst)

只能估計時間,可以使用指數平均法:

兩種極端:

 通常情況:

 

優先級調度(Priority Scheduling)

  • 每一個進程都有一個優先級
  • CPU調度給優先級最高的進程
  • 優先級調度可以分為
    • 可搶占式的(Preemptive)
    • 不可搶占式的(Nonpreemptive)

SJF也是一類優先級算法。

存在問題:Infinite blocking(Starvation) 飢餓:優先級低的進程會被無限推遲。

解決方法:Aging(熬),可變優先級,動態優先級

 

時間片輪轉(Round Robin, RR)

time slice - 時間片

  • 每個進程都會得到一個CPU時間段(通常10~100milliseconds)
  • 時間片到后,進程被搶占並被放入就緒隊列的末尾
  • 若有n個進程且時間片長度為q,則每個進程都會獲1/n的CPU時間,並且每次執行不超過q,則沒有進程會等待超過(n-1)q個時間片

性能:若q比較大,則等待時間長;若q比較小,則每個進程等待時間短,但上下文切換所需的系統消耗會變大,q必須大於上下文切換的中斷時間否則系統不能正常運行。

 

多級隊列排隊 Multilevel Queue

就緒隊列被分成兩個隊列,前台隊列用於交互式進程,使用RR調度,后台隊列用於批處理進程,使用fcfs調度,后台隊列保證前台有比較快的響應。

多級反饋隊列 Multilevel Feedback Queue

  1. 有多個隊列,每個隊列有不同的優先級
  2. 所有新進程都入最高優先級隊列
  3. 按照Round Robin情況調度最高優先級隊列一次,若進程完成則釋放內存結束進程,否則將該進程降入次高級進程
  4. 當最高優先級隊列為空時,用RR調度次高優先級隊列
  5. 當調度優先級為最高級的隊列內加入新進程時,若系統為搶占式調度,則當前進程進入中斷,並回到當前隊列的隊尾。

多級反饋隊列為一種綜合性調度:多級+RR+優先級+SJF+FCFS

 

算法評價 Algorithm Evaluation

  • 確定模型 Determining modeling
  • 隊列模型 Queueing modeling
  • 使用仿真的方式評價(最常用):在公共的平台基於同樣的一組公共數據對算法進行評價。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM