1.1 檔案的概念
1. 檔案的定義
- 檔案是一段程式或者資料的集合。
1.2 檔案的邏輯結構
- 檔案的邏輯結構是從使用者觀點出發看到的檔案的組織形式。
1. 無結構檔案(流式檔案)
- 無結構檔案是最簡單的檔案組織形式。無結構檔案是將資料按照順序組織成記錄並積累儲存起來的。
- 他是有序相關資訊項的集合,以位元組(byte)為單位。
- 由於無結構檔案沒有結構,因而對記錄的訪問只能通過窮舉搜尋的方式,所以這種檔案對大多是應用不適合。
2. 有結構檔案(記錄式檔案)
a) 順序檔案(所有順序查詢的功能和array是一樣的:方便讀寫,但是對查詢,修改增加刪除都very苦手)
- 檔案中的記錄是順序排列的,定長的而且要惡意順序儲存或者鏈式儲存的。
i) 串結構:記錄之間的順序與關鍵字無關。由時間決定放入
ii) 順序結構:指檔案中的所有記錄按關鍵字順序排列
b) 索引檔案(其實自己也是乙個定長的順序檔案啦)
- 對定長記錄的檔案,如果要查詢第i個記錄,可以直接根據公式來計算(離散型)
a = (i=0; ic) 索引順序檔案
- 順序和索引的兩種形式的結合。索引順序檔案將順序檔案中的所以記錄分成若干組,為順序檔案建立乙個索引表,在索引表中為每組中的第乙個記錄建立乙個索引項,其中也包括該記錄的關鍵字值和指向該記錄的指標。
- 索引檔案和索引順序檔案都提高了訪問的速度, 但也會占用儲存空間
d) 直接檔案或雜湊檔案
- 給定記錄的key 值或者通過hash function 轉換的值直接決定了實體地址。這個對映結構不同於順序或者索引,這個是沒有特定的順序性的。 hash file有很高的訪問速度,但是可能引起衝突。
1.3 目錄結構
1. 檔案控制塊和索引結點
a) 檔案控制塊:和pcb一樣的功能(基本資訊,使用資訊,訪問控制資訊)
2. 目錄結構
a) 單級目錄結構:在整個檔案系統中之建立乙個目錄表,每個檔案占有乙個目錄項。(缺點:不能重名,不能共享,慢)
b) 兩級目錄結構:每乙個使用者目錄檔案在主檔案中可以占用乙個目錄項!一人乙個坑!!主檔案目錄項記錄使用者名稱及相應使用者檔案目錄所在的儲存位置。使用者檔案目錄項記錄了該使用者的fcb,所以這樣也避免了重名的問題。但缺乏靈活性
c) 多級目錄結構:(樹形目錄結構)使用者要訪問某個檔案時用檔案的路徑名標識檔案,檔案路徑名是字串,由從根目錄出發到找到檔案的通路上的所有目錄名與資料都要用'/'隔開。 *從根目錄出發的叫絕對路徑;而從當前目錄出發的叫相對路徑。
d) 無環圈目錄結構:樹形目錄結構可以實現檔案分類,但是不能實現檔案共享。所有就有人very叼, 在這個樹形目錄基礎上高了一些有向邊,使得整個目錄變成了乙個有向無環圖。 但是這個太複雜了。
1.4 檔案共享
1. 基於索引結點的共享方式(硬鏈結)
- 在樹形結構中,當有兩個或者多個使用者要共享乙個子目錄或者檔案時,必須將共享檔案或者子目錄連線到兩個或者多個使用者目錄中,才可以方便的找到該檔案(有種鍊錶的感覺??)(count的數目代表有多少人在用)
2. 利用符號鏈實現檔案共享(軟連線)
- 為使使用者b可以共享使用者a的檔案f,需要建立乙個link型別的新檔案,就取名叫f,並且將f寫入使用者b的目錄中,以實現使用者b的目錄和f的連線。在新檔案中包含表連線檔案f的路徑名。這樣的連線方法被稱為符號連線。
- 在利用符號鏈方法實現檔案共享時,只有檔案的擁有者才可以擁有指向其索引結點的指標。而共享該檔案的其他使用者只能得到皮毛!比如路徑名。(這就是王的力量!power!)
- 優點是訪問方便,缺點是開銷太大,消耗磁碟空間
2.1 檔案系統層次結構
使用者呼叫介面檔案系統為使用者提供的相關排程什麼的~
檔案目錄系統管理檔案目錄
訪問控制驗證保護該軟體的完成
邏輯檔案系統與檔案資訊緩衝區根據檔案的邏輯結構將使用者要讀寫的邏輯記錄轉換成檔案邏輯結構的相應塊號
物理檔案系統把邏輯記錄所在的相對塊號轉換成實際實體地址
分配模組管理輔存空間
裝置管理程式模組分配裝置的排程等
2.2 目錄實現
- 目錄查詢是需要反覆的進行i/o操作的,開銷大。所以為了減少i/o操作,所以需要把使用的檔案目錄複製到記憶體裡,以後要使用的話再從記憶體裡呼叫出來
1. 線性列表
- very簡單;就使用儲存檔名和資料塊指標的array~建立新檔案時,首先要搜尋目錄表以確定沒有同名的檔案存在,然後在目錄表後增加乙個目錄項。實現簡單,但是比較耗時。
2. hash table
- 根據檔名得到乙個值,並返回乙個指標裡面的元素的指標。優點是比較快,但是要避免意外衝突。
2.3 檔案實現
1. 檔案分配方式(對應檔案的物理結構,是指如何為檔案分配磁碟塊)
a)連續分配
- 連續分配方法要求滅個檔案在磁碟上占有一組連續的塊。實現簡單,但是不能動態增加或減少,而且還會產生碎片
b) 鏈結分配
每個檔案對應乙個磁碟塊的鍊錶;磁碟塊分布在磁碟的任何乙個地方除最後一塊盤塊,每乙個盤塊都指向下乙個盤塊的指標,(指針對使用者是透明的)。(反正就是踢皮球…你就在裡面瘋狂找吧)
ii) 顯式鏈結
iii)fat: (file allocation table)檔案分配表
,就是分配給檔案的所以盤塊號都放在這裡的乙個表。
c) 索引分配:鏈式分配可以解決碎片的問題,但是無法有效的支援直接訪問(除了fat)。索引分配把每個檔案的所以的塊號都集中在了一起,變成了乙個索引表。
訪問第n個記錄優點缺點
順序分配需要訪問磁碟1次
順序訪問時速度快,當檔案是定長時可以根據檔案起始位址及記錄長度進行隨機訪問
檔案儲存要求連續的儲存空間,長產生碎片,也不利與動態擴充
鏈結分配需要訪問磁碟n次
可以解決外存的碎片問題,提高了外存空間的利用率,動態增長方便
只能按照檔案的指標鏈順序訪問,查詢效率低,指標資訊存放會消耗外存空間
索引分配m級需要訪問磁碟m+1次
可以隨機訪問,易於檔案的增刪
索引表增加儲存空間的開銷,索引表的查詢策略對檔案系統效率影響大
2. 檔案儲存空間管理
- 檔案儲存裝置分成許多大小相同的物理塊,並以塊為單位交換資訊,因此,檔案儲存裝置的管理其實是對空閒塊的組織和管理
a) 空閒表法:空閒表法餘數連續分配法,他與記憶體的動態分配類似,為每個檔案都分配一塊連續的儲存空間。而且空閒去起始盤號都是遞增的次序排列的。
b) 空閒鍊錶法:分空閒盤塊鏈(以盤塊為單位拉成一條鏈)和空閒盤區鏈(以盤區,即若干個盤塊,組成的鏈)
c) 位示圖法:用 0 或者 1 表示空閒或分配
*舉個栗子: 你現在後面有1000個學生,但是你上裡只有100個可以讓學生登記的表。所以你讓學生分成了10組,每組100人。你讓他們報完100個人後,最後乙個要說出下面100個人的資訊。每一組的名單在上一組的最後乙個人的手裡,而最後一組的名單就在第一組的第乙個人的手裡~形成了乙個環鏈表~
1. 掃瞄演算法:
自里向外,自外向裡;scan演算法在磁頭當前移動方向上選擇與當前磁頭所在磁軌距離最近的請求作為下一次的服務物件。就是在最短尋找時機優先上做了乙個磁頭的限定。但是缺點是剛訪問的要等好久才可以進行下一次的訪問
2. 迴圈掃瞄演算法(aka 電梯演算法)
:在scan演算法上的乙個對磁頭限定的提公升,讓磁頭可以單向移動來提供服務。回返時,直接快速移動至起始點而不服務任何請求。
優點缺點
fcfs演算法公平,easy
平均尋道距離大,僅應用在磁碟i/o較少的場合
sstf演算法效能比fcfs演算法好
不能保證平均尋道時間最短, 可能出現飢餓
scan演算法尋道性好,可以避免飢餓現象
不利於遠距離磁頭一端的訪問
c-scan演算法消除了對兩端磁軌請求的不公平
/
作業系統(複習) 第四章 檔案管理
一 檔案系統概念 1.檔案系統 在作業系統中對檔案進行管理的有關軟體和資料的集合,即作業系統管理檔案的方法。2.檔案系統主要五個功能 二 檔案邏輯結構 對檔案的邏輯結構提出的基本要求 提高檢索速度 便於修改 降低檔案儲存費用。1.檔案邏輯結構的型別 1 有結構的記錄式檔案 2 無結構的流式檔案 2 ...
作業系統第四章
2 分割槽分配演算法 動態分割槽方式,分割槽多 大小差異各不相同,此時把乙個新作業裝入記憶體,更需選擇乙個合適的分配演算法,從空閒分割槽表 鏈中選出一合適分割槽 首次適應演算法ff 迴圈首次適應演算法 最佳適應演算法 最差適應演算法 快速適應演算法 4 動態重定位分割槽分配 有緊湊功能的動態分割槽分...
作業系統第四章
常用排程演算法 先來先服務演算法 fcfs 短程序優先演算法 spf 短剩餘時間優先演算法 srt 最高響應比優先演算法 hrrn 時間片輪轉演算法 rr 和多級反饋演算法 mfq 先來先服務演算法 fcfs 基本思想是按照程序進入就緒佇列的先後次序來分配處理機.採用不可剝奪方式 fcfs演算法很少...