心智圖資源庫 電腦作業系統心智圖
這是一個關於電腦作業系統思維導圖,包含進程與執行緒、記憶體管理、檔案管理、IO管理等。希望可以對大家有幫助。
編輯於2023-12-08 15:46:30Einhundert Jahre Einsamkeit ist das Meisterwerk von Gabriel Garcia Marquez. Die Lektüre dieses Buches beginnt mit der Klärung der Beziehungen zwischen den Figuren. Im Mittelpunkt steht die Familie Buendía, deren Wohlstand und Niedergang, interne Beziehungen und politische Kämpfe, Selbstvermischung und Wiedergeburt im Laufe von hundert Jahren erzählt werden.
Einhundert Jahre Einsamkeit ist das Meisterwerk von Gabriel Garcia Marquez. Die Lektüre dieses Buches beginnt mit der Klärung der Beziehungen zwischen den Figuren. Im Mittelpunkt steht die Familie Buendía, deren Wohlstand und Niedergang, interne Beziehungen und politische Kämpfe, Selbstvermischung und Wiedergeburt im Laufe von hundert Jahren erzählt werden.
Projektmanagement ist der Prozess der Anwendung von Fachwissen, Fähigkeiten, Werkzeugen und Methoden auf die Projektaktivitäten, so dass das Projekt die festgelegten Anforderungen und Erwartungen im Rahmen der begrenzten Ressourcen erreichen oder übertreffen kann. Dieses Diagramm bietet einen umfassenden Überblick über die 8 Komponenten des Projektmanagementprozesses und kann als generische Vorlage verwendet werden.
Einhundert Jahre Einsamkeit ist das Meisterwerk von Gabriel Garcia Marquez. Die Lektüre dieses Buches beginnt mit der Klärung der Beziehungen zwischen den Figuren. Im Mittelpunkt steht die Familie Buendía, deren Wohlstand und Niedergang, interne Beziehungen und politische Kämpfe, Selbstvermischung und Wiedergeburt im Laufe von hundert Jahren erzählt werden.
Einhundert Jahre Einsamkeit ist das Meisterwerk von Gabriel Garcia Marquez. Die Lektüre dieses Buches beginnt mit der Klärung der Beziehungen zwischen den Figuren. Im Mittelpunkt steht die Familie Buendía, deren Wohlstand und Niedergang, interne Beziehungen und politische Kämpfe, Selbstvermischung und Wiedergeburt im Laufe von hundert Jahren erzählt werden.
Projektmanagement ist der Prozess der Anwendung von Fachwissen, Fähigkeiten, Werkzeugen und Methoden auf die Projektaktivitäten, so dass das Projekt die festgelegten Anforderungen und Erwartungen im Rahmen der begrenzten Ressourcen erreichen oder übertreffen kann. Dieses Diagramm bietet einen umfassenden Überblick über die 8 Komponenten des Projektmanagementprozesses und kann als generische Vorlage verwendet werden.
作業系統
第一章概述
基本概念
控制和管理整個電腦系統的硬體和軟體資源,合理組織,調度電腦的工作與資源分配,為使用者提供方便介面與環境的程式集合
特徵
並行
多個事件在同一個時間間隔發生
與平行不同 並行是在同一個時刻並行
共享
互斥共享
規定時間內只允許一個行程存取資源
只有在進程訪問完並且釋放資源後,另一個進程才可以對此資源訪問
臨界資源
一段時間內只允許一個進程訪問
如:實體設備,棧,變量,表格等
同時訪問
允許一段時間內由多個進程“同時”訪問
同時是宏觀的同時, 在微觀上它們可能是交替地存取資源(分時共享)
資源共享是以程式的並發為條件的,若不允許程式並發,則不存在資源共享
兩大基本特徵
虛擬
實體變成邏輯上的對應物
透過多道程序並發執行
利用多道程式設計技術把一個實體CPU分成多個邏輯上的CPU
虛擬技術
時分複用技術
分時共享
空分複用技術
虛擬儲存
非同步
進程執行不是一步到位的,是走走停停的,因為資源有限
作業系統作為使用者和電腦硬體系統的接口
使用者使用電腦的方式
1)命令介面
透過命令解釋器
shell命令解析器也屬於命令接口
線上命令介面
適用於分時,即時系統
強調使用者的互動性
離線命令介面
無需人工操作
用於批次系統
連同預先準備好的作業交給系統,到排程作業時,系統的命令解釋程式控制執行
2)程式介面
由系統呼叫組成
利用系統呼叫請求作業系統為其提供服務
作業系統不提供系統快取的系統調用,快取對使用者是透明的
發展歷程
1)手工操作階段
此時沒有作業系統,所有工作都由人工完成
2)批次階段
單道批次系統
1)順序性
2)自動性
3)單道性
記憶體僅有一道程式執行
多道批次系統
透過多道程式設計技術
多個程式同時進入內存,在CPU內交替進行
分享硬/軟體
一道程式因IO而暫停運轉時,CPU便立即執行另一道程序
透過中斷
優點
1)多道
2)宏觀並行
3)微觀串行
4)利用率高,吞吐量大
缺點:反應時間長,不提供人工交互,無法控制計算機
3)分時作業系統
多個用戶透過終端同時共享一台主機
透過時間片輪轉方式
實現人機交互
1)同時性
2)互動性
3)獨立性
多用戶獨立操作,互不干擾
4)及時性
很短時間內獲得回應
4)即時作業系統
在某個限制時間內完成緊急任務(搶佔式高優先任務), 不需要時間片排隊
5)網路作業系統與分散式電腦系統
網路作業系統
各台電腦有機結合
分散式電腦系統
每台計算機有同等地位
6)個人電腦作業系統
win,Linux,Mac OS
運作環境
處理機運轉模式
1)特權指令
不允許使用者直接使用的指令
IO指令,置中斷指令,送狀態字,記憶體,置時鐘
只能在內核態執行
2)非特權指令
允許使用者直接使用的指令
不能直接存取系統的軟硬體資源
只允許存取使用者位址空間
系統調用
陷入指令(trap)又稱訪管指令,用來發起系統調用,請求系統提供服務
是在使用者態使用的, 所以不屬於特權指令
程式運行在用戶態
核心程式運行在內核態
切換到使用者態的指令是特權指令
應用程式向作業系統請求服務通過訪管指令,產生中斷事件轉換作業系統為核心態
廣義指令(系統呼叫指令)的執行過程一定在內核態, 而它的呼叫有可能在用戶態也可能在內核態
使用者態切換到核心狀態必定透過中斷
只要發生中斷,必然會切換到核心態
子程序調用
只保存斷點
下一指令位址
使用者態→核心態
例子
請求系統服務
發生中斷
使用者程式發生錯誤
使用者程式想要執行特權指令
使用者態到核心態的轉換由硬體完成
必定會透過中斷來實現
只要發生中斷,就要對其處理,也必定會轉換到內核態
使用者態進入核心態,不僅狀態切換,堆疊也會轉換為系統堆疊
時鐘管理
透過時鐘中斷的管理,實現進程切換
時鐘中斷
處理和時間有關的信息,決定是否執行調度程序
系統時間,時間片,延時,使用CPU的時間,定時器等
中斷和異常
中斷 (外中斷)
作業系統不能沒有中斷
只有小部分功能屬於內核,保護和恢復中斷現場訊息, 轉移控制權至相關處理程序
保存的數據
硬體保存
PC
狀態字PSW
作業系統儲存
通用暫存器x
例外 (內中斷)
非法操作碼,地址越界,溢出,缺頁,自陷等
系統調用,訪管指令
異常不能被屏蔽,一旦出現立即處理
原語
是一種程式
1)處於作業系統最底層
2)程式運行具有原子性
3)程序運行時間短,呼叫頻繁
4)內核的組成部分
管理方式
設備管理
行程管理
記憶體管理
作業系統結構
分層法
各層定義較困難
模組化
模組間接口很難滿足實際需求
巨集內核
主要功能模組都作為一個緊密聯繫的整體運行在內核態
win,Linux,iOS,android
微內核
主要功能保留在內核,不必要在內核態執行的功能轉移到用戶態
檔案服務運行在使用者態
主要缺點是效能問題
鴻蒙OS
作業系統引導
啟動CPU
執行JMP 指令跳到BIOS
登記BIOS中斷程序的入口地址
硬體自檢
載入帶有OS的硬碟
載入主開機記錄MBR
MBR 包含硬體分區表
MBR 檢查分區表,查找活動分區將分區的啟動程序調入記憶體執行
掃描硬碟分割區
載入引導記錄PBR (分割區引導記錄)
尋找並啟動分區根目錄下用於引導作業系統的程序
載入啟動管理器
位於硬碟,用於引導作業系統
載入OS
虛擬機
第二章進程與執行緒
行程與執行緒
概念
進程控制塊 PCB
使參與並發執行的每個程序(含數據)都能獨立運作
PCB是進程存在的唯一標誌
行程實體(映像)
由程序段,相關資料段及PCB三部分構成
行程是進程實體的運作過程
是系統進行資源分配與調度的一個獨立單位
特徵
是由多道程序的並發執行引出的
動態性
並發性
獨立性
非同步性
行程狀態與轉換
運轉態→阻塞態
保護現場
行程組成
PCB
程式段
能被進程調度到CPU執行的程式碼段
數據段
行程控制
進程控制用的程式稱為原語
每個父行程與子行程都擁有自己的PCB
父行程子程序共用一部分資源,但不共用虛擬位址空間
行程終止
事件
正常結束
異常結束
外界幹預
過程
檢索出PCB,讀取狀態
終止運行
將資源讓給其他進程
或歸還給作業系統
終止所有子進程
刪除PCB
行程通訊
進程間的資訊交換
低級通信
PV操作
不可被中斷
高級通訊
共享儲存
行程內的執行緒自然共享行程空間 進程之間透過特殊的系統呼叫實現共享進程空間
訊息傳遞
資料交換以格式化的訊息為單位
直接通信方式
間接通信方式
中間實體為信箱
管道通信
數據在管道中是先進先出
管道文件存在於記憶體中
如果資料被讀空,則讀取進程阻塞
管道只能由創建進程所訪問
普通管道只允許單向通信
線程與多線程
是一個基本的CPU執行單元
是程式執行流的最小單元
執行緒控制區塊TCB 組成
線程ID
程式計數器
寄存器集合
堆疊組成
執行緒專有儲存區
在同一進程中,多個執行緒可以並發執行
引入線程後
進程作為CPU外的系統資源的分配單元
線程作為處理機的分配單元
進程是系統中擁有資源的基本單位,執行緒不擁有系統資源
執行緒實現
分類
使用者級執行緒
所有工作由應用程式在用戶空間中完成
執行緒切換不需要核心空間,開銷小
根據需要選擇不同的調度演算法
某個使用者級執行緒被阻塞,則整個行程也被阻塞
內核級線程
在作業系統支援下完成
同一行程的執行緒切換,需要從使用者態轉為核心態,開銷較大
可以同時調度相同行程的多個執行緒在CPU上並行執行
多執行緒模型
多對一
多用戶映射到一個內核
一對一
多對多
處理機調度
調度概念
從就緒佇列按照一定演算法,選擇進程並將處理機指派給它
作業和行程
作業是使用者提交,以使用者任務為單位 進程是作業系統生成,是資源分配和獨立運作的基本單位
調度層次
進階調度
作業調度
作業調度是記憶體與輔存之間的調度
每個作業只調入一次,調出一次
中級調度
記憶體調度
程式調出調入
提高記憶體利用率和系統吞吐量
暫時不運行的進程調度至外存,掛起態
低級調度
行程調度
進程調度頻率高
最基本,不可或缺
性能指標
CPU利用率
CPU有效工作時間 /(有效 等待)
週轉時間
週轉時間 = 作業完成時間 - 作業提交時間
平均週轉時間 = ∑週轉時間 / n
帶權週轉時間 = 作業週轉時間 / 作業實際運行時間
平均帶權週轉時間 = ∑帶權週轉時間 / n
等待時間
回應時間
調度實現
調度程式
排隊器
分派器
上下文切換器
執行大量load/store指令,儲存暫存器內容
調度時機,切換和過程
不能調度和切換的情況
1)處理中斷的過程中
2)進程在系統核心臨界區中
進入臨界區後,加鎖, 在解鎖之前不應該切換進程
3)原子過程中
原子過程中,連中斷都屏蔽
能調度和切換的情況
非剝奪調度
發生調度條件,且目前進程無法繼續下去
剝奪調度
中斷處理結束
自陷trap結束
調度方式
非搶佔式
即使有緊急進程在就緒,仍然讓當前進程繼續
搶佔式
緊急事件優先級更高
閒逛進程
系統沒有其他進程運行時,開啟閒逛idle
兩種線程的調度
使用者級
執行緒切換在同一進程中,使用少量機器指令
核心級
核心選擇特定的執行緒運行,賦予時間片
調度演算法
先來先服務
不可剝奪演算法
演算法簡單,效率低
有利於CPU繁忙作業 不利於IO繁忙作業
短作業優先
運行時間最短的作業優先
對長作業不利
未完全考慮作業的緊急程度
平均等待時間,平均週轉時間最少
優先權調度
按作業優先權來執行
既可用於進程調度,也可用於作業調度
優先權
靜態優先權
一旦決定不可改變
動態優先權
可依情況調整優先級
原則
1)系統進程>用戶進程
2)交互進程>非交互進程
3)IO進程>計算進程
因為IO設備比CPU慢
高響應比優先
回應比 = (等待時間 要求服務時間)/ 要求服務時間
時間片輪轉
用於分時系統
如果時間片很大,以至於所有作業都可以在一個時間片內執行完畢, 時間片輪轉演算法就退化為先來先服務
多級隊列
不同類型或不同性質的程序分配到不同的就緒佇列
多層反饋隊列
多個就緒隊列,每個隊列不同優先權
每個佇列的進程時間片大小不同
每個隊列採用先來先服務
佇列按優先權調度
比較
行程切換
上下文切換
上下文是指:某一時刻CPU暫存器和程式計數器內容
CPU切換到另一個進程,需要保存目前進程的狀態並且恢復另一個進程的狀態
更新PCB
模式切換
使用者態和核心態的切換
同步與互斥
概念
臨界資源
一次只允許一個進程使用
如印表機,變量,數據
進入區
檢查是否可進入臨界區
臨界區
進程中存取臨界資源的那段程式碼
退出區
將正在造訪臨界區的標誌清除
剩餘區
程式碼的剩餘部分
行程同步
直接製約關係
進程之間直接協同的關係,進程的並發是異步的
互斥
間接製約關係
當一個進程存取臨界資源時,另一個進程必須等待
準則
空閒讓進
忙則等待
有限等待
確保在有限的時間內進入臨界區
讓權等待
進程不能進入臨界區時,立即釋放處理器,防止進程忙等待
互斥的方法
軟體實現方法
單標誌法
雙標誌法先檢查
雙標誌法後檢查
peterson algorithm
防止兩個進程進入臨界區而無限等待,設定了變數turn
硬體實作方法
中斷屏蔽法
硬體指令法
testandset
swap
硬體實作法優點
適用於任何數目的進程
缺點
可能會產生飢餓現象
互斥鎖
acquire
獲得鎖
release
釋放鎖
信號量
PV操作其實是兩個不可中斷的製程組成
p操作即wait操作,表示等待到資源可用, 若資源不可用,則進入阻塞態, p操作時的進程處於運行態
V操作即single操作,表示進程釋放一個資源,使系統中可供分配的資源數 1
整數訊號量
記錄型信號量
利用信號量實現進程同步
利用信號量實現進程互斥
互斥量初值一般為1,表示每次只允許一個程序進入臨界區 為0時,表示臨界區已有一個進程進入,臨界區外尚無進程等待 當互斥量小於0時,表示臨界區有一個進程,互斥量的絕對值表示在臨界區外等待的進程數
利用信號量實現前驅
管程
進程同步工具
保證了進程互斥
能實現進程間的同步與互斥
每次僅有一個行程使用共享資源
代表共享資源的資料結構,以及由對此共享資料結構即時操作的一組過程所組成的資源管理程序
signal與V操作不同,如果不存在因條件而阻塞的進程,則signal不產生影響
同步問題
生產者消費者問題
讀者寫者問題
讀優先
寫優先
哲學家用餐問題
可能存在的問題,當大家都去搶筷子的時候(貪心演算法),可能會發生死鎖
吸煙者問題
死鎖
定義
多個進程競爭一個資源造成的僵局
若無外力,這些進程將無法繼續進行
產生原因
1)系統資源的競爭
系統中不可剝奪資源,數量不足以滿足多個進程
2)進程推進順序非法
請求和釋放資源的順序不當
產生死鎖的必要條件
1)互斥條件
在某一段時間某資源僅為一個程序所佔用
2)不剝奪條件
不能被其他行程搶佔
3)請求並保持條件
進程已經佔用一個資源,同時請求另一個資源,並且對此資源佔用不會釋放
4)循環等待
每個行程佔用的資源同時被下一個行程請求
死鎖的處理策略
1)死鎖預防
破壞必要條件四個中的一個或幾個
1. 破壞互斥條件
允許系統資源共享
2. 破壞不剝奪條件
釋放那些佔用資源又無法繼續執行的進程
3. 破壞請求並保持條件
一次申請所有需要的資源,在它資源未滿足之前,不把它投入運行
4. 破壞循環等待
採用順序資源分配法
2)死鎖避免
防止系統進入不安全狀態
1. 系統安全狀態
系統在進行資源分配前,應先計算此次分配的安全性
安全狀態
一定無死鎖
非安全狀態
可能會進入死鎖
2. 銀行家演算法
避免系統進入非安全狀態
3)死鎖偵測與解除
偵測出死鎖的發生,採取某種措施解除死鎖
如果系統為進程分配資源時不採取任何措施,應該提供死鎖偵測和解除手段
資源分配圖
框中的圓代表資源
進程到資源的有向邊叫請求邊
死鎖解除
1)資源剝奪
掛起死鎖的進程,將其資源搶佔,分配給其他死鎖的進程
2)撤銷進程
強制撤銷部分甚至全部的死鎖進程,並剝奪其資源
3)進程回退
讓一個死鎖進程回退到足以迴避死鎖的地步
比較
死鎖和飢餓的區別
飢餓
一個進程的執行被無限期推遲
進入飢餓的進程可以只有一個
可以是就緒太也可以是阻塞態
死鎖
進程陷入僵局,無法繼續推進
進入死鎖的程序必須等於或大於兩個
發生死鎖的進程一定是阻塞態
第三章記憶體管理
概念
記憶體管理是為了更好的支援多道程序的並發執行
程式的連結和裝入
連結
靜態連結
函式庫函數連結成一個裝入模組,修改相對位址
裝入時動態鏈接
在裝入內存時,邊裝入邊鏈接
運行時動態鏈接
在執行過程中未被使用的目標模組不會被調入記憶體或連結成模組
裝入
絕對裝入 (靜態)
在程式設計階段
適用於單道程序,邏輯位址和記憶體位址完全相同
可由程式設計師給出,也可由編譯或彙編給出
可重定位裝入
靜態重定位
裝入時對目標程式中的指令和資料位址的修改過程叫重定位
裝入後不改變
裝入時 將邏輯位址修改為最終實體位址
動態運行時裝入
動態重定位
裝入程式把模組裝入記憶體後,不立即把裝入模組的相對位址轉換為絕對位址,而是把轉換過程延後到執行時進行
裝入後可能會換出
裝入記憶體後的位址均為相對位址
記憶體保護
邏輯位址加上重定位的值得到實體位址
界位址暫存器判斷是否越界
載入重定位暫存器和界位址暫存器必須使用特權指令,由作業系統核心完成,不允許使用者修改
記憶體共享
只有唯讀的區域才可以共享
可重入程式碼(純程式碼)允許多個進程存取但不允許被任何進程修改
可重入技術減少了程式碼的調入調出,減少對換次數來提高系統效能
覆蓋與交換
覆蓋
即將存取的程式段放入覆蓋區,其他段放入外存,需要呼叫前系統再將其調入覆蓋區,取代原有的段
交換
把等待態程式從記憶體調入輔存,為中階調度
連續分配管理
單一連續分配
系統區供作業系統使用,放在低位址部分
用戶區記憶體中,只有一道用戶程序
採用覆蓋技術
分區管理
滿足多道程式設計的最簡單的儲存管理方案,代價最小
固定分區分配
使用者記憶體分為若干固定大小的區域,每個分區只裝入一道作業
問題
1)程序過大放異彩不進任何一個分區,利用覆蓋技術
2)程序過小放入分區會產生內部碎片
動態分區分配
隨時間推移,記憶體中會產生許多小的記憶體區塊,稱為外部碎片
透過緊湊技術解決,作業系統對進程進行移動和整理
分配策略
首次適應演算法
以地址遞增的次序鏈接
鄰近適應演算法
分配記憶體時從上次查找結束的位置開始查找
最佳適應演算法
空閒分區依容量遞增的次序形成空閒分區鏈
產生最多的外部碎片
最壞適應演算法
按容量遞減次序形成空閒分區鏈
回收記憶體
透過拼接技術實現對空閒區的合併
1)回收區與插入點的前一空閒分區相鄰
將兩個分割區合併,並修改前一分割表項的大小為兩者之和
2)回收區與插入點的後一空閒分區相鄰
修改後一分區表項的大小為兩者之和
3)回收區與插入點前、後兩個分區相鄰
修改前一分區表項大小為三者之和
取消後一分區表項
4)回收區沒有相鄰的空閒分區
為回收區新建一個表項,填寫始址,大小,插入空閒分區鏈
系統提供給使用者的實體位址空間為總空間大小減去頁表或段表的長度
分頁管理
分頁管理產生內部碎片,不會產生外部碎片
進程中的區塊稱為頁面,記憶體的區塊稱為頁框
位址結構決定了虛擬記憶體的尋址空間大小
系統為每個行程建立一張頁表,頁表存放在記憶體中
頁表的始址放在頁表基址暫存器中
頁大小一旦確定,所有的頁大小都相同(2的整數冪)
地址變換機構
分段管理
產生外部碎片
段內連續,段間不要求連續
分段是在使用者編程時,將程式依照邏輯劃分為幾個邏輯段
與邏輯結構有關
有利於程式的動態鏈接
段頁式管理
產生內部碎片
系統為進程建立段表,每個分段都有一張頁表
分段方法來管理和分配使用者位址空間 分頁方法來管理和分配實體位址空間
進行一次訪問實際需要三次訪問主存
虛擬記憶體管理
特徵
多次性
作業被分成多次調入內存
對換性
將暫不使用的程式和資料調出內存
虛擬性
邏輯上擴充記憶體容量
虛擬記憶體的實際容量 ≤ 記憶體容量 外存容量
虛擬記憶體的最大容量 ≤ 電腦的位址位數能容納的最大容量
實作方法
1)請求分頁管理
需要硬體支援
記憶體、外存、中斷機構、位址變換等
頁表機制
頁號,實體區塊號,狀態位,存取字段,修改位,外存位址
缺頁中斷機制
造訪的頁面不在記憶體時,產生一個缺頁中斷,請求系統調入記憶體
缺頁率受到頁面大小,分配的實體區塊數,置換演算法,程式編製的影響
地址變換機構
頁框分配
駐留集
給一個行程分配的頁框的集合
分配給一個行程的頁框越少駐留在主記憶體的進程就越多,提高了CPU利用率
一個行程在主記憶體中的頁面過少,缺頁率相對較高
記憶體分配策略
1)固定分配局部置換
給進程分配一定數量的實體區塊,發生缺頁後,從分配給此進程在記憶體的頁面選擇一頁調出
2)可變分配全域置換
分配一定數量的實體塊,可適當增加減少 全域置換:從空閒的實體區塊選出一塊分配給進程,將缺頁的調入
3)可變置換局部置換
缺頁時,只允許從此程序在記憶體的頁面中選一頁調出
物理區塊調入演算法
固定分配策略
1)平均分配演算法
2)按比例分配
根據行程大小按比分配
3)優先權分配
依緊迫程度分配
調入頁面時機
運行前調入
運轉期間調入
置換演算法
1)最佳置換演算法
淘汰以後永不使用的頁面或最長時間不使用的頁面
2)先進先出演算法
會發生貝拉蒂belady異常
分配的實體區塊數增大,頁面故障數不減反增
3)最近最久未使用
需要暫存器和堆疊的硬體支持
因為要計算出最近未造訪的頁面,因此開銷大
4)時鐘演算法
5)改進型時鐘演算法
增加了修改位
優先考慮未使用過又未修改過的頁面
根據訪問位A和修改位M判斷
抖動和工作集
抖動
剛換出的頁面立刻又要換入(頻繁的調出調入頁)
缺頁率高
原因
系統中同時運行的進程太多,分配給每個進程的實體塊太少
工作集
在某段時間內進程要存取的頁面的集合
防止出現抖動現象
2)請求分段管理
3)請求段頁式管理
第四章文件管理
文件屬性
名稱
類型
創建者
擁有者
位置
大小
保護
時間
文件是一種抽象資料類型,資料結構
文件控制塊 FCB
檔案目錄項
存放控製文件所需的各種資訊的資料結構
按名存取
包含:基本資訊、存取控制資訊、使用訊息
索引結點 inode
檔案目錄放在磁碟上
磁碟索引結點
每個檔案有唯一的磁碟索引結點
主標識符,類型,權限,實體位址,長度,連結計數,訪問時間
記憶體索引結點
存放在記憶體的索引結點
當檔案開啟時,磁碟索引結點複製到記憶體索引結點中
結點編號,狀態,存取計數,邏輯設備號,連結指針
文件操作
開啟與關閉
打開
呼叫open根據檔案名稱搜尋目錄,將指明檔案的屬性(包括實體位置),從外存複製到記憶體開啟檔案表的表目中,並將表目編號傳回給用戶
將FCB存入內存檔案目錄表
關閉
呼叫close,系統將開啟檔案表中刪除此表目
read呼叫中,如果檔案不在內存,則進程進入休眠
文件保護
口令保護
口令存在系統內部,不夠安全
加密保護
防止文件被竊取
存取控制
控制使用者對文件的存取方式
文件的邏輯結構
無結構檔案(串流檔案)
順序組織成記錄(有序集合)
有結構文件(記錄式文件)
順序文件
串結構
按存入時間排列
順序結構
按關鍵字順序排列
索引文件
定長記錄文件
變長記錄文件
順序查找
索引順序文件
N筆記錄分為 √N 組,索引表中有√N個表項,共需找√N/2 √N/2次
直接文件/散列文件
給出記錄的鍵值或雜湊函數轉換的鍵值決定記錄的實體位址
文件的物理結構
分配方式
連續分配
支援順序訪問 / 隨機訪問
存取速度快
重複刪文件產生外部碎片
不方便增刪改
文件的目錄項目中文件物理位址欄位包括第一塊的位址和此文件分配區域的長度
連結分配
離散分配方式
消除了外部碎片
不方便查
隱式連結
只適合順序訪問
目錄包含檔案第一塊的指針和最後一塊的指針
產生內部碎片
顯式連結
把連結指標顯性存放在記憶體的連結表,稱為檔案分配表FAT 每個表項存放下一個磁碟區號
FAT在整個磁碟就這一張,也是一種資料結構
FAT的表項與實體盤塊一一對應,可以用特殊數字-1表示為最後一塊,又可以用其他數字表示盤塊為空閒的,FAT不僅記錄了各塊的鏈接關係,也標記了空閒盤區塊
索引分配
支援隨機訪問
訪問速度不如連續分配
沒有外部碎片
混合索引分配
目錄
目錄結構
單目錄結構
按名存取
查找速度慢,不允許重名,不方便共享
二級目錄結構
解決了重名問題
不能對文件分類,缺乏彈性
樹狀目錄結構
進程對檔案的存取都是相當於目前目錄進行的
需要按路徑名逐級存取中間結點,增加了磁碟存取次數
無環圖目錄結構
對於共享文件,只存在一個真正的文件,任何改變都會為其他用戶所見
目錄實現
線性列表
採用檔案名稱和指標的線性列表
採用鍊式結構可以減少刪除檔案的時間
查找費時
哈希表
查找迅速
需要避免衝突
文件共享
靜態共享
硬連結(基於索引結點)
文件的物理地址以及文件屬性信息,不再放在目錄項,而是放在索引結點
索引結點還有一個計數count,表示幾個使用者共享
軟連結(利用符號鏈)
建立一個link型文件,根據文件中的路徑名稱找到文件
只有 文件主 擁有指向其索引結點的指針 其他使用者只有此檔案的路徑名
每次存取文件時要多次讀盤,開銷大
在網路檔案共用時,只需要提供檔案所在的機器網路位址及檔案路徑名
動態共享
幾個使用者同時對一個文件操作
檔案系統
文件系統在外存的結構
物理格式化
劃分扇區,檢查壞扇區,替換壞扇區
邏輯格式化
磁碟分區,完成各分區檔案系統初始化
產生
主開機記錄MBR
確定活動分區,讀入引導區塊
引導區塊
MBR執行引導區塊中的程序,啟動作業系統
超級塊
包含檔案系統所有關鍵訊息,檔案系統首次啟動時,超級區塊讀入記憶體
空閒空間管理
如:位示圖
i結點區
索引結點連續存放,大小相同
根目錄
檔案系統在記憶體的結構
使用者區
文件描述符/文件句柄
內核區
目錄快取
系統開啟文件表
僅有一張
使用者開啟文件表
包含系統開啟檔案表索引
虛擬檔案系統
上上層用戶提供統一標準的系統呼叫介面 屏蔽底層具體檔案系統的實作差異
要求下層檔案必須實現某種函數功能
每一個被開啟的檔案都會在主記憶體創建一個vnode,用統一的資料結構表示
vnode只存在於主記憶體 inode既會被調入主存,也會在外存儲存
檔案系統的掛載(安裝)
在虛擬檔案系統註冊新掛載的檔案系統, 記憶體掛載表包含每個檔案系統的資訊
新掛載的檔案系統,要向虛擬檔案系統提供一個函數位址列表
將檔案系統載入到掛載點(父目錄)
文件空間管理
儲存空間劃分
將實體磁碟劃分為一個個檔案磁碟區(邏輯磁碟,邏輯磁碟區)
一個文件卷可以由多個實體磁碟組成
儲存空間初始化
文件卷初始化
目錄區
存放檔案目錄資訊FCB,用於磁碟儲存空間管理的信息
文件區
存放文件數據
空間管理
空閒表法
屬於連續分配方式
為檔案分配連續的儲存空間
可採用首次適應,最佳適應,最壞適應
回收方式與動態分配相同
空閒鍊錶法
空閒盤塊鏈
將空閒盤塊像鍊錶一樣連結起來
空閒盤塊中保存指向下一個空閒盤塊的指針
分配
透過適應演算法找到符合條件的盤塊
回收
將回收的盤塊掛到鏈尾
分配回收簡單,但效率低
空閒盤區鏈
幾個連續的空閒盤塊構成一個空閒盤區
盤區中第一個空閒盤塊裡記錄盤區長度,指向下一個盤區的指針
分配
通常採用首次適應
回收
將回收區與相鄰的空閒盤區合併
分配回收麻煩,但效率高
點陣圖法
利用二進位位元bit來表示一個盤塊是否使用
盤塊號b = n×i j
n表示字長
i表示字號(行號)
i = b/n
除
j表示位號(列號)
j = b%n
取餘
連續分配和離散分配都適用
成組連結法
成組鏈塊(超級塊)用來存放空閒盤塊的塊號以及下一組空閒盤塊數
空閒盤塊的塊號為成組塊(盤區)的第一個盤塊號
一個分組的數量有限,例如:只允許100個空閒盤塊組成一個群組
若沒有下一組的空閒盤塊,則塊號設為-1
分配
從最後一個盤塊開始分配,並更改超級塊中空閒盤塊數
若某一快內存放了下一組的信息,則要將信息複製到超級塊後,再進行分配
回收
若超級塊沒滿
則直接將回收塊插入超級塊後
若超級塊已滿
類似鍊錶的頭插法
磁碟
結構
磁碟
磁軌
區
就是磁碟區塊
每個扇區容量相同,最內層扇區密度最大
磁碟面
每個盤面對應一個磁頭
柱面
所有盤面的相對位置相同的磁軌組成柱面
磁碟位址用(柱面號-盤面號-區號)表示
磁碟調度演算法
一次讀寫所需的時間
尋道時間
啟動磁頭臂
用時s
移動磁頭
跨越一條磁軌用時m,需要跨越n條磁軌
= s m×n
傳輸時間
讀/寫時間
轉速r,讀寫的位元組數為b,每個磁軌上的位元組數為N
= b /(r N)
延遲時間
磁碟轉速為r
= 1/(2r)
磁碟調度演算法
會直接影響尋道時間
先來先服務
最短尋找時間優先
可能產生飢餓現象
掃描演算法
只有磁頭移動到最內或最外層磁軌時才可以反方向移動
即使最外層或最內層沒有處理請求也依然要移動到此才可以開始反方向移動
不會產生飢餓現象
look演算法
掃描演算法的改進
如果在磁頭移動方向沒有了其他的請求,則可以直接改變方向
循環掃描 (電梯調度)
解決掃描演算法對於各個位置的反應不平均
在返回時不回應任何請求,直接移動至起始端
只有在移動到最邊緣後才改變方向(與掃描演算法相同)
c-look演算法
循環掃描的改進
不需要移動到邊緣才改變方向,移動方向沒有其他請求就可改變方向
減少延遲的方法
交替編號
讓邏輯上相鄰的扇區在物理上有一定間隔
錯位命名
讓同一扇面內各個扇區相錯開(如0扇區與1扇區之間隔著其他號扇區)
地址結構設計
柱面號-盤面號-扇區號
減少了磁頭移動時間
磁碟管理
磁碟初始化
物理格式化
將磁碟各磁軌劃分為磁區
分割區
將磁碟分割區,每個分割區由若干柱面組成
邏輯格式化
建立檔案系統
引導區塊
電腦開機要進行一系列初始化工作,透過執行自舉程序完成初始化工作
完整的自舉程式存放在磁碟的啟動區塊(引導區塊)上,啟動區塊位於磁碟的固定位置
壞區塊處理
壞塊屬於硬體故障
對於簡單磁碟
壞塊對作業系統不透明(會被標記)
對於複雜磁碟
扇區備用
對複雜的磁碟,磁碟控制器會維護一個壞塊鍊錶,在物理格式化時,進行初始化,利用備用扇區替換壞塊
固態硬碟SSD
原理
基於閃存flash 屬於電可擦ROM(EEPROM)
組成
快閃記憶體翻譯層
翻譯邏輯區塊號
找到對應的頁
儲存媒體
多個快閃記憶體晶片
每個晶片包含多個區塊(blocks)
每個區塊包含多個頁
讀寫效能
以頁為單位
以區塊為單位
支援隨機訪問
讀速度快 寫速度慢
與機械式硬碟的對比
SSD讀寫比機械硬碟快,隨機訪問
SSD安靜無噪音
SSD的某個區塊多次擦除後會壞掉 機械硬碟的磁區不會因為寫的多而壞掉
磨損均衡
將擦除操作平均到各個區塊上
動態磨損均衡
寫資料時,優先選擇累計擦除少的快閃記憶體區塊
靜態磨損均衡
老舊的區塊擔任 讀取操作 為主的任務 新區塊擔任 寫入操作 為主的任務
靜態比動態更優秀
第五章IO管理
設備分類
區塊設備
資料交換以區塊為單位
傳輸速率高
字元設備
資料交換以字元為單位
傳輸速率低,不可尋址
低速設備
滑鼠鍵盤
中速設備
印表機
高速裝置
磁碟機,光碟機
io介面
裝置控制器
位於CPU與設備之間
設備控制器與cpu的接口
包含資料線位址線控制線
設備控制器與設備的接口
控制器中有一個或多個設備接口
io邏輯
實現對設備的控制
設備控制器功能
接受識別CPU的命令
資料交換
識別和報告設備狀態
地址識別
數據緩衝
錯誤控制
io連接埠
設備控制器中可以直接被CPU存取的暫存器
換句話說多個io埠組成了io接口
資料暫存器
狀態暫存器
控制暫存器
CPU與io連接埠通訊方法
獨立編址
為每個連接埠分配一個連接埠號,只有作業系統使用特殊io指令才能存取連接埠
統一編址
每個連接埠被分配唯一的記憶體位址
io控制方式
程式直接控制方式
CPU循環檢查週邊狀態,直到確定該字在io控制器的資料暫存器中
中斷驅動方式
讓io設備主動打斷CPU的運作並請求服務, 從而解放CPU
在每個資料需要傳輸時中斷CPU
DMA方式
io設備和記憶體之間開闢直接的資料交換通路
在所要求的一批資料傳送結束時中斷CPU
CPU發出指令時,只能讀取或寫入連續的資料塊
頻道控制方式
專門負責輸入輸出的處理機
是一種硬體
CPU發出io指令,指明通道程式的位置指明執行的io設備
通道執行記憶體中的通道程序
通道與CPU共享記憶體
io軟體層次結構
使用者io軟體
實現假脫機技術spooling
虛擬設備技術
提高獨佔裝置的使用率
將獨佔設備變為共享設備
緩和CPU高速與io設備低速的矛盾
透過軟體方式
需要多道程式設計技術支援
系統在磁碟固定區開闢兩個區域,輸入輸出井
在記憶體中開闢兩個緩衝區:輸入緩衝區 輸出緩衝區
共用印表機
獨佔式裝置
允許各個進程串行使用的設備
採用靜態分配
共享裝置
允許多個進程共同使用的設備
宏觀意義上的同時使用 微觀上仍然交替進行
採用動態分配
共享列印原理
系統將各個使用者所需的列印請求放到磁碟的輸入井,利用磁碟與記憶體與CPU的速度差來實現微觀上的交替,宏觀上的同時
設備獨立軟體(設備無關軟體)
獨立性
使用者編程時所使用的設備與實際設備無關
功能
管理邏輯設備表
只設定一張系統邏輯設備表LUT
為每個使用者設定邏輯設備表LUT
錯誤控制
設備分配回收
分配考慮的因素
設備固有屬性
設備分配演算法
設備分配安全性
安全分配方式
進程發出io請求後就進入阻塞,直到完成io操作才解除
CPU與io設備變成了串列工作
不安全分配方式
進程發出io請求後,繼續運行,並仍可發出io請求,只有在io請求得不到滿足才進入阻塞
可能出現死鎖
分配策略
靜態分配
一開始就將所需的全部資源分配
動態分配
在進程執行過程中根據需要繼續分配
設備分配的資料結構
通道,控制器,設備關係
設備控製表DCT
表示某一個設備,表項內容為設備的各個屬性
控制器控製表COCT
通道控製表CHCT
每個通道對應一張CHCT
系統設備表SDT
包含全部設備的情況
分配步驟改進
使用者提供邏輯設備名
透過邏輯設備名稱與實體設備名稱的對應(邏輯設備表LUT)
LUT表項包括邏輯設備名,實體設備名,設備驅動程式入口位址
緩衝管理
目的
解決輸入輸出速度比CPU處理速度慢所造成的資料堆積的問題
單一緩衝
計算每塊資料的處理時間
假設一個初始狀態,計算下一次到達此狀態所花費的時間
輸入到緩衝區的時間為T,緩衝區傳送到工作區的時間為M,處理資料的時間為C
初始狀態:工作區滿,緩衝區空
處理每塊資料用時:MAX(C,T) M
公式供參考,具體問題具體分析,以甘特圖
雙緩衝
工作區空,一個緩衝區空一個緩衝區滿
處理每塊資料用時:MAX(C M,T)
緩衝池
使並發進程有效地輸入輸出
實現io調度
用某種演算法確定一個好的順序來處理io請求
裝置保護
設備被視為特殊的文件,每個文件分配FCB,設定權限
裝置驅動程式
對硬體設備的具體控制
計算資料所在磁碟的柱面號,磁頭號,磁區號等
不同的設備需要不同的驅動程式
io應用程式介面
字元設備介面
get/put調用,向字符設備讀寫一個字符
區塊設備介面
read/write系統呼叫:讀寫字符 seek:修改
網路設備介面
網路通訊介面 socket系統呼叫:建立網路套接字,指明網路協定 bind:將套接字綁定到本地端口 connect:將套接字連接到遠端位址 read/write:從套接字讀寫資料
阻塞/非阻塞io
阻塞io
程式發出io系統調用,進程轉為阻塞態等待
非阻塞io
程式發出io系統調用,系統調用可迅速返回,進程無需阻塞等待