關於操作系統篇
頁面置換算法
抖動:一個進程在運行中把大部分時間都花費在頁面置換工作上一、最佳置換算法和先進先出置換算法
(一)最佳置換算法
要知道未來需要哪頁.實際上不可能
(二)先進先出頁面置換算法
剔走最老的頁
二、最近最久未使用和最少使用置換算法
(一)最近最久未使用
看最近的n個,最老的踢走
(二)LRU置換算法的硬件支持
寄存器: 8位寄存器.R7~R0.R值最小的頁被踢出
棧:最新訪問的是棧頂
(三)最少使用置換算法
現實使用這個多.一旦訪問就在最高位置一
三、Clock置換算法
(一)簡單的CLOCK置換算法
也叫最近未使用算法.就是有個訪問位,1→0→換出
(二)改進型CLOCK置換算法
四類:A M = 0 0 ~ 1 1
第一步:先找 0 0
第二步:再找 0 1,並置所有頁0 X
第三步:再找0 0,最後找0 1,一定找到
優點:減少I/O
缺點:增加系統開銷
四、頁面緩衝算法
(一)影響頁面換進換出效率的若干因素
頁面置換算法、寫回磁盤的頻率、讀入內存的頻率
(二)頁面緩衝算法PBA
顯著降低頁面換進、換出頻率,減少頁面換進換出的開銷
換入換出的開銷大幅減少,才能使用簡單的置換策略,如FIFO
要在內存中設置:空閒頁面鏈表、修改頁面鏈表
五、訪問內存的有效時間
如果考慮快表的命中率和缺頁率:EAT = .......
如果僅考慮缺頁率:EAT =
④“抖動”與工作集
一、多道程序度與“抖動”
(一)現象
先增後減
(二)原因
進程太多,物理塊不夠分
二、工作集
(一)工作集的基本概念
如果可以預知,就可以先調入內存,大大降低缺頁率,從而顯著提高處理機利用率
(二)工作集的定義
引用的集合,類似FIFO
三、“抖動”的預防方法
(一)採取局部置換策略
“抖動”影響較小
(二)把工作集算法融入到處理機調度中
每個進程在內存的駐留頁面是否足夠多,如果是就調入新作業、否則增加新物理塊
(三)利用L=S準則調節缺頁率
缺頁之間的平均時間= 平均缺頁服務時間
(四)選擇暫停的進程
先暫停優先級最低的進程、在選擇並不重要,但較大的進程
⑤請求分段存儲管理方式
其實也類似於分頁,要硬件和軟件支持
一、請求分段中的硬件支持
(一)請求段表機制
段表項:段名、段長、段基址、存取方式、訪問字段A、修改位M、存在位P、增補位、外存始址
A、M:改進型CLOCK置換算法
P:本段是否調入內存
增補位:看是否做過動態增長
(二)缺段中斷機制 (圖5-12)
萬一虛段S不在內存中,就阻塞請求進程。如果沒有空閒區,就要拼接空閒區或者淘汰實段以形成空閒區
之後讀入段S,修改段表及內存空區鏈
(三)地址變換機構
就是一個地址變換機構
二、分段的共享和保護
(一)共享段表
共享進程計數count、存取控制字段、段號
(二)共享段的分配與回收
共享段的分配、共享段的回收
(三)分段保護
越界檢查、存取控制檢查、環保護機構
第六章 輸入輸出系統
①I/O系統的功能、模型和接口
一、I/O系統的基本功能
(一)隱藏物理設備的細節
(二)與設備的無關性
自動安裝並尋找驅動程序,即插即用
(三)提高處理機和I/O設備的利用率
讓處理機和I/O設備並行操作
(四)對I/O設備進行控制
這是驅動程序的功能
(五)確保對設備的正確共享
獨佔設備:打印機、磁帶機
共享設備:磁盤
(六)錯誤處理
低級能夠解決就不向高級報告,請求高級軟件解決
二、I/O系統的層次結構和模型
(一)I/O軟件的層次結構
用戶層I/O軟件
設備獨立性軟件:映射、保護、分塊、緩衝、分配
設備驅動程序:設置設備寄存器、檢查狀態
中斷處理程序
(二)I/O系統中各種模塊之間的層次視圖
I/O系統上下接口(圖6-2)
I/O系統的分層:中斷處理程序→設備驅動程序→設備獨立性軟件
三、I/O系統接口
(一)塊設備接口
塊設備、隱藏磁盤二維結構、抽象命令映射爲低層操作
(二)流設備接口(Unix的)
字符設備:效率低、不可尋址
get和put操作:有緩衝區
in-control指令:互斥方式實現共享
(三)網絡通信接口
②I/O設備和設備控制器
一、I/O設備
(一)I/O設備的類型
按使用特性:存儲設備、I/O設備(輸入輸出交互的)
按傳輸速率:低速、中速、高速
(二)設備與控制器之間的接口
接口:數據信號線、控制信號線、狀態信號線
二、設備控制器
(一)設備控制器的基本功能
接收和識別命令、數據交換、標識和報告設備的狀態、數據緩衝區、差錯控制
(二)設備控制器的組成
設備控制器與處理機的接口、設備控制器與設備的接口、I/O邏輯
三、內存映像I/O
(一)利用特定的I/O指令
缺點:訪問內存和訪問設備要兩種不同的指令
(二)內存映像I/O
就是k爲界限,0≤k≤n-1,就是內存地址;k≥n,就是寄存器地址。統一了對內存和對控制器的訪問方法
四、I/O通道
(一)I/O通道設備的引入
這是一種特殊的處理機,但只侷限於I/O相關的指令、而且沒有自己的內存
(二)通道類型
字節多路通道:一個大水喉,多條小水管;一個換頭快,一個速率慢
數組選擇通道:利用率低
數組多路通道:甚至可以並行操作
(三)“瓶頸”問題
增加通路即可解決
③中斷機構和中斷處理程序
一、中斷簡介
(一)中斷和陷入
中斷:由外部設備引起,暫停當前程序,執行中斷處理程序
陷入:CPU內部事件引起的,多是出錯故障
(二)中斷向量表和中斷優先級
中斷向量表:asm有學
中斷優先級:現實中有多箇中斷信號源,要規定不同優先級
(三)對多中斷源的處理方式
屏蔽中斷:順序執行。優點簡單;缺點無視實時中斷請求
嵌套中斷:有個優先級
二、中斷處理程序
測定是否有未響應中斷信號;
保護被中斷進程的CPU環境;
轉入相應設備處理程序;
中斷處理;
恢復CPU現場並退出中斷
④設備驅動程序
一、設備驅動程序概述
(一)設備驅動程序的功能
接收命令和參數,並轉換爲低層操作序列
檢查I/O合法性,瞭解I/O工作狀態,傳遞I/O設備操作有關參數,設置設備工作方式
及時響應設備控制器發來的中斷請求,並根據中斷類型,調用響應中斷處理程序
(二)設備驅動程序的特點
抽象的I/O請求轉換成具體的I/O操作,反映給I/O進程
和硬件特性緊密相關,終端驅動程序可以只有一個
常用控制方式:中斷驅動、DMA
一部分必須用彙編語言寫,很多驅動程序基本部分已經固化在ROM
允許可重入
(三)設備處理方式
一類設備一個進程
一個I/O進程負責各類設備的I/O操作
只爲各類設備設置相應的設備驅動程序,供用戶或系統進程調用(目前用得最多)
二、設備驅動程序的處理過程
(一)將抽象要求轉換爲具體要求
(二)對服務請求進行校驗
譬如要求打印機輸入數據
(三)檢查設備的狀態
檢測寄存器中的不同位,瞭解設備的狀態
(四)傳送必要參數
波特率、奇偶校驗等等參數
(五)啓動I/O設備
瞭解數據是否到達
三、對I/O設備的控制方式
(一)使用輪詢的可編程I/O方式
無限等待,好浪費CPU
(二)使用中斷的可編程I/O方式
百倍提高CPU利用率
(三)直接存儲器訪問方式
至少傳送一個數據塊,DMA方式提高CPU和I/O之間的並行程度
(四)I/O通道控制方式
使用通道程序完成CPU指定的I/O任務
⑤與設備無關的I/O軟件
一、與設備無關軟件的基本概念
(一)以物理設備名使用設備
以前應用程序與物理設備直接相關
(二)引入了邏輯設備名
通過更換邏輯設備表即可改變顯示終端
(三)邏輯設備名稱到物理設備名稱的轉換
要搞一張邏輯設備表
二、與設備無關的軟件
(一)設備驅動程序的統一接口
要有統一接口,同時抽象設備名要映射到適當的驅動程序上
(二)緩衝管理
設置緩衝區,緩和CPU和I/O設備之間的速度矛盾、提高CPU利用率
(三)差錯控制
暫時性錯誤:只有連續多次出錯才報告上層,否則由設備驅動程序自己處理
持久性錯誤:要查清發生錯誤的原因,避免以後再發生錯誤
(四)對獨立設備的分配與回收
獨佔設備要先申請
(五)獨立於設備的邏輯數據塊
注:與設備無關軟件功能:設備驅動程序的統一接口、緩衝、錯誤報告、分配與釋放專用設備、提高與設備無關的塊大小
三、設備分配
(一)設備分配中的數據結構
系統設備表SDT→設備控制表DCT:類型、標識符、狀態、設備隊列隊首指針、重複執行次數、指向控制器表的指針→控制其控制表COCT→通道控制表CHCT
(二)設備分配時應考慮的因素
設備固有屬性:獨佔、共享、虛擬設備
設備分配算法:FCFS、優先級高優先
安全性:安全、不安全
(三)獨佔設備的分配程序
獨佔設備:分配設備、控制器、通道
如果要設備無關地找設備,就要從SDT找DCT,再逐個測試安全性