OS學習筆記三:處理器排程

衣舞晨風發表於2017-10-05

一、 處理器排程的相關概念

1、CPU排程

CPU排程其任務是控制 、協調程式對CPU的競爭。

即按一定的排程演算法從就緒佇列中選擇一個程式,把CPU 的使用權交給被選中的程式如果 沒有就緒程式,系統會安排一個 系統空閒程式或idle

2、程式切換

程式切換:是指一 個程式讓出處理器,由另一個程式佔用處理器的 過程

  • 程式 切換主要包括兩部分工作:

    • 切換全域性頁目錄以載入一個新的地址空間

    • 切換 核心棧 和硬體上下文,其中硬體上下文包括了核心執行新程式需要的全部資訊 , 如CPU 相關 暫存器

切換過程包括了 對原來執行程式各種狀態 的儲存和對 新的程式各種狀態 的恢復

3、程式上下文切換具體步驟

場景:程式A 下CPU ,程式B 上CPU

  1. 儲存程式A 的上下文環境(程式計數器、程式狀態字、其他暫存器…… )

  2. 用新狀態和其他相關資訊更新程式A 的PCB

  3. 把程式A 移至合適的佇列(就緒、阻塞…… )

  4. 將程式B 的狀態設定為執行態

  5. 從程式B 的PCB 中恢復 上下文(程式計數器 、 程式狀態字、其他暫存器…… )

4、程式上下文切換開銷

  • 直接開銷:核心完成切換所用 的CPU 時間

    • 儲存和恢復暫存器……

    • 切換地址空間 (相關指令比較 昂貴)

  • 間接開銷

    • 快取記憶體(Cache) 、緩衝區快取(Buffer Cache) 和TLB(Translation Look-aside Buffer)

二、設計排程演算法要考慮的幾個問題

1、排程演算法衡量指標

  • 吞吐量 Throughput — 每單位時間完成的程式數目

  • 週轉時間TT(Turnaround Time)

    每個程式從提出請求到執行完成的時間

  • 響應時間RT(Response Time)

    從提出請求到第一次迴應的時間

  • 其他

    • CPU 利用率(CPU Utilization)

    CPU 做有效工作的時間比例

    • 等待時間(Waiting time)

    每個程式在就緒佇列(ready queue) 中等待的時間

三、多處理器排程演算法設計

  • 不僅要決定選擇哪一個 程式執行

  • 還需要決定在 哪一個CPU 上執行

  • 要 考慮程式在多個CPU 之間遷移時的開銷

  • 快取記憶體失效、TLB 失效

  • 儘可能使程式總是在同一個CPU 上執行

  • 如果每個程式可以排程到所有CPU 上,假如程式上次在CPU1 上執行,本次被排程到CPU2 ,則會 增加快取記憶體 失效、TLB 失效; 如果 每個 程式儘量排程到指定的CPU 上,各種失效就會減少

  • 考慮 負載 均衡問題

四、批處理系統中採用的排程演算法

  • 先來先服務(FCFS-First Come First Serve )

  • 最短作業優先(SJF-Shortest Job First )

  • 最短剩餘時間優先(SRTN-Shortest Remaining Time Next )

  • 最高相應比優先(HRRN-Highest Response Ratio Next )

五、互動式系統中採用的排程演算法

  • 輪轉排程(RR-Round Robin )

  • 最高優先順序排程(HPF—Highest Priority First )

  • 多級反饋佇列(Multiple feedback queue )

  • 最短程式優先(Shortest Process Next )

六、WINDOWS 執行緒排程

本文整理自:《作業系統原理》北京大學_陳向群 講義
四、五、六部分內容可以參考課件:課件下載地址

個人微信公眾號:
這裡寫圖片描述

作者:jiankunking 出處:http://blog.csdn.net/jiankunking

相關文章