(一)邏輯設備表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
②文件存儲空間的管理
一、空閒表法和空閒鏈表法
(一)空閒表法
即在外存所有空閒區建立一張空閒表,每個空閒區對於一個表項,記錄序號、第一空閒盤塊號、空閒盤塊數
分配和回收與內存相似,但在外存爲加快分配速度,連續分配依然有用。小的連續分配,大的離散分配,多媒體文件依然連續分配
(二)空閒鏈表法
空閒盤塊鏈:一直分配,按鏈表分配。如果刪除文件就掛在鏈尾
優點:簡單,缺點:但爲一個文件分配時可能重複操作多次,分配和回收效率較低,而且盤塊鏈會很長
空閒盤區鏈:優點:分配回收效率較高,盤區鏈短;缺點複雜
二、位示圖法
(一)位示圖
利用二進制的一位來表示磁盤中一個盤塊的使用情況,也可以是二維數組
(二)盤塊的分配
掃描位示圖,找到一個或一組0,之後計算盤塊號: b = n(i -1)+j,修改位示圖=1
(三)盤塊的回收
從盤塊號轉換爲行列號:
i = (b-1) DIV n +1
j = (b-1) MOD n + 1
三、成組鏈接法
(一)空閒盤塊的組織
每組含有盤塊總數N和該組所有盤塊號記入前一組的第一個盤塊的S.free(0)~S.free(99),這樣各組第一個盤塊可鏈接成一條鏈
(二)空閒盤塊的分配與回收
當棧中空閒盤塊號已達100時,表示棧已滿,便將先有棧中100個盤塊號記入新回收的盤塊中,將盤塊號作爲新棧底