OS學習筆記三:處理器排程
一、 處理器排程的相關概念
1、CPU排程
CPU排程其任務是控制 、協調程式對CPU的競爭。
即按一定的排程演算法從就緒佇列中選擇一個程式,把CPU 的使用權交給被選中的程式如果 沒有就緒程式,系統會安排一個 系統空閒程式或idle
2、程式切換
程式切換:是指一 個程式讓出處理器,由另一個程式佔用處理器的 過程
程式 切換主要包括兩部分工作:
切換全域性頁目錄以載入一個新的地址空間
切換 核心棧 和硬體上下文,其中硬體上下文包括了核心執行新程式需要的全部資訊 , 如CPU 相關 暫存器
切換過程包括了 對原來執行程式各種狀態 的儲存和對 新的程式各種狀態 的恢復
3、程式上下文切換具體步驟
場景:程式A 下CPU ,程式B 上CPU
儲存程式A 的上下文環境(程式計數器、程式狀態字、其他暫存器…… )
用新狀態和其他相關資訊更新程式A 的PCB
把程式A 移至合適的佇列(就緒、阻塞…… )
將程式B 的狀態設定為執行態
從程式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
相關文章
- go lang學習筆記——channel機理及排程理解Go筆記
- React學習筆記-事件處理React筆記事件
- xv6學習筆記(4) : 程式排程筆記
- 【作業系統】--處理器排程作業系統
- 北航OS課程筆記--三、記憶體管理筆記記憶體
- Linux核心學習筆記(5)– 程式排程概述Linux筆記
- os/signal學習筆記筆記
- Vue學習筆記之事件處理Vue筆記事件
- Dotnetty學習筆記——自定義初始化處理器Netty筆記
- 小林coding學習筆記(程序排程演算法)筆記演算法
- Flutter學習筆記(32)--PointerEvent事件處理Flutter筆記事件
- swoft 學習筆記之異常處理筆記
- vue學習筆記3-事件處理Vue筆記事件
- OS學習筆記八:死鎖筆記
- 作業系統(5)處理器排程管理作業系統
- 大資料學習筆記(十五)-大資料排程框架大資料筆記框架
- OpenCV影像處理學習筆記-Day1OpenCV筆記
- angular學習筆記(十)-src和href處理Angular筆記
- OS學習筆記四:同步機制筆記
- OS學習筆記五:儲存模型筆記模型
- OS學習筆記七:IO系統筆記
- 3.1處理機排程概述
- Python深度學習(處理文字資料)--學習筆記(十二)Python深度學習筆記
- Lua學習筆記--迭代器和協程(二)筆記
- YOLOv3學習筆記之資料處理YOLO筆記
- SpringMVC學習筆記10-異常處理SpringMVC筆記
- SpringMVC 學習筆記(四) 處理模型資料SpringMVC筆記模型
- Java中文處理學習筆記——Hello Unicode (轉)Java筆記Unicode
- React 學習筆記【三】React筆記
- goLang學習筆記(三)Golang筆記
- cmake 學習筆記(三)筆記
- 科三學習筆記筆記
- Java學習筆記三Java筆記
- Javascript 學習 筆記三JavaScript筆記
- unity學習筆記(三)Unity筆記
- OS學習筆記六:檔案系統筆記
- gevent 學習筆記 —— 協程筆記
- lua課程學習筆記筆記