《計算機作業系統(第四版)》知識點歸納
阿新 • • 發佈:2019-01-07
大二期末要閉卷考計算機作業系統,於是自己總結歸納了一些內容,希望後來的同道之人可以省點時間~(做完歸納,考試就不怕了)
說明:一開始是少量知識點以“填空題”的形式記錄,後面的內容是按章節歸納
對於批處理作業,必須提供相應的作業控制資訊
作業系統的主要功能是管理計算機系統中的(資源)
分時系統的響應時間(及時性)主要是根據(使用者所能接受的等待時間)決定的
推動分時系統形成和發展的動力是(方便使用者)//人機互動
多道批OS動力是(提高資源利用率和OS吞吐量)
採用(微核心)結構時,將OS分成用於實現OS最基本功能的核心和提供各種服務的伺服器兩個部分
Windows 95是(單使用者多工 )作業系統。
系統專門為執行中的應用程序建立新程序的事件是( 提供服務 )。
若程序正處於執行狀態時,因終端的請求而暫停下來以便研究其執行情況,這時程序應轉變為( 靜止就緒 )狀態
在引入執行緒的作業系統中,資源分配和排程的基本單位是( 程序 )。
死鎖的預防是通過破壞產生死鎖的四個必要條件來實現的。下列方法中,( 一次性分配策略 )破壞了“請求與保持”條件。
為了使作業的平均週轉時間最短,應採用( 短作業優先 )演算法
為了使短作業、長作業及互動作業使用者都比較滿意,應採用( 多級反饋佇列排程演算法 )。
下列演算法中,( 時間片輪轉法 )只能採用搶佔排程方式
在動態優先權中,隨著程序執行時間的增加,其優先權將降低
死鎖的預防是通過破壞產生死鎖的四個必要條件來實現的。下列方法中,( 資源有序分配策略 )破壞了“迴圈等待”條件。
在分時系統中除了程序排程以外,通常還設定了( 中級排程 )。
交換技術(還是)現代作業系統中常用的技術。
動態重定位是在作業( 裝入過程 )中進行的
適用於動態連結的儲存方式是( 分段儲存管理 )。
(固定分割槽)支援多道程式設計,管理最簡單,但儲存碎片多
非虛擬儲存器的論述:要求作業在執行前必須全部裝入記憶體,且在執行過程中也必須一直駐留記憶體
虛擬儲存器的論述:在請求段頁式系統中,以段為單位管理使用者的虛空間,以頁為單位管理記憶體空間
由於有了虛擬儲存器,於是允許使用者使用比記憶體更大的地址空間
一個計算機系統的虛擬儲存器的最大容量是由(計算機的地址結構)確定的,其實際容量是由(記憶體和硬碟容量之和)確定的
分段的尺寸受記憶體空間的限制,但作業總的尺寸不受記憶體空間的限制
在UNIX系統中,對物理塊的分配是採用( 可變分配全域性置換 )策略
在UNIX系統中,如果被換出的頁的內容並未被修改,但對換區中尚無拷貝,此時應將它( 換出到對換區);若被換出的頁的內容己被修改,應將它(換出到對換區)
第一章 引論
①為什麼發明計算機系統:方便、有效、可擴充、開放
計算機系統作用:做介面、管理資源、資源的抽象
發展計算機系統的動力:提高利用率、更加方便、應用.體系.硬體更新都要跟上
②計算機系統發展史
一、無作業系統
(一)人工操作:單使用者、CPU. 記憶體長期空閒
(二)離線輸入/輸出(OFF-LINE I/0):裝好卡片再上機。節約CPU空閒時間、提高I/O速度
二、單道批作業系統
描述:有個監督程式將磁帶上的作業調入計算機
缺點:I/O太慢,CPU太快
三、多道批作業系統
描述:A在I/0,B趁機CPU
優點:肯定提高資源利用率、系統吞吐量變大
缺點:每個程式都要很久才處理完、無互動能力
未解難題:記憶體、外存、I/O、CPU、作業管理、介面
四、分時系統
描述:解決人機互動問題
優點:終於有人機互動、多使用者共享主機
實際問題:由於多使用者,所以要有“多路卡”、作業直接入記憶體、有個“時間片”排程作業
特徵:多路、獨立、及時(使用者可接受)、互動
五、實時系統
描述:工業(武器)控制系統、資訊查詢系統、多媒體系統、嵌入式系統
型別1:週期性實時:真的很週期;非週期性實時:有開始截止時間和完成截止時間
型別2:硬實時:工業、武器系統;軟實時:資訊查詢系統和多媒體系統
與分時系統比較: 多路、獨立、及時(毫秒級)、互動、可靠
六、微機時代
(一)單使用者單任務:8位機的CP/M、16位機的MS-DOS
(二)單使用者多工:目前的32位系統,如Windows
(三)多使用者多工:UNIX、Solaris、Linux
③作業系統共同特性:
一、併發
(一)併發和並行巨集觀上一樣,
併發:單處理機系統,微觀上交替執行
並行:多處理機系統,微觀上同時執行
(二)引入程序
程序:在系統中能獨立執行並作為資源分配的基本單位,由機器指令、資料和堆疊等組成,能獨立執行的活動實體
特點:用程序就可以併發執行了
二、共享
(一)互斥共享方式
例子:臨界資源,印表機、磁帶機
描述:你要先申請才能獲得資源
(二)同時訪問方式
描述:微觀上還是併發
例子:多使用者磁碟裝置
條件:系統允許程序併發、系統能有效管理資源
三、虛擬
(一)時分複用技術
虛擬處理機技術:分身之術
虛擬裝置:又是分身之術,騙使用者以為有專人服務
時分複用:速度:≤1/N
(二)空分複用技術
描述:將程式、電話線分成若干部分,然後各部分分時進入記憶體執行
空分複用:空間:≤1/N
四、非同步
描述:因為要併發,所以需要一個機制排程程序
④作業系統主要功能
一、處理機管理功能
(一)控制程序
描述:要併發,就要程序、要程序,就要管理
(二)程序同步
程序互斥方式:臨界資源要互斥
程序同步方式:合作完成共同任務,同步機構要協調先後次序
(三)程序通訊
描述:對合作程序而言,需要交換資訊。當他們處於同一計算機系統時,通常採用直接通訊的方式。
例子:輸入程序、計算程序、列印程序,需要資訊交換
(四)排程
作業排程:選擇作業、建立程序、分配資源、插入就緒佇列
程序排程:從就緒佇列中選出程序,分配CPU
二、儲存器管理功能
(一)記憶體分配
任務:分配空間、減少碎片、追加記憶體空間
方式:靜態分配,裝入記憶體時確定,不允許追加、不允許移動;動態分配,允許追加、允許移動
(二)記憶體保護
任務1:每道程式只在自己的記憶體空間執行,互不干擾
任務2:不允許使用者程式訪問作業系統程式和資料、也不允許使用者程式轉移到非共享的其他使用者程式中執行
(三)地址對映
任務:儲存器要負責地址對映,在硬體支援下完成
(四)記憶體擴充
描述:用虛擬儲存技術,從邏輯上擴充記憶體容量
任務1:請求-調入功能
任務2:置換功能
三、裝置管理功能
任務1:完成使用者程序的I/O請求:分配I/O裝置,完成I/O操作
任務2:提高CPU和I/O利用率:提高I/O速度,方便使用者使用I/O裝置
(一)緩衝管理
描述:在記憶體中設定緩衝區
例子:單緩衝機制、雙向同時傳送資料的雙緩衝機制、多個裝置共同使用的公用“緩衝池”機制
(二)裝置分配
描述:在系統中設定“裝置控制表”、“控制器控制表”等資料結構,用於記錄裝置和控制器等識別符號和狀態。根據表就知道指定裝置當前是否可用、忙碌。分配時,針對不同裝置要有不同“分配方式”,對獨佔裝置還要考慮分配後是否安全
(三)裝置處理
描述:CPU向裝置控制器發出I/O命令,要求完成I/O操作、反之,CPU接收控制器發出的中斷請求,並響應.處理
四、檔案管理功能
描述:管理使用者、系統檔案,方便使用;保證安全性
(一)檔案儲存空間管理
背景:多使用者環境下,使用者自己管理檔案儲存,會困難和低效
任務1:為每個檔案分配外存空間、提高外存利用率、進而提高存取速度
任務2:系統中設定資料結構,記錄檔案儲存空間使用情況,以供分配時參考
任務3:分配和回收
(二)目錄管理
任務1:為每個檔案建立目錄項,包括檔名、屬性、物理位置等,以實現按名存取
任務2:實現檔案共享。
任務3:提供目錄查詢手段
(三)檔案讀/寫管理和保護
檔案讀/寫管理:根據使用者請求,從外存中讀取資料,或將資料寫入外存
檔案保護:防止未經核準的使用者存取檔案、防止冒名頂替存取檔案、防止以不正確方式使用檔案
五、作業系統與使用者之間的介面
(一)使用者介面
描述:方便使用者直接.間接控制自己的作業
聯機使用者介面:等待使用者鍵入命令
離線使用者介面:一開始就提供作業說明書,直到作業結束語句
圖形使用者介面:移動滑鼠選擇選單項
(二)程式介面
描述:舊系統用匯編語言寫,所以只有組合語言的才能直接使用系統呼叫;如果是高階語言,就用一一對應的庫函式
六、現代作業系統的新功能
(一)系統安全
描述:確保儲存和傳送資料的保密性、完整性和系統可用性,要用幾種技術
技術:認證技術、密碼技術、訪問控制技術、反病毒技術
(二)網路的功能和服務
功能:網路通訊、資源管理、應用互操作
(三)支援多媒體
功能:接納控制功能、實時排程、多媒體檔案的儲存
⑤OS結構設計
一、傳統作業系統結構
(一)無結構作業系統
又名:整體系統結構
(二)模組化結構OS
基本概念:
又名:模組-介面法
描述:有模組、子模組、介面
模組獨立性:
標準:內聚性越高,模組獨立性越高、耦合度越低,模組獨立性越高
優點:提高設計正確性.可理解性和可維護性、增強可適應性、加快加速過程
缺點:介面難以滿足需求、無序
(三)分層式結構OS
基本概念:有序分層,自底向上法鋪設中間層
優點:易保證系統正確性、易擴充和易維護
缺點:系統效率降低
二、客戶/伺服器模式(Client/Server Model)簡介
(一)客戶/伺服器模式的由來、組成和型別
組成:客戶機、伺服器、網路系統
(二)客戶/伺服器之間的互動
描述:客戶傳送請求訊息、伺服器接收訊息、伺服器回送訊息、客戶機接收訊息
(三)客戶/伺服器模式的優點
描述:資料分佈處理和儲存、便於集中管理、靈活性和可擴充性、易於改編應用軟體
三、面向物件的程式設計
(一)OOP的基本概念
描述:抽象,具體事物為物件
物件:封裝好
物件類:建立多個相似物件
繼承:繼承父類,增加部分
(二)OOP的優點
描述:“重用”提高產品質量和生產率、使系統具有更好的易修改性和易擴充套件性、易於保證系統“正確性”和“可靠性”
四、微核心OS結構
描述:支援多處理機
例子:卡內基·梅隆的Mach OS、Windows 2000/XP
(一)基本概念
描述:足夠小的核心、基於C/S模式、應用“機制與策略分離”原理、採用OOP技術
(二)基本功能
描述:程序管理、低階儲存器管理、中斷和陷入處理
(三)優點
描述:提高可擴充套件性、增強可靠性、可移植性強、提供對分散式系統的支援、融入OOP
(四)缺點
描述:效率降低
第二章 程序描述與控制
①前趨圖與程式執行
一、前趨圖與程式執行
(一)前趨圖
描述:前一個做完,才到後一個做、禁止迴圈
二、順序執行
描述:一個跟一個
特徵:順序、封閉(獨佔資源)、可再現
三、併發執行
描述:互不依賴才能併發執行
特徵:間斷、失去封閉、不可再現
②程序的描述
一、程序的定義和特徵
程序實體:程式段、相關的資料段和PCB
定義:程序是程序實體的執行過程,是系統進行資源分配和排程的一個獨立單位
特徵:動態、併發、獨立、非同步
二、程序的基本狀態及轉換
程序的三基態:就緒(只欠CPU)、執行、阻塞(因故無法繼續執行)
三態轉換:如圖
新增兩態:建立狀態、終止狀態
五態轉換:如圖
三、掛起操作和程序狀態的轉換
掛起原因:終端使用者需要、父程序請求、負荷調節、作業系統需要
引入掛起後的三態轉換:如圖
引入掛起後的五態轉換:如圖
四、程序管理中的資料結構
用於管理控制的資料結構:每個資源、程序都有一個數據結構用於表徵實體——資源資訊表、程序資訊表,包括:標識、描述、狀態等和一批指標,通過指標能夠連結成佇列,便於查詢
分類:記憶體表、裝置表、檔案表、程序表
PCB的作用:作為獨立執行基本單位的標識、能實現間斷執行、提供程序管理所需的資訊、實現與其他程序的同步與通訊
PCB的資訊:程序識別符號(內外部)、處理機狀態、程序排程資訊、程序控制資訊
PCB組織方式:線性方式、連結方式、索引方式
③程序控制
一、作業系統核心
描述:常駐記憶體的模組
目的:保護軟體、提高OS執行效率
系統態、管態、核心態:高特權、訪問所有暫存器.儲存區、傳統OS都在系統態執行
使用者態、目態:低特權、執行指定指令.訪問指定暫存器和儲存區
支撐功能:中斷處理、時鐘管理、原語操作
資源管理功能:程序管理、儲存器管理、裝置管理
二、程序的建立
層次結構:UNIX有父子關係,Windows只有控制與被控制關係
程序圖:描述家庭關係的圖
引起建立程序的事件:使用者登入、作業排程、提供服務(譬如列印)、應用請求
程序的建立:申請空白PCB、分配物理.邏輯資源、初始化PCB、如果能插入就緒,就插
三、程序的終止
引起程序終止的事件:正常結束、異常結束、外界干預
程序的終止過程:根據識別符號、終止執行.立即排程、子孫終止、資源歸還、移出佇列
四、程序的阻塞與喚醒
引起程序阻塞和喚醒的事件:向系統請求共享資源失敗、等待某操作完成、新資料尚未到達、等待新任務到達
進行阻塞過程:發生上述的某事件,就進入block過程,主動將狀態改為阻塞,PCB插入阻塞佇列(分類插入),處理機分配給另一就緒程序,切換,並保留被阻塞程序的處理機狀態
程序喚醒過程:由釋放資源的程序呼叫wakeup原語,即移出阻塞佇列,合作/相關的程序中安排wakeup
五、程序的掛起與啟用
程序的掛起:活動→靜止,程序正在執行,就轉向排程程式重新排程
程序的啟用過程:從外存調入active原語到記憶體,檢查程序現行狀態,靜止→活動
搶佔排程策略:靜止就緒程序→就緒佇列,比較當前程序優先度,有機會立即剝奪當前程序執行
④程序同步
描述:能夠併發、改善利用率、提高吞吐量、但使系統複雜
一、程序同步的基本概念
制約關係:間接相互制約關係、直接相互制約關係
間接相互制約關係:互斥共享
直接相互制約關係:合作共享,非同步性要做好
臨界資源:生產者-消費者問題、
臨界區、:進入區、臨界區、退出區、剩餘區
同步機制應遵循的規則:空閒讓進、忙則等待、有限等待、讓權等待
二、硬體同步機制
關中斷:缺點多:濫用關中斷.造成嚴重後果、關中斷時間過長、不適用於多CPU系統(因為一個處理器關中斷並不能防止程序在其他處理器上執行相同的臨界段程式碼)
Test-and-Set:不斷測試lock,如果是FALSE,就進入臨界區,並lock == TRUE;否則測試到TS(s) == TRUE
Swap指令:一直等,直到key == TRUE
但以上都不符合“讓權等待”原則
三、訊號量機制
整形訊號量:S≤0,就一直等,直到釋放互斥資源
記錄型訊號量:整形訊號量不符合“讓權等待”原則。如果有資源,就分配,如果無,就插入阻塞佇列;釋放資源,如果有等待,就啟用
AND型訊號量:一口氣全分配
訊號量集:有多個訊號量(S訊號量,至少要t個,每次分配d個)
四、訊號量的應用
利用訊號量實現程序互斥:mutex = ( -1, 0, 1)= (無,一臨一阻隊, 一臨一信隊)
利用訊號量實現前趨關係:需要的訊號量被佔用了,就這樣實現
五、管程機制
描述:為解決訊號量機制分散、容易死鎖的問題,發明新同步工具——管程
定義:定義一個數據結構和能為併發程序所執行(在該資料結構上)的一組操作,這組操作能同步程序和改變管程中的資料
組成:管程名稱、資料結構的說明、對資料結構進行操作的過程、初始化的語句
特性:模組化、抽象資料型別、資訊掩蔽
管程與程序不同:都有資料結構,一個公.一個私、管程操作同步.初始化.程序順序執行、管程為解決互斥資源.程序實現併發性、程序呼叫管程.程序主動.管程被動、管程不能併發.程序能併發、管程是OS的一個資源管理模組.程序有動態性
條件變數:增加一個條件變數,萬一發生意外,在管程中被掛起或被阻塞,下一個程序都可以繼續執行
⑤經典程序的同步問題
一、生產者-消費者問題
記錄型訊號量解決:如果緩衝區空,而且能夠獲取訊號量,就投放產品;如果緩衝區有產品,而且能夠獲取訊號量,就消費
AND訊號量解決:一口氣全分配
管程解決:利用管程只有一個程序能夠使用的屬性
二、哲學家進餐問題
記錄型訊號量解決:先拿左.後那右、先放左.後放右
解決死鎖:最多4人取筷子、先檢查.有左右筷子才能取、奇左右.偶右左
AND訊號量解決:一口氣全分配
三、讀者-寫者問題
描述:可以多讀一、一旦開始寫.就不能讀或寫
記錄型訊號量解決:
讀操作:等rmutex就是為了改readcount→無人讀?看看是否在寫.等wmutex→readcount++→自增完成.rmutex還你→讀讀讀→等rmutex為了自減readcount→無人讀?可以寫了.還你wmutex
寫操作:等wmutex.即無讀無寫→寫完.還你wmutex
利用訊號量集機制:
讀:限制reader個數→如果mx是1.就讀→最後釋放一個reader個數
寫:如果mx是1.並且讀者數為0.就寫→寫完釋放mx
⑥程序通訊
一、程序通訊型別
共享儲存器系統:某些資料結構和共享儲存區、管道通訊系統、訊息傳遞系統、C-S系統
二、訊息傳遞通訊的實現方式
(一)直接訊息傳遞系統
1.直接通訊原語:對稱定址方式、非對稱定址方式
2.訊息格式:較短的減少系統處理和儲存的開銷、較長可以方便
3.程序同步方式:發塞收塞(程序間緊密同步.無緩衝)、發通收塞(平常狀態)、發通收通(發生某事件無法繼續執行)、(無發塞收通)
4.通訊鏈路:用“建立連線”原語建立通訊鏈路.用完拆、用“傳送命令”原語建立鏈路,還分單向和雙向
(二)信箱通訊(間接)
1.定義:是資料結構.分信箱頭和信箱體
2.原語:建立和撤銷. 傳送和接收
3.型別:私用、公用(作業系統建立)、共享(程序建立)
4.程序之間的關係:一對一、多對一、一對多、多對多
三、直接訊息傳遞系統例項
訊息緩衝佇列通訊機制中的資料結構:利用資料結構式訊息緩衝區、在PCB增加有關通訊的資料項
原語:設定傳送區、申請PCB(B)的緩衝區i、複製到緩衝區、插入訊息佇列、移出訊息佇列、複製到接收區、釋放緩衝區
⑦執行緒的基本概念
描述:就是為了提高程式併發執行的程度
一、執行緒的引入
程序的兩個基本屬性:程序是一個可擁有資源的獨立單位、程序同時是一個可獨立排程和分派的基本單位
程序併發執行所需的時空開銷:建立程序、撤銷程序、程序切換
執行緒——作為排程和分派的基本單位:執行緒輕裝上陣
二、執行緒與程序比較
排程的基本單位:執行緒是排程和分派的基本單位、跨程序,會切換程序
併發性:執行緒的合作.能夠併發
擁有資源:有TCB.但只是必不可少、保證獨立執行的資源
獨立性:同一程序的不同執行緒共享程序的記憶體地址空間和資源
系統開銷:因為輕裝.所以減少開銷、提升速度
支援多處理機系統:對多執行緒程序,多個執行緒可以分配到多個處理機上
三、執行緒的狀態和執行緒控制塊
執行緒執行的三個狀態:和程序一樣
執行緒控制塊TCB:識別符號、一組暫存器、執行狀態、優先順序、執行緒專有儲存區、訊號遮蔽、堆疊指標
多執行緒OS中的程序屬性:程序是可擁有資源的基本單位、多個執行緒可併發執行、程序已不是可執行的實體
⑧執行緒的實現
一、執行緒的實現方式
核心支援執行緒KLT:
優點:核心排程同一程序多個執行緒並行執行、一個執行緒阻塞.其他執行緒佔有處理機、支援小資料結構和堆疊.切換較快開銷小、核心本身採用多執行緒技術.提高系統執行速度和效率
使用者級執行緒ULT:
優點:無需核心.節省模式切換的開銷、排程演算法程序專用、與OS無關.甚至可以在作業系統平臺實現
缺點:一個執行緒阻塞.同進程的其他執行緒都會塞、只有一個CPU.只有一個執行緒能執行、按程序分配.不公平
組合方式:
多對一模型:優點:開銷小、缺點:一塞程序全塞、只有一執行緒訪問核心、多執行緒不能同時在多個處理機上執行
一對一模型:一個使用者級執行緒對映到一個核心支援執行緒
多對多模型:一對一和多對一的結合
二、執行緒的實現
核心支援執行緒的實現:建立執行緒、儲存資訊、排程和切換執行緒、撤銷執行緒、回收資源
使用者級執行緒的實現:
執行時系統:用於管理和控制執行緒的函式的集合,這些函式駐留使用者空間.並作為使用者級執行緒與核心之間的介面
核心控制執行緒:連線到LWP,連線到LWP的執行緒才能與核心通訊
三、執行緒的建立和終止
執行緒的建立:初始化執行緒、建立後返回執行緒識別符號
執行緒的終止:終止執行緒用函式或系統呼叫終止操作.但有些執行緒被建立就會一直執行。大多數OS,執行緒被中止後並不立即釋放所佔資源,只有“其他執行緒”執行分離函式才會分離資源,才能被其他執行緒利用。雖然未釋放的資源也可以被其他執行緒使用,但要有個“等待執行緒終止”的連線命令作保險.否則一直阻塞
第三章 處理機排程與死鎖
①處理機排程的層次和排程演算法的目標
描述:作業可能要經歷多級處理機排程
一、處理機排程層次
(一)高階排程(長程排程/作業排程)
物件是作業、決定將外存中處於後備佇列的作業調入記憶體.建立程序和分配資源.並放入就緒佇列、主要存在於多道批處理系統,分時和實時系統不設定高階排程
(二)低階排程(程序排程/短程排程)
物件是程序(/核心級執行緒)、決定就緒佇列哪個程序獲得處理機、多道批.分時和實時都要配置
(三)中級排程(記憶體排程)
物件是暫時不能執行的程序、把這些程序調到外存.設為掛起狀態、一有條件.稍微有空就變為就緒狀態
★分級按執行頻率劃分
二、處理機排程演算法的目標
(一)共同目標
提高資源利用率、公平、平衡、策略強制執行
(二)批處理系統目標
處理機利用率高、平均週轉時間短、系統吞吐量高
(三)分時系統目標
響應時間快、均衡性
(四)實時系統目標
截止時間保證、可預測性
②作業與作業排程
一、批處理系統中的作業
(一)作業和作業步
作業:包括程式.資料和作業說明書、在批處理系統.作業是基本單位從外存調入記憶體
作業步:獨立步驟
(二)作業控制塊(JCB)
包括作業標識、使用者名稱稱、使用者賬號、作業型別、作業狀態、排程資訊、資源需求、資源使用情況等
流程:進入系統→建立JCB→根據型別放到後備佇列等待排程→入記憶體→根據JCB和作業說明書控制→完成→回收資源.撤銷JCB
(三)作業執行的三個階段和三種狀態
收容階段-後備狀態、執行階段-執行狀態、完成階段-完成狀態
二、作業排程的主要任務
也叫:接納排程
考慮:接納多少作業、接納哪些作業
三、先來先服務FCFS和短作業優先SJF排程演算法
(一)先來先服務
就這樣.完成或阻塞才分配到其他程序、實際中和其他演算法結合使用
(二)短作業優先
實際用得多、要預知作業執行時間、長作業、緊迫作業不利、無人機互動
四、優先順序排程演算法和高響應比優先排程演算法
(一)優先順序排程演算法
外部賦予作業優先順序
(二)高響應比優先排程演算法
集SJF.FCFS的優點.兼顧長作業、但要做相應比計算.增加系統開銷(Exp.做過類似)
③程序排程
一、程序排程的任務、機制和方式
(一)程序排程的任務
儲存處理機的現場資訊、按某種演算法選取程序、把處理器分配給程序
(二)程序排程機制
排隊器:插入就緒佇列
分配器:從就緒佇列取出.分配處理機
上下文切換器:儲存、裝入新的
(三)程序排程方式
非搶佔方式:只有完成或因某事無法繼續執行、I/O、執行了原語操作如block,才會引起程序排程
優點:簡單、開銷小、適用大多數批處理系統
搶佔方式:對分時系統而言.有人機互動、對實時系統而言.能滿足任務需求
主要原則:優先權原則、短程序優先原則、時間片原則
二、輪轉排程演算法
(一)輪轉法(RR)的基本原理
按FCFS策略排成就緒佇列,每隔一定時間就產生一次中斷
(二)程序切換時機
時間片未用完就完成:馬上排程隊首程序.啟動新時間片
時間片完還沒完成:中斷.程序被調到就緒佇列隊尾
(三)時間片大小的確定
太短有利於短程序、太長退化為FCFS演算法.要計算平均週轉時間(帶權週轉時間)
三、優先順序排程演算法
(一)優先順序排程演算法的型別
非搶佔式和搶佔式
(二)優先順序的型別
確定優先順序的依據:
靜態優先順序:程序型別、程序對資源的需求、使用者需求
動態優先順序:先賦予優先順序,隨著程序推進或等待時間增加而改變
四、多佇列排程演算法
將一條就緒佇列拆分成多條,各有各排程演算法
五、多級反饋佇列排程演算法
(一)排程機制
多條就緒佇列、佇列內使用FCFS演算法.一個時間片未完成就放到下一個佇列的末尾.最後一個佇列用RR方式、按佇列優先順序排程.前佇列空才到本佇列執行
(二)排程演算法的效能
終端型使用者、短批處理作業使用者、長批處理作業使用者
六、基於公平原則排程演算法
(一)保證排程演算法
保證處理機公平分配
功能:跟蹤程序已經執行的處理時間、該時間除以n、計算實際處理時間和應獲得時間之比、比較比率、比率最低的獲得處理機
(二)公平分享排程演算法
考慮多使用者
④實時排程
描述:實時系統有兩種實時任務——HRT和SRT
一、實現實時排程的基本條件
(一)提供必要資訊
就緒時間、開始截止和完成截止時間、處理時間、資源要求、優先順序
(二)系統處理能力強
(處理時間i/週期時間i)總和 ≤ 1. 未考慮任務切換花費的時間還應該留有餘地
提高系統處理能力的途徑:單處理機系統增強處理能力.顯著減少每個任務的處理時間、多處理機系統.就變成(處理時間i/週期時間i)總和 ≤ N
(三)採用搶佔式排程機制
執行完關鍵程式和臨界區後,能及時將自己阻塞起來,以釋放處理機
(四)具有快速切換機制
對中斷的快速響應能力、快速的任務分派能力
二、實時排程演算法的分類
根據任務性質:H/S
根據排程方式:非搶佔式/搶佔式
(一)非搶佔式排程演算法
輪轉、優先排程
(二)搶佔式排程演算法
基於時鐘中斷的搶佔式優先順序排程演算法:等待時鐘中斷髮生才剝奪當前任務的執行
立即搶佔優先排程演算法:好快好快.只要任務未處於臨界區.就立即剝奪當前任務執行
三、最早截止時間優先EDF演算法
非搶佔式排程方式用於非週期實時任務:開始截止時間早的排前
搶佔式排程方式用於週期實時任務:最早截止時間優先演算法
四、最低鬆弛度優先LLF演算法
鬆弛度???
五、優先順序倒置
(一)優先順序倒置的形成
(二)優先順序倒置的解決方法
繼承動態優先順序的方法:P3繼承P1的優先順序.一方面避免P2搶佔處理機、另一方面釋放mutex資源
⑤死鎖概述
一、資源問題
指互斥資源、不可被搶佔的資源
(一)可重用性資源和消耗性資源
可重用性資源:一個只能分配給一個程序使用、順序為請求.使用.釋放、數目相對固定.執行期間不能建立或刪除
可消耗性資源:在程序執行中樹木不斷變化.可為0、可以不斷建立.放入緩衝區、可以由程序建立.使用並不再返回資源類
(二)可搶佔性資源和不可搶佔性資源
可搶佔性資源:可以被其他程序搶佔.如CPU和主存
不可搶佔性資源:一旦分配給程序就不能強制收回.要做到底
二、計算機系統中的死鎖
(一)競爭不可搶佔性資源引起死鎖
我要你的,你要我的,形成環路,死鎖
(二)競爭可消耗資源引起死鎖
譬如訊息通訊機制.先讀後寫.就會死鎖
(三)程序推進順序不當引起死鎖
競爭不可搶佔性資源引起死鎖的翻版.多畫了一個圖
三、死鎖的定義、必要條件和處理方法
(一)死鎖的定義
這組死鎖程序都在等其他程序釋放所佔資源
(二)產生死鎖的必要條件
互斥條件:一段時間只被一個程序佔用
請求和保持條件:程序已經保持至少一個條件.但有提出新資源請求
不可搶佔條件:只能在程序用完才能釋放
迴圈等待條件:存在迴圈鏈
(三)處理死鎖的方法
預防死鎖:設定限制條件.破壞產生死鎖四個必要條件來預防
避免死鎖:在資源動態分配時.用防止系統進入不安全狀態
檢測死鎖:通過檢測機構及時檢測死鎖.採取適當措施以解脫
解除死鎖:撤銷程序.回收資源.分配給處於阻塞的程序
防範逐漸減弱.但資源利用率提高.程序因資源因素而阻塞的頻度下降
⑥預防死鎖
一、破壞“請求和保持”條件
保證:程序請求資源時,不持有不可搶佔資源
第一種協議:一次性全部申請,從而破壞“請求條件”、缺點是資源被嚴重浪費.程序飢餓
第二種協議:先釋放資源.再請求新資源
二、破壞“不可搶佔”條件
當保持了某些不可搶佔資源後.提出新資源請求不得滿足.就必須釋放已經保持的資源.等需要時再申請
缺點:增加週轉時間、增加系統開銷、降低系統吞吐量
三、破壞“迴圈等待”條件
總有一個程序佔據了較高序號的資源.此後它繼續申請的資源必然是空閒的
⑦避免死鎖
一、系統安全狀態
(一)安全狀態
計算一個資源分配的安全性.如果分配不會導致不安全狀態.才可將資源分配給程序
(二)安全狀態之例
(三)由安全狀態向不安全狀態的轉換
二、利用銀行家演算法避免死鎖
(一)銀行家演算法中的資料結構
Availalbe、Max、Allocation、Need
(二)銀行家演算法
睇wiki“銀行家演算法”條目
宣告:Request是請求向量
Request ≤ Need, 否則出錯
Request ≤ Available, 否則P等待
系統試探分配資源給P, 並執行Availalbe -= Requeset; Allocation+= Request; Need -= Request
⑧死鎖的檢測與解除
一、死鎖的檢測
(一)資源分配圖
圓圈代表程序、方格代表一類資源、邊代表資源分配
(二)死鎖的定理
簡化資源分配圖.如果不能完全簡化.就會死鎖
(三)死鎖檢測中的資料結構
類似於銀行家演算法???
二、死鎖的解除
常用兩種方法:搶佔資源、終止/撤銷程序
(一)終止程序的方法
終止所有死鎖程序:會功虧一簣
逐個終止程序:找到代價最小.考慮優先順序、已執行時間.還需的時間、已用資源、互動式還是批處理式
(二)付出代價最小的死鎖解除演算法
很不實際
第四章 儲存器管理
①儲存器的層次結構
一、多層結構的儲存器系統
CPU暫存器;
快取記憶體Cache、主儲存器RAM、磁碟快取;
固定磁碟、可移動儲存介質
二、可執行儲存器
就是CPU暫存器和主存.訪問很快
二、主儲存器與暫存器
(一)主儲存器
又叫主存or記憶體.相比CPU執行速度.它還是很慢.所以引入暫存器和快取記憶體
(二)暫存器
完全與CPU協同工作.但好貴
三、快取記憶體和磁碟快取
(一)快取記憶體
備份主存中較常用的資料.以減少CPU對主儲存器的訪問次數
(二)磁碟快取
因為磁碟I/O速度遠低於主存訪問速度.所以設定磁碟快取來暫存頻繁使用的一部分磁碟資料和資訊
②程式的裝入和連結
使用者程式要在OS中執行.要先裝入記憶體.再轉換為一個可執行程式:編譯、連結、裝入
一、程式的裝入
(一)絕對裝入方式
當OS很小.且僅能執行單道程式時.完全有可能知道程式駐留在記憶體的位置.那麼就可以產生絕對地址的目的碼
(二)可重定位裝入方式(靜態重定位)
多道程式下.邏輯地址和實體地址不同.要加上起始地址.但只在程序裝入時一次完成.故稱為靜態重定位.可裝到記憶體任何允許位置
(三)動態執行時的裝入方式
需要重定位暫存器
二、程式的連結
(一)靜態連結方式
要解決:對相對地址進行修改(子程式的相對地址)、變換外部呼叫符號(生成可執行檔案後不再拆開.又叫靜態連結方式)
(二)裝入時動態連結
便於修改和更新(各模組分開存放)、便於實現對目標模組的共享(靜態每個應用模組必有目標模組的拷貝.無法共享.但動態可以一個目標連結多個應用模組)
(三)執行時動態連結
執行時發現沒有.就由OS去找這個模組內功加快程式裝入過程和節約大量記憶體空間
③連續分配儲存管理方式
一、單一連續分配
分系統區和使用者區.單使用者.單任務作業系統
二、固定分割槽分配
劃分分割槽的方法:大小相等(一臺計算機控制多臺相同冶煉爐)和大小不等
記憶體分配:通常按大小排隊.建立分割槽使用表.如果找不到大小足夠的分割槽.就拒絕分配記憶體
三、動態分割槽分配
動態分割槽分配中的資料結構
動態分割槽分配演算法:之後介紹4種分配演算法和3中索引搜尋演算法
分割槽分配操作:分配記憶體、回收記憶體
四、基於順序搜尋的動態分割槽分配演算法
首次適應演算法、迴圈首次適應演算法、最佳適應演算法、最壞適應演算法
五、基於索引搜尋的動態分割槽分配演算法
快速適應演算法、夥伴系統、雜湊演算法
六、動態可重定位分割槽分配
緊湊、動態重定位、動態重定位分割槽分配演算法
④對換
一、多道程式環境下的對換技術
(一)對換的引入
避免記憶體全部被阻塞.外存卻有很多作業無法進入記憶體
(二)對換的型別
整體對換、頁面對換
二、對換空間的管理
(一)對換空間管理的主要目標
檔案區管理主要目標:提高檔案儲存空間的利用率.提高對檔案的訪問速度
對換空間管理的主要目標:提高換入換出的速度
(二)對換區空閒盤塊管理中的資料結構
與記憶體的相似
(三)對換空間的分配與回收
與記憶體分配和回收雷同
三、程序的換出與換入
(一)程序的換出
選擇被換出的程序
程序換出過程
(二)程序的換入
如果發現許多程序執行時缺頁且記憶體緊張.才啟動對換程式.將部分程序調至外存
如果缺頁率明顯減少.系統吞吐量已下降.則可以暫停執行對換程式
⑤分頁儲存管理方式
其實分三種:分頁、分段、段頁式
一、分頁儲存管理的基本方法
(一)頁面和物理塊
頁面:頁號
頁面大小:太小.程序佔用較多頁面、太多.碎片多、適中.1kB~8kB
(二)地址結構
頁號:P
頁內地址(偏移量):d
兩個都有公式計算
(三)頁表
從頁號到物理塊號的對映
二、地址變換機構
(一)基本的地址變換機構
如果發現頁號≥頁表長度.就引發越界中斷;否則頁表始址+頁號*頁表項長度=物理塊號
(二)具有快表的地址變換機構
有個快表在快取記憶體
三、訪問記憶體的有效時間
EAT = t +t = 2t
EAT = a*λ+(t+λ)(1-a)+t = 2t+ λ - t* a
四、兩級和多級頁表
(一)兩級頁表
(二)多級頁表
五、反置頁表
(一)反置頁表的引入
(二)地址變換
⑥分段儲存管理方式
一、分段儲存管理的基本方法
(一)方便程式設計
邏輯地址是由段名(段號)和段內偏移量(段內地址)決定的
(二)資訊共享
段是資訊的邏輯單位.簡化共享過程
(三)資訊保護
就是可以加個標識.不允許讀寫
(四)動態增長
可以解決這個問題
(五)動態連結
4.2.2
二、分段系統的基本原理
(一)分段
每個段有一個段號
(二)段表
實現從邏輯段到實體記憶體區的對映
(三)地址變換機構
段表項數目比頁表項數目少.其所需的聯想儲存器相對較少.減少存取資料的時間
(四)分頁和分段的主要區別
頁是資訊的物理單位.分頁是系統管理上的需要
while 段是儲存管理方式中的邏輯單位.分段目的在於更好滿足使用者的需要
頁大小固定.段大小不固定
分頁的使用者程式地址是一維的.分段是二維的
三、資訊共享
(一)分頁系統中對程式和資料的共享
每個程序都有頁表.也都指向相同的物理塊號
(二)分段系統中的程式和資料的共享
可重入程式碼是一種不允許任何程序對它進行修改的程式碼
配以區域性資料區.把執行中可能改變的部分拷貝到該資料區.這樣執行時只需對該資料區中的內容修改即可
四、段頁式儲存管理方式
分段→分頁.每段一個段名
段號.比較.加法算段表段號→得到頁號.(比較).加法算頁表頁號→得到物理塊號.加頁內地址→得實體地址
第五章 虛擬儲存器
出現問題:作業很大、大量作業要求執行
①虛擬儲存器概述
一、常規儲存管理方式的特徵和區域性性原理
(一)常規儲存管理方式的特徵
傳統:一次性、駐留性
(二)區域性性原理
絕大部分順序執行、呼叫進度不超過5、迴圈結構由少數指令構成.但多次執行、多對資料結構的處理.這些處理侷限於很小的部分
時間、空間侷限性
(三)虛擬儲存器的基本工作情況
將少數頁面或段先裝入記憶體即可執行
二、虛擬儲存器的定義和特徵
(一)虛擬儲存器的定義
有請求調入功能和置換功能.能邏輯上對記憶體內容加以擴充的一種儲存器系統
(二)虛擬儲存器的特徵
多次性、對換性、虛擬性
三、虛擬儲存器的實現方式
(一)分頁請求系統
硬體支援:請求分頁的頁表機制、缺頁中斷機制、地址變換機制
實現請求分頁的軟體
(二)請求分段系統
硬體支援:請求分段的段表機制、缺段中斷機構、地址變換機構
軟體支援
②請求分頁儲存管理方式
一、請求分頁中的硬體支援
(一)請求頁表機制
(二)缺頁中斷機構
(三)地址變換機構
二、請求分頁中的記憶體分配
(一)最小物理塊數的確定
(二)記憶體分配策略
策略:固定分配區域性置換、可變分配全域性置換、可變分配區域性置換
(三)物理塊分配演算法
演算法:平均分配演算法、按比例分配演算法、考慮優先權的分配演算法
三、頁面調入策略
(一)何時調入頁面
預調頁策略:手動指出哪些頁要調入記憶體、成功率偏低
請求調頁策略:一次調入一頁.須較大系統開銷
(二)從何處調入頁面
系統擁有足夠的對換區空間:程序進行前就把程序相關的檔案拷貝到對換區
系統缺少足夠的對換區空間:未修改過的不到對換區.以後要用再從檔案區調入
UNIX方式:從檔案區入.出到對換區、允許頁面共享
(三)頁面調入過程
???
(四)缺頁率
???
③頁面置換演算法
抖動:一個程序在執行中把大部分時間都花費在頁面置換工作上
一、最佳置換演算法和先進先出置換演算法
(一)最佳置換演算法
要知道未來需要哪頁.實際上不可能
(二)先進先出頁面置換演算法
剔走最老的頁
二、最近最久未使用和最少使用置換演算法
(一)最近最久未使用
看最近的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,再逐個測試安全性
四、邏輯裝置名到物理裝置名對映的實現
(一)邏輯裝置表LUT
邏輯裝置名、物理裝置名、裝置驅動程式的入口地址
(二)邏輯裝置表設定問題
整個系統一張LUT
或每個使用者一張LUT
⑥使用者層的I/O軟體
一、系統呼叫與庫函式
(一)系統呼叫
使用系統呼叫I/O裝置,使用者態→核心態→使用者態
(二)庫函式
庫函式與呼叫程式接在一起
二、假離線系統
(一)假離線技術
利用專門的外圍控制機,先將低速I/O裝置上的設局傳送到高速磁碟上,或相反
(二)SPOOLing的組成
輸入井和輸出井、輸入緩衝區和輸出緩衝區、輸入程序和輸出程序、井管理程式
(三)SPOOLing系統的特點
提高I/O速度、將獨佔裝置改造為共享裝置、實現虛擬裝置功能
(四)假離線印表機系統
磁碟緩衝區、列印緩衝區、假離線管理程序和假離線列印程序
(五)守護程序
有個假離線目錄,由守望程序按目錄檔案依次完成各個程序裝置的請求,就可以將一個獨佔裝置改為多個程序共享裝置
⑦緩衝區管理
一、緩衝的引入
(一)緩和CPU與I/O裝置間速度不匹配的矛盾
速度有差距,都可以設定緩衝區
(二)減少對CPU的中斷頻率
(三)解決資料粒度不匹配的問題
生產者生產的數量和消費者消費的數量差距
(四)提高CPU和I/O裝置之間的並行性
CPU和印表機可以並行工作呢
二、單緩衝區和雙緩衝區
(一)單緩衝區
緩衝區也會阻塞
(二)雙緩衝區
CPU執行第一行中的命令時,使用者可以繼續向第二緩衝區輸入下一行資料
如果兩臺電腦只設置但緩衝,就要再設定一個接收緩衝區,一個傳送緩衝區
三、環形緩衝區
(一)環形緩衝區的組成
空區R,裝滿的區G,正在使用的現行工作緩衝區C;另外還有多個指標
(二)環形緩衝區的使用
Getbuf和Releasebuf
(三)程序之間的同步問題
Nexti趕上Nextg:輸入速度>處理速度
Nextg趕上Nexti:處理速度>輸入速度
四、緩衝池
(一)緩衝池的組成
專為生產者-消費者設定的,包含一個管理資料結構和一組操作函式,管理多個緩衝區
包括空白緩衝佇列、輸入佇列、輸出佇列
(二)Getbuf過程和Putbuf過程
設定MS(type)互斥訪問緩衝池佇列和RS(type)程序同步使用緩衝區
(三)緩衝區的工作方式
收容操作、提取輸入、收容輸出、提取輸出
⑧磁碟儲存器的效能和排程
一、磁碟效能簡述
(一)資料的組織和格式
資料組織和格式:磁碟-雙面可儲存碟片(儲存面)-扇區-磁軌(柱面)
(二)磁碟的型別
固定頭磁碟、移動頭磁碟
(三)磁碟訪問時間
二、早期的磁碟排程演算法
(一)先來先服務
就是先來的先找,很公平很簡單,但平均尋道好長
(二)SSTF最短尋道時間優先
選擇一個與磁頭距離最近的磁軌
三、基於掃描的磁碟排程演算法
(一)掃描演算法SCAN
來回
(二)迴圈掃描演算法CSCAN
單程
(三)NStepSCAN和FSCAN排程演算法
N步掃描演算法:將磁碟請求佇列分成若干長度為N的子佇列,再用FCFS依次處理這些子佇列
FSCAN演算法:只分兩個佇列,一個現在要掃描的,一個是掃描時新冒出來的
第七章 檔案管理
①檔案和檔案系統
一、資料項、記錄和檔案
(一)資料項
基本資料項:描述以物件某種屬性的字符集,如學號、姓名、年齡這些不能再細分的
組合資料項:若干個基本資料項組成的,就是還可以細分的
(二)記錄
描述一個物件在某方面的屬性,注意要有關鍵字key,方便查詢
(三)檔案
多條記錄組成檔案
檔案屬性:型別、長度、物理位置、建立時間(即最後一次修改時間)
二、檔名和型別
(一)檔名和拓展名
沒什麼好說的,都懂
(二)檔案型別
按用途分:系統檔案、使用者檔案、庫檔案
按檔案資料形式:原始檔、目標檔案、可執行檔案
按存取控制屬性:只執行檔案、只讀檔案、讀寫檔案
按組織形式和處理方式分類:普通檔案、目錄檔案、特殊檔案
三、檔案系統的層次結構
(一)物件及其屬性
管理物件:檔案、目錄、磁碟儲存空間
(二)對物件操縱和管理的軟體集合
I/O控制層、基本檔案系統層、基本I/O管理程式、邏輯檔案系統
(三)檔案系統的介面
命令介面、程式介面
四、檔案操作
(一)最基本的檔案操作
建立、刪除、讀、寫、設定讀寫位置
(二) 檔案的“開啟”和“關閉”操作
(三)其他檔案操作
設定和獲得檔案的屬性、查詢檔案狀態
有關目錄的,就是建立、刪除、改變當前目錄等
②檔案的邏輯結構
一、檔案邏輯結構的型別
有結構檔案:記錄式檔案
無結構檔案:流式檔案
(一)按檔案是否有結構分類
有結構檔案(如資料庫):定長記錄、變長記錄
無結構檔案(txt):源程式、可執行檔案
(二)按檔案的組織方式分類
順序檔案:可以定長可以變長,一直按順序下去(如犯人的記錄)
索引檔案:加張索引表
索引順序檔案:分組,組內是順序,組頭有索引
二、順序檔案
(一)順序檔案的排列方式
串結構:要從頭開始找
順序結構:有個關鍵字
(二)順序檔案的優缺點
最高效、但互動應用中效率好差、而且增加刪除一個記錄困難
所以要配置一個執行記錄檔案,按時合併
三、記錄定址
(一)隱式定址方式
一個一個讀,讀了(n-1)個才找到n
(二)顯式定址方式
定長就方便,直接乘索引號即可
變長就要加上Li,表示一段記錄的長度
或者利用關鍵字查詢
四、索引檔案
(一)按關鍵字建立索引
索引檔案三要素:索引號、長度、指標
多個索引表的索引檔案:從不同屬性查詢同一物件
五、索引順序檔案
(一)索引順序檔案的特徵
引入檔案索引表,可以實現對索引順序檔案的隨機訪問;
增加溢位檔案,可以記錄新增加、刪除和修改的記錄
(二)一級索引順序檔案
分組,組首進入索引順序檔案
(三)兩級索引順序檔案
索引順序表做組
六、直接檔案和雜湊檔案
(一)直接檔案
關鍵字本身就決定記錄的實體地址,所以可以直接查詢,有鍵值轉換
(二)雜湊檔案
A = H(K),通常是指向某一目錄表相應表目的指標
③檔案目錄
要求:
實現“按名存取”
提高對目錄的檢索速度
檔案共享
允許檔案重名
一、檔案控制塊和索引結點
(一)檔案控制塊FCB
包含三類資訊:基本資訊、存取控制資訊、使用資訊
基本資訊:檔名、檔案物理位置、檔案邏輯結構、檔案物理結構
存取控制資訊:各類人的存取許可權
使用資訊類:建立時間、最近修改時間、當前使用資訊
(二)索引結點
引入:怕檔案目錄太大,只用檔名,輕量級檔案目錄
磁碟索引結點:檔案主識別符號、檔案型別、檔案存取許可權、檔案實體地址、檔案長度、檔案連線計數、檔案存取時間
記憶體索引結點:索引結點編號、狀態、訪問計數、檔案所屬檔案系統的邏輯裝置號、連結指標
二、簡單的檔案目錄
(一)單級檔案目錄
整個檔案系統只有,一張目錄表,目錄項有:檔名、副檔名、檔案長度、檔案型別、檔案實體地址和其他屬性
每次建立都要搜尋有沒有相同的檔名
優點是簡單,但只實現了“按名存取”,其他三個要求沒有實現
(二)兩級檔案目錄
MFD→UFD
會有隔離,這個結構可以有效將多個使用者隔開,在各個使用者完全無關時,這是一個優點。
但如果要合作完成一個大任務時,這種隔離就會使諸多使用者之間不便於共享
三、樹形結構目錄
(一)樹形目錄
一個目錄檔案中的目錄項,可以既作為目錄檔案的FCB,又是資料檔案的FCB
(二)路徑名和當前目錄
路徑名:唯一通路,用/連線
當前目錄,相對路徑名,絕對路徑名
(三)目錄操作
建立、刪除、不刪除非空目錄、可刪除非空目錄
改變、移動、連結目錄、查詢目錄
(四)目錄查詢技術
線性檢索法:在單級目錄中,用使用者提供的檔名,順序查詢;在樹形目錄中,就按路徑名查詢
Hash方法:建立一張Hash索引檔案目錄,利用Hash方法查詢——利用使用者提供的檔名,轉換為檔案目錄索引值,再用索引值在目錄中查詢
注:如果使用了萬用字元,就無法用Hash方法檢索了
“衝突”:1.看目錄項是否空 2.看檔名是否匹配 3. 如果不匹配,就要在Hash值加上一個常數,形成新的索引值
④檔案共享
一、基於有向無迴圈圖實現檔案共享
(一)有向無迴圈圖DAG
由附加操作Append來完成,而新增加的盤塊只會出現在執行了操作的目錄中,新增加的部分不能被共享
(二)利用索引結點
用索引結點,任何使用者對共享檔案所進行的Append操作或修改,都將引起相應結點內容的改變
還增加一個count連結計數
其他使用者在使用,擁有者刪了,檔案依然存在
二、利用符號連結實現檔案共享
(一)利用符號連結的基本思想
即允許一個檔案或子目錄有多個父目錄,但只有一個是“主”父目錄
(二)如何利用符號鏈實現共享
由系統建立一個LINK型別的新檔案,取名為F,並將F寫入連結父目錄D5中,就可以實現D5與F8的連結。新檔案只有被連結檔案F8的路徑名——所以叫做“符號連結”——新檔案的路徑名被看做“符號鏈”
(三)利用符號鏈實現共享的優點
使用者刪了連結檔案,也不會刪掉本來的檔案;檔案主刪了檔案,其他使用者訪問不了,自然會刪掉符號鏈
(四)利用符號鏈的共享方式存在的問題
讀盤需時、符號鏈太多,瑣碎
第八章 磁碟儲存器的管理
①外存的組織方式
連續組織方式、連結組織方式、索引組織方式
一、連續組織方式
位於同一磁軌,讀寫不用移動磁頭
優點:順序訪問容易、順序訪問速度快
缺點:要求為一個檔案分配連續的儲存空間、要事先知道檔案長度、不夠靈活刪除和插入、對於動態增長的檔案,很難分配空間
二、連結組織方式
優點:消除外部碎片,提高外存利用率;對插入、刪除修改記錄都非常容易;能夠適應動態增長
隱式連結:一個跟一個,如同連結串列;碎片多;萬一一個錯,整個檔案用不了
顯式連結:將各物理塊的指標顯式存在記憶體的一個表內,每個FCB對應一個欄位,因為在記憶體查詢,所以大大提高檢索速度,還減少訪問磁碟的次數,而這叫做FAT
五、索引組織方式
(一)單級索引組織方式
不支援高效直接存取,要對一個較大的檔案進行存取,就要順序地查詢許多盤塊號
FAT需要佔用較大記憶體空間
所以創造“表中表”——索引分配圖
(二)多級索引組織方式
就是多級,如同“全語言字典”
優點:大大加快對大型檔案的查詢速度
(三)增量式索引組織方式
增量式索引組織方式的基本思想
小的用直接定址、中的用單級索引組織方式、大的用兩三級索引組織方式
Unix System V的組織方式:索引結點有13個地址項,前十個是直接地址,最大放40KB;第十一個是一次間接地址,1K個盤塊號,允許檔案長達4MB;如果還超過4MB+40KB,就放二次間接地址,有4GB;還超過,就放3次間接地址,有4TB
②檔案儲存空間的管理
一、空閒表法和空閒連結串列法
(一)空閒表法
即在外存所有空閒區建立一張空閒表,每個空閒區對於一個表項,記錄序號、第一空閒盤塊號、空閒盤塊數
分配和回收與記憶體相似,但在外存為加快分配速度,連續分配依然有用。小的連續分配,大的離散分配,多媒體檔案依然連續分配
(二)空閒連結串列法
空閒盤塊鏈:一直分配,按連結串列分配。如果刪除檔案就掛在鏈尾
優點: