Computer OS系统基本原理
Computer OS系統基本原理
第一章 緒論(考概念)
什么是OS?
o 操作系統是一組控制和管理計算機軟硬件資源、合理地對各類作業進行調度以及方便用戶使用的程序集合。
o 操作系統是位于硬件層(HAL)之上,所有其它系統軟件層之下的一個系統軟件,使得管理系統中的各種軟件和硬件資源得以充分利用,方便用戶使用計算機系統。
本文參考鏈接:
https://jason-xy.cn/2021/06/osreview/
操作系統的目標
方便性:
o 計算機只能識別0、1
o 用戶熟悉的是各種語言
o 命令和圖形界面
有效性:
o 長期是最重要的目標
o 提高系統資源利用率
o 提高系統吞吐量
可擴充性:
o 便于修改和增加功能(如何設計?)
開放性:
o 系統能支持世界標準規范
批處理、分時、實時系統比較
批處理系統
單道批處理系統
o 名稱由來:內存中始終僅存一道作業運行;
o 主要特征:自動性、順序性、單道性;
o 主要優點:減少人工操作,解決了作業的自動接續;
o 主要缺點:平均周轉時間長,沒有交互能力。
多道批處理系統
o 定義:在內存中存放多道作業運行,運行結束或出錯,自動調度內存中的另一道作業運行;
o 好處:
o 提高CPU的利用率;
o 提高內存和I/O設備利用率;
o 增加系統吞吐率;
o 特征:多道性、無序性、調度性;
o 主要優點:提高了資源利用率和吞吐能力;
o 主要缺點:平均周轉時間長,沒有交互能力。
分時系統
o 產生:人機交互、共享主機、便于用戶上機
o 關鍵問題:及時接收、及時處理
o 特點:多路性、獨立性、及時性、交互性
實時系統
o 定義:是計算機及時響應外部事件的請求,在規定的時間內完成對該事件的處理,并控制所有實時設備和實時任務協調一致的運行。
o 舉例:工業控制、軍事控制、醫療控制、航班訂票、聯機情報檢索
o 分類:周期性非周期性、軟硬實時任務
o 特征:多路性、獨立性、交互性、可靠性、及時性
OS 的作用
o 作為用戶與計算機硬件系統之間的接口
o 作為計算機系統資源的管理者
o 用作擴充機器
OS 的四個基本特性?
o 并發性(最重要的特性)
并行是指兩或多個事件在同一時刻發生
并發是兩或多個事件在同一時間間隔內發生
o 共享性
系統中資源可供內存中多個并發執行的進程共同使用
互斥共享:一段時間只允許一個進程訪問該資源
同時訪問:微觀上仍是互斥的
并發和共享是操作系統的兩個最基本的特征,它們又是互為存在的條件
o 虛擬性
時分復用:虛擬處理機技術, 虛擬設備技術
空分復用:虛擬存儲
通過某種技術把一個物理實體變為若干個邏輯上的對應物。若n是某一物理設備所對應的虛擬的邏輯設備數,則虛擬設備的速度必然是物理設備速度的1/n。
o 異步性
停停走走
運行進度不可預知
OS 的五大功能?
o 處理機管理(CPU)
o 存儲器管理
o 設備管理
o 文件管理
o 方便用戶使用的用戶接口。
OS 的基本類型(了解即可)
o 批處理系統
o 分時系統
o 實時系統
第二章 進程管理
進程和線程的概念、比較
進程
o 進程是程序的一次執行
o 進程是一個程序及其數據在處理機上順序執行時所發生的活動
o 進程是程序在一個數據集合上運行的過程,它是系統進行資源分配和調度的一個獨立單位
線程
輕型進程
比較
o 調度的基本單位
在引入線程的OS 中,已把線程作為調度和分派的基本單位,因而線程是能獨立運行的基本單位。當線程切換時,僅需保存和設置少量寄存器內容,切換代價遠低于進程。
o 并發性
在引入線程的OS 中,不僅進程之間可以并發執行,而且在一個進程中的多個線程之間亦可并發執行,甚至還允許在一個進程中的所有線程都能并發執行。同樣,不同進程中的線程也能并發執行。
o 擁有資源
線程本身并不擁有系統資源,而是僅有一點必不可少的、能保證獨立運行的資源。
屬于同一進程的所有線程都具有相同的地址空間。
o 獨立性
在同一進程中的不同線程之間的獨立性要比不同進程之間的獨立性低得多。
o 系統開銷
在一些OS 中,線程的切換、同步和通信都無需操作系統內核的干預。
o 支持多處理機系統
對于多線程進程,就可以將一個進程中的多個線程分配到多個處理機上,使它們并行執行,這無疑將加速進程的完成。
進程的基本狀態及狀態轉換的原因
三種狀態
就緒狀態
當進程已分配到除CPU以外的所有必要資源后,只要再獲得CPU,便可立即執行。(萬事俱備,只欠CPU)
執行狀態
進程已獲得CPU,其程序正在執行。(獲得CPU)
阻塞狀態
正在執行的進程由于發生某事件而暫時無法繼續執行時,便放棄處理機而處于暫停狀態,把這種暫停狀態稱為阻塞狀態,有時也稱為等待狀態。(無法繼續執行,放棄處理機處于暫停狀態)
狀態轉換原因
PCB 的作用
o 是進程存在的唯一標志
o PCB (Process Control Block) 常駐內存
PCB 內的信息
o 進程標識符
o 處理機狀態
o 進程調度信息
o 進程控制信息
進程控制的原語操作
Create()
- 申請空白 PCB
- 為新進程分配資源
- 初始化進程控制塊
- 初始化標識信息
- 初始化處理機狀態信息
- 初始化處理機控制信息
- 將新進程插入就緒隊列
終止 - 根據進程ID,檢索進程PCB,讀取進程信息
- 若被終止進程處于執行狀態,則立即終止進程,并置調度指示符為真,用于指示該進程被終止后重新進行調度
- 終止子孫進程
- 歸還資源
- 移出已終止進程
block() - 進程通過調用阻塞原語 block() 阻塞自己
- 更改進程狀態,并插入阻塞隊列
- 處理機重新調度,分配給另一就緒進程
wakeup() - 將進程移出阻塞隊列,并更改PCB中現行狀態
- 將PCB插入就緒隊列
suspend() - 首先檢查被掛起進程的狀態,若處于活動就緒狀態,便將其改為靜止就緒
- 對于活動阻塞狀態的進程,則將之改為靜止阻塞狀態
active() - 將進程從外存調入內存,檢查該進程的現行狀態
- 若是靜止就緒,便將之改為活動就緒;若為靜止阻塞,便將之改為活動阻塞
進程切換 - 保存進程上下文環境
- 更新當前運行進程的控制塊內容,將其狀態改為就緒或阻塞狀態
- 將進程控制塊移到相應隊列
- 改變需投入運行進程的控制塊內容,將其狀態變為運行狀態
- 恢復需投入運行進程的上下文環境
進程互斥、臨界區、進程同步的基本概念、同步準則
概念
進程互斥
任何時刻,只允許一個進程進入臨界區,以此實現進程對臨界資源的互斥訪問。
臨界區
訪問臨界資源的那段代碼稱為臨界區。
進程同步
使并發執行的主進程之間能有效地共享資源和相互合作,從而使程序的執行具有可再現性。
同步準則
o 空閑讓進
o 忙則等待
o 有限等待
o 讓權等待
信號量機制
信號量(Semaphores)機制:是一種卓有成效的進程同步工具
o 整型信號量
o 記錄型信號量
o AND 型信號量
o 信號量集
信號量應用實現
o 利用信號量實現進程互斥
o 利用信號量實現前趨關系
經典進程同步問題?
生產者消費者問題
o 互斥信號量mutex:實現諸進程對緩沖池的互斥使用
o 資源信號量empty:表示緩沖池中空緩沖區的數量
o 資源信號量full:表示滿緩沖區的數量
o 只要緩沖池未滿,生產者便可將消息送入緩沖池
o 只要緩沖池未空,消費者便可從緩沖池中取走一個消息
int in=0, out=0;
item buffer[n];
semapthore mutex=1, empty=n, full=0;
void proceducer() {
do{
producer an item nextp;
…….
wait(empty);
wait(mutex);
buffer[in]=nextp;
in=(in+1) %n;
signal(mutex);
signal(full);
} while(TRUE);
}
void consumer() {
do{
wait(full);
wait(mutex);
nextc=buffer[out];
out=(out+1) %n;
signal(mutex);
signal(empty);
consumer the item in nextc;
………
} while(TRUE);
}COPY
哲學家進餐問題
特殊情況:死鎖 。
解決辦法:
至多只允許四位哲學家同時去哪左邊的筷子。
僅當哲學家的左、右兩只筷子同時可以時才允許他拿起筷子。
規定奇數號哲學家先拿他左邊的筷子,然后再拿右邊的;而偶數號哲學家則相反。
o 記錄型信號量
semaphore chopstick[5] =[1,1,1,1,1];
do{
wait(chopstick[i]);
wait(chopstick[(i+1) %5]);
…
//eat
…
signal(chopstick[i]);
signal(chopstick[(i+1) % 5]);
…
//think;
…
} while (TRUE)
COPY
o AND 型信號量
Var chopstick: array[0, …, 4] of semaphore:=(1,1,1,1,1);
processi
Repeat
think;
Sswait(chopstick[(i+1)mod 5],chopstick[i]);
eat
Ssignal(chopstick[(i+1)mod 5],chopstick[i]);
Until false
COPY
讀者寫者問題
o 信號量集
int RN;
semaphore L=RN, mx=1;
void Reader(){
do{
Swait(L, 1, 1);
Swait(mx, 1, 0);
…….
perform read operation;
……
Ssignal(L, 1)
}while (TRUE);
}
void Writer(){
do{
Swait(mx, 1,1; L, RN, 0);
perform write operation;Ssignal(mx, 1);} while(TRUE);
}
COPY
進程間通信的原理和實現方法
原理
進程之間的信息交換
o 共享存儲器系統
o 消息傳遞系統
o 管道(Pipe)通信
實現方法
o 直接通信方式
o Send(Receiver,message);
o Receive(Sender,message);
o 間接通信方式
o Send(mailbox, message);
o Receive(mailbox, message);
第三章 處理機調度
調度的層次
調度算法的準則
不同的設計需求決定了不同的目標:
共同目標:
o 資源利用率
o 公平性
o 平衡性
o 策略強制執行
周轉時間
o 作業在外存的等待時間
o 進程在就緒隊列的等待時間
o 進程占用CPU的時間
o 進程阻塞時間
帶權周轉時間
響應時間
調度算法?
先來先服務
周轉時間
o 作業在外存的等待時間
o 進程在就緒隊列的等待時間
o 進程占用CPU的時間
o 進程阻塞時間
缺陷:對待短作業(進程)不公平,如果他們排在隊列后面,則其等待時間遠大于其執行時間。
時間片輪轉
原理:
o FCFS策略+時鐘中斷+時間片原則
進程切換時機:
o 時間片內進程結束,進程結束事件激活進程調度,新進程可運行一個時間片。
o 時間片用完,時鐘中斷激活調度,舊進程到就緒隊列尾,隊頭進程投入運行一個時間片。
時間片大小的確定:
o 太小:利于短作業,但增大調度和上下文切換頻率,增大系統開銷。
o 太長:退化為FCFS算法。
o 合適:略大于一次典型的交互所需的時間,使大多數交互式進程能在一個時間片內完成。
基于優先權
賦予作業動態優先級,優先級隨作業等待時間延長而增加,從而使長作業的優先級在等待期間不斷增加。
高響應比優先
等待時間+要求服務時間=響應時間
故優先級相當于響應比Rp。
o 如果作業的等待時間相同,則要求服務的時間愈短,其優先權愈高,因而該算法有利于短作業。
o 當要求服務的時間相同時,作業的優先權決定于其等待時間,等待時間愈長,其優先權愈高,因而它實現的是先來先服務。
o 對于長作業,作業的優先級可以隨等待時間的增加而提高, 從而也可獲得處理機。
o 簡言之,該算法既照顧了短作業,又考慮了作業到達的先后次序,不會使長作業長期得不到服務。
多級反饋隊列
長短不同作業的矛盾。
調度機制
o 設置多個就緒隊列,并為各個隊列賦予不同的優先級。
o 優先級愈高的隊列的進程的執行時間片就愈小。
o 新進程首先進入最高優先級的隊列。每個隊列采用FCFS算法。隊列中的進程運行一個時間片后未結束則降級排到下一個隊列的末尾。最低優先權隊列中的進程則按RR方式運行。
o 按隊列優先級調度。只有比隊列的優先級高的隊列均空時,才運行該隊列中的進程。
特點:長、短作業兼顧,有較好的響應時間
(1)短作業一次完成,響應時間性能好;
(2)中型作業周轉時間不長;
(3)大型作業不會長期不處理。
實時調度(了解)
實時調度算法分類
死鎖
概念及原因
死鎖(Deadlock),是指多個進程在運行過程中因爭奪資源而造成的一種僵局(Deadly- Embrace),當進程處于這種僵持狀態時,若無外力作用,它們都將無法再向前推進。
如果一組進程中的每一個進程都在等待僅由該組進程中的其他進程才能引發的事件,那么該組進程是死鎖的。
產生死鎖的原因可歸結為如下兩點:
(1)競爭資源。
(2)進程間推進順序非法。
必要條件
(1)互斥條件:指進程對所分配到的資源進行排它性使用 。
(2)請求和保持條件:指進程已經保持了至少一個資源,但又提出了新的資源請求 。
(3)不剝奪條件:指進程已獲得的資源,在未使用完之前,不能被剝奪,只能在使用完時由自己釋放。
(4)環路等待條件:指在發生死鎖時,必然存在一個進程——資源的環形鏈 。
預防
是通過設置某些限制條件,去破壞產生死鎖的四個必要條件中的一個或幾個條件,來預防發生死鎖。至于必要條件1,因為它是由設備的固有屬性所決定的,不僅不能改變,還應加以保證。
破壞“請求和保持”條件
系統規定所有進程在開始運行之前,都必須一次性地申請其在整個運行過程所需的全部資源。
從而進程在整個運行期間,便不會再提出資源要求,從而摒棄了請求和保持條件,由此可以避免發生死鎖。
優點:簡單、易于實現且很安全。
缺點:資源被嚴重浪費,使進程延遲運行。
摒棄“不剝奪”條件
當一個已經保持了某些資源的進程,再提出新的資源請求而不能立即得到滿足時,必須釋放它已經保持了的所有資源。待以后需要時再重新申請。從而摒棄了“不剝奪”條件。
缺點:實現起來比較復雜且要付出很大代價。
o 一個資源在使用一段時間后,它的被迫釋放可能會造成前段工作的失效。
o 會使進程前后兩次運行的信息不連續。
o 因反復地申請和釋放資源,致使進程執行被無限推遲,延長進程周轉時間、增加系統開銷、降低吞吐量 。
摒棄“環路等待”條件
這種方法中規定,系統將所有資源按類型進行線性排隊,并賦予不同的序號。 所有進程對資源的請求必須嚴格按照資源序號遞增的次序提出,這樣,在所形成的資源分配圖中,不可能再出現環路,因而摒棄了“環路等待”條件。
存在嚴重問題
第一,為系統中各類資源分配的序號必須相對穩定,這就限制了新設備類型的增加;
第二,會經常發生作業使用的順序與系統規定順序不同的情況,造成資源浪費;
第三,增加了程序設計難度。
避免
是在資源的動態分配過程中,用某種方法去防止系統進入不安全狀態,從而避免發生死鎖。
檢測
通過系統所設置的檢測機構,及時地檢測出死鎖的發生,并精確地確定與死鎖有關的進程和資源。
解除
當檢測到系統中已發生死鎖時,須將進程從死鎖狀態中解脫出來。常用的實施方法是撤消或掛起一些進程。
安全狀態
安全狀態
o 所謂安全狀態,是指系統能按某種進程順序,如<P1,P2,…,Pn>,依次為n個進程分配其所需資源,直至其最大需求,使每個進程都可順利地完成,稱系統處于安全狀態。
o 稱〈P1,P2,…,Pn〉序列為安全序列。否則,如果系統無法找到這樣一個安全序列,則稱系統處于不安全狀態。
銀行家問題?
銀行家算法中的數據結構
o 可利用資源向量Available。這是一個含有m個元素的數組,其中的每一個元素代表一類可利用的資源數目。其數值隨該類資源的分配和回收而動態地改變。 Available[j]=k,表示系統中現有Rj類資源k個。
o 最大需求矩陣Max。這是一個n × m的矩陣,它定義了n個進程中每一個進程對m類資源的最大需求。Max[i,j]=K,表示進程i需要Rj類資源的最大數目為K。
o 分配矩陣Allocation。這是一個n×m的矩陣,它定義了系統中每一類資源當前已分配給每一進程的資源數。Allocation[i,j]=K,表示進程i當前已分得Rj類資源的數目為K。
o 需求矩陣Need。這也是一個n×m的矩陣,用以表示每一個進程尚需的各類資源數。Need[i,j]=K,表示進程Pi還需要Rj類資源K個,方能完成其任務。
第四章 存儲器管理
存儲器結構層次
o 寄存器、高速緩存、主存儲器和磁盤緩存均屬于操作系統存儲管理的管轄范疇,掉電后它們存儲的信息不再存在。
o 磁盤和可移動存儲介質屬于設備管理和文件系統的管轄范疇,它們存儲的信息將被長期保存。
程序的裝入
絕對裝入方式(Absolute Loading Mode) :編譯時,已知程序在內存的具體位置,則編譯程序可產生實際存儲地址(絕對地址)的目標代碼。
可重定位裝入方式(Relocation Loading Mode)
重定位(地址映射):
o 經編譯得到的目標模塊中為相對地址(通常從0開始,也稱邏輯地址),即地址都是相對于0開始的。
o 裝入模塊中的邏輯地址與實際裝入內存的物理地址不同。
o 裝入內存時,相對地址(數據和指令的地址)要作出相應的修改以得到正確的物理地址,這個修改的過程稱為重定位。
靜態重定位:
o 地址變換是在裝入內存時一次完成的,且以后不能移動。
o 一般情況下,物理地址=相對地址+內存中的起始地址。
o 適用于多道程序環境,可以將裝入模塊裝入到內存中任何允許的位置。
o 優點:不需硬件支持,可以裝入有限多道程序。
o 缺點:一個程序通常需要占用連續的內存空間,程序裝入內存后不能移動,不易實現共享。
動態運行時裝入方式(Denamle Run-time Loading)
o 裝入程序將裝入模塊裝入內存后,并不立即把裝入模塊中的相對地址轉換為絕對地址,而是把這種地址轉換推遲到程序執行時進行。在硬件地址變換機構的支持下,隨著對每條指令或數據的訪問自動進行地址變換,故稱為動態重定位。
o 最簡單的辦法是利用一個重定位寄存器(RR)。該寄存器的值是由進程調度程序根據作業分配到的存儲空間起始地址來設定的。
o 在具有這種地址變換機構的計算機系統中,當執行作業時,不是根據CPU給出的有效地址去訪問主存,而是將有效地址與重定位寄存器中的內容相加后得到的地址作為訪問主存的地址。
訪問地址時才確定物理地址,因此采用動態重定位技術后,可在運行中動態分配或者釋放存儲空間。
主要優點:
o 主存的使用更加靈活有效。非連續分配和部分裝入。
o 幾個作業共享一程序段的單個副本比較容易。
o 有可能向用戶提供一個比主存的存儲空間大得多的地址空間。因而無需用戶來考慮覆蓋結構,而由系統來負責全部的存儲管理。
主要缺點:
o 需要附加硬件支持。
o 實現存儲器管理的軟件比較復雜。
程序的鏈接
靜態鏈接: (Static Linking)
在程序運行之前,先將各目標模塊及它們所需的庫函數,鏈接成一個完整的裝入模塊(又稱執行模塊),以后不再拆開。
存在問題:
o 不便于對目標模塊的修改和更新(若要更新其中一個模塊,需要打開裝入模塊)。
o 無法實現對目標模塊的共享。
裝入時動態鏈接
用戶源程序是主目標模塊,裝入內存時再鏈接需要的其他模塊。即在裝入目標模塊時,若發現一個外部模塊調用,則由裝入程序找出相應的外部目標模塊,并將其裝入內存。
優點:
o 便于軟件版本的修改和更新。只需修改各個目標模塊,不必將裝入模塊拆開,非常方便。
o 便于實現目標模塊共享。即可以將一個目標模塊鏈接到幾個應用模塊中,從而實現多個應用程序對該模塊的共享。
缺點:
o 進程(程序)在整個執行期間,裝入模塊是不改變的。
o 每次運行時的裝入所有涉及的模塊,但許多模塊并不是每次運行都需要的,占用內存。
運行時動態鏈接
采用運行時動態鏈接可將某些目標模塊的鏈接推遲到執行時才進行,即在執行過程中,若發現一個被調用模塊尚未裝入內存時,由操作系統去找到該模塊,將它裝入內存,并鏈接到調用模塊上。
優點:
o 凡在執行過程中未被用到的目標模塊,都不會被調入內存和被鏈接到裝入模塊上,這樣不僅可加快程序的裝入過程,而且可節省大量的內存空間。
o 運行時動態鏈接是目前最常使用的鏈接方式。
連續分配方式
連續分配方式,是指為一個用戶程序分配一個連續的內存空間。
單一連續分配
o 系統區
o 用戶區
o 存貯保護
o 一般不設置保護也可,因單任務。
分區式分配
固定分區
特點:有n個分區,則可同時裝入n個作業/任務。
一、分區大小:
相等:
不相等:不相等利用率更高。
二、內存分配:
數據結構
將分區按大小排序,并將其地址、分配標識作記錄
例:dos的MCB
三、特點:
簡單,有碎片(內零頭)
可變式分區(比固定式分區有改善)
一、數據結構
1.空閑分區表
2.空閑分區鏈
二、順序分配算法
要求:空閑分區按照地址或者大小組織為鏈表。
1.首次適應算法FF。
方法:每次鏈首開始,直到找到滿足大小的空閑分區,分割該分區。
特點:有外零頭,低址內存使用頻繁,查找慢。高地址區保留大分區。
2.循環首次適應算法。
方法:從上次找到的空閑分區的下一個開始查找,直到找到滿足大小的空閑分區,分割該分區。
特點:空閑分區分布均勻,提高了查找速度;缺乏大的空閑分區。
3.最佳適應算法
要求:分區按大小遞增排序;分區釋放時需插入到適當位置。
方法:從小分區開始,找大小滿足要求,但空余最小的分區。
特點:單次分配看似最優,但存在許多難以利用的碎片。總體未必最優。
4.最壞適應算法
方法:總是選擇最大的分區來分割分配。
特點: 缺乏大的空閑分區。對中小作業有利。查找效率高。
三、分區分配
1.分配:
2.回收:
(1)上鄰空閑區:合并,改大小。
(2)下鄰空閑區:合并,改大小,首址。
(3)上、下鄰空閑區:合并,改大小。
(4)不鄰接,則建立一新表項。
可重定位分區分配
動態重定位的引入
o 內零頭:分配給作業但作業并不需要的部分。
o 外零頭:太小無法分配給任何作業的塊。
o 連續式分配中,總量大于作業大小的多個小分區不能容納作業。
o 緊湊
o 通過作業移動將原來分散的小分區拼接成一個大分區。
o 作業的移動需重定位。是動態(因作業已經裝入)
動態重定位實現
動態分區分配算法
離散分配方式
離散分配方式的引入
o 連續分配方式會產生內/外零頭
o 為解決零頭問題又要進行緊湊等高開銷活動
什么是離散分配
o 程序在內存中不一定連續存放
根據離散時的基本單位不同,可分為三種:
o 分頁存儲管理
o 分段存儲管理
o 段頁式存儲管理
分頁存儲管理
頁面和物理塊
o 將一個進程的邏輯地址空間分成若干個大小相等的片,稱為頁面或頁。
o 相應地,也把內存空間分成與頁面相同大小的若干個存儲塊,稱為(物理)塊或頁框。
o 在為進程分配內存時,以塊為單位將進程中的若干個頁分別裝入到多個可以不相鄰接的物理塊中。
o 由于進程的最后一頁經常裝不滿一塊而形成了不可利用的碎片,稱之為“頁內碎片”或稱為“內零頭”。
注:
o 系統一旦啟動,則頁和頁框大小固定不變,且兩者相等。
o 從0開始編制頁號,頁內地址是相對于0編址。
o 在進程調度時,必須把它的所有頁一次裝入到主存的頁框內;如果當時頁框數不足,則該進程必須等待,系統再調度另外的進程。(純分頁方式)
實現分頁存儲管理的數據結構
-
頁表:每個進程對應 1 個頁表,描述該進程的各頁面在內存中對應的物理塊號。
o 頁表中包括頁號、物理塊號(還可有存取控制字段,對存儲塊中的內容進行保護)。
o 注意:全部頁表集中存放在主存的系統專用區中,只有系統有權訪問頁表,保證安全。
-
作業表:整個系統1張,記錄作業的頁表情況,包含進程號、頁表長度、頁表始址等信息。
-
空閑塊表:整個系統1張,記錄主存當前空閑塊。
地址變換機構
快表
o 分頁系統:處理機每次存取指令或數據至少需要訪問兩次物理內存: 第一次訪問頁表,第二次存取指令或數據
o 為了提高地址變換速度,為進程頁表設置一個專用的高速緩沖存儲器,稱為快表、TLB(Translation Lookaside Buffer),或聯想存儲器(Associative Memory)
內存的有效訪問時間
有快表時:命中率,指使用快表并在其中成功找到所需頁面的表項的概率。
EAT = a x λ + ( t + λ )(1-a) + t = 2t + λ – t x a
λ為查找快表所需的時間,a為命中率,t表示一次內存訪問需要的時間。
兩級或多級頁表
對分頁存儲管理的評價
o 徹底消除了外零頭,僅存在很少的內零頭, 提高了內存利用率。
o 分頁操作由系統自動進行,一個頁面不能實現某種邏輯功能。用戶看到的邏輯地址是一維的,無法調試執行其中的某個子程序或子函數。
o 采用分頁技術不易于實現存儲共享,也不便于程序的動態鏈接。
分段存儲管理方式
o 作業地址空間按邏輯信息的完整性被劃分為若干個段。
o 每段有段名(或段號),每段從0開始編址。
o 段內的地址空間是連續的。
o 許多編譯程序支持分段方式,自動根據源程序的情況產生若干個段。
段表
o 為每個分段分配一個連續的分區,而進程中的各個段可以離散地移入內存中不同的分區中。
o 應像分頁系統那樣,在系統中為每個進程建立一張段映射表,簡稱“段表”。每個段在表中占有一個表項,其中記錄了該段在內存中的起始地址(又稱為“基址”)和段的長度。
o 通常將段表放在內存中,執行中的進程可通過查找段表找到每個段所對應的內存區。
o 作用:實現從邏輯段到物理內存區的映射。
地址變換機構
信息共享
可重入代碼(Reentrant Code, 純代碼)
是一種允許多個進程同時訪問的代碼(可共享),且是一種不允許任何進程對其進行修改的代碼。
分頁共享
分段共享
段頁式存儲管理方式
先將用戶程序分段,每段內再劃分成若干頁,每段有段名(段號),每段內部的頁有一連續的頁號。
邏輯地址結構
地址變換機構
o 首先,從段表寄存器從獲得進程段表的起始地址,根據該地址,查找進程的段表。
o 然后,根據邏輯地址指定的段號檢索段表,找到對應段的頁表起始地址。
o 再根據邏輯地址中指定的頁號檢索該頁表,找到對應頁所在的物理塊號。
o 最后,用物理塊號加上邏輯地址中指定的頁內偏移量,形成物理地址。
在段頁式存儲管理方式中,每訪問一次數據,需訪問三次內存。
o 第一次訪問內存中的段表
o 第二次訪問內存中的頁表
o 第三次訪問相應數據。
解決方法:
可以設置快表,表項應包括段號、頁號、物理塊號。
虛擬存儲管理
常規存儲管理方式的特征
“一次性”: 要求將一個作業全部裝入內存才能運行。
1)大作業無法運行。
2)限制作業并發執行的程度。
“駐留性”: 作業裝入后一直駐留內存直到作業完成。
內存中存在一些已無用的、或暫時不用的程序或數據,浪費內存空間。
內存擴充方法
局部性原理
時間局限性
o 如果程序中的某條指令一旦執行, 則不久以后該指令可能再次執行;如果某數據被訪問過, 則不久以后該數據可能再次被訪問。
o 產生時間局限性的典型原因,是由于在程序中存在著大量的循環操作。
空間局限性
o 一旦程序訪問了某個存儲單元,在不久之后,其附近的存儲單元也將被訪問。
o 程序在一段時間內所訪問的地址,可能集中在一定的范圍之內,其典型情況便是程序的順序執行。
實現虛擬存儲的一般過程
虛擬存儲器的特征
1.多次性
多次性是指一個作業被分成多次調入內存運行。
2.對換性
對換性是指作業的運行過程中進行換進、換出,換進和換出能有效地提高內存利用率。
3.虛擬性
虛擬性是指能夠從邏輯上擴充內存容量,使用戶所看到的內存容量遠大于實際內存容量。
虛擬存儲管理的實現方法
請求分頁存儲管理方式
這是在分頁系統的基礎上,增加了請求調頁功能和頁面置換功能所形成的頁式虛擬存儲系統。
允許只裝入部分頁面的程序(及數據),便啟動運行。
以后,再通過調頁功能及頁面置換功能,陸續地把即將要運行的頁面調入內存,同時把暫不運行的頁面換出到外存上。
置換時以頁面為單位。
硬件支持:
①請求分頁的頁表機制上增加若干項,作為請求分頁的數據結構。
②缺頁中斷機構:當要訪問的頁面尚未調入內存時,便產生缺頁中斷,請求調頁。
③地址變換機構:虛地址到物理地址轉換。
軟件支持:
①實現請求調頁的軟件
②實現頁面置換的軟件
請求分段系統
它允許只裝入若干段的用戶程序和數據,即可啟動運行。以后再通過調段功能和段的置換功能,將暫不運行的段調出,同時調入即將運行的段。
為了實現請求分段,系統同樣需要必要的硬件支持。一般需要下列支持:
(1)請求分段的段表機制,這是在純分段的段表機制基礎上增加若干項而形成的。
(2)缺段中斷機構
(3)地址變換機構。
實現請求調段和段的置換功能也須得到相應的軟件支持。
段頁式虛擬存儲系統
許多虛擬存儲管理系統是建立在段頁式系統的基礎上的,通過增加了請求調頁、頁面置換兩大功能所形成的段頁式虛擬存儲系統。
請求分頁存儲管理方式
頁表機制
狀態位:也稱存在位,標志該頁是否駐留內存。
訪問位:記錄一段時間內該頁被訪問的情況,如一段時間內該頁被訪問的次數或者多長時間未被訪問。
修改位:標記該頁是否被修改過。注:為減少置換開銷,通常選擇未被修改過的頁面置換。
外存地址:用于記錄該頁在外存上的存儲地址。
缺頁中斷機構
o 在請求分頁系統中,每當所要訪問的頁面不在內存時,便產生一缺頁中斷,請求OS將所缺之頁調入內存。
o 地址轉換時,檢查頁面的頁表項中的存在位,如果為0,則產生一個缺頁中斷。
缺頁中斷處理過程
(1)操作系統接收到進程產生的缺頁中斷信號,啟動中斷處理例程,保留處理機現場;
(2)操作系統通知處理機從外存讀取指定的頁面;
(3)處理機激活I/O設備;
(4) 檢查內存有無足夠的空閑空間裝入該頁面?若有,轉(6),否則,執行(5);
(5) 利用頁面置換算法,選擇內存中的某個頁面,換出內存;
(6) 將指定頁面從外存裝入內存;
(7) 更新該進程的頁表;
(8) 更新快表;
(9)計算物理地址。
地址變換機構
內存分配策略和分配算法
物理塊的分配策略
固定分配局部置換
o 為每個進程分配一定數目的物理塊,在整個運行期間都不再改變。
o 實現這種策略的困難在于:應為每個進程分配多少個物理塊難以確定。
o 若太少,會頻繁地出現缺頁中斷,降低了系統的吞吐量。
o 若太多,又必然使內存中駐留的進程數目減少,進而可能造成CPU空閑或其它資源空閑的情況,而且在實現進程對換時,會花費更多的時間。
可變分配全局置換 (常用方式)
在采用這種策略時,先為系統中的每個進程分配一定數目的物理塊,而OS自身也保持一個空閑物理塊隊列。當某進程發現缺頁時,由系統從空閑物理塊隊列中,取出一個物理塊分配給該進程,并將欲調入的(缺)頁裝入其中。這樣,凡產生缺頁(中斷)的進程,都將獲得新的物理塊;僅當空閑物理塊隊列中的物理塊用完時, OS才能從內存中選擇一頁調出,該頁可能是系統中任一進程的頁,這樣,自然又會使那個進程的物理塊減少,進而使其缺頁率增加。
可變分配局部置換
為每個進程分配一定數目的物理塊,但當某進程發現缺頁時,只允許從該進程在內存的頁面中選出一頁換出,這樣就不會影響其它進程的運行。
在進程運行過程中統計進程的缺頁率,如果缺頁率高,則為其增加一定的內存頁,否則適當減少其內存的頁面數。
實現復雜:對進程的缺頁情況的統計需要額外的開銷。
物理塊分配算法
平均分配算法
將系統中所有可供分配的物理塊,平均分配給各個進程。
按比例分配算法
根據進程的大小按比例分配物理塊的算法。如果系統中共有n個進程,每個進程的頁面數為Si,則系統中各進程頁面數的總和為:
又假定系統中可用的物理塊總數為m,則每個進程所能分到的物理塊數為bi,將有:
bi應該取整,它必須大于最小物理塊數。
考慮優先權的分配算法
通常采取的方法是把內存中可供分配的所有物理塊分成兩部分:
o 一部分按比例地分配給各進程。
o 另一部分則根據各進程的優先權,適當地增加其相應份額后,分配給各進程。
調頁策略
預調頁方式
可采用一種以預測為基礎的預調頁策略,將那些預計在不久之后便會被訪問的頁面,預先調入內存。
處理過程:
當進程創建時,預先為進程裝入多個頁面。
缺頁中斷時,系統為進程裝入指定的頁面以及與之相臨的多個頁面。
若局部性很差,預先裝入的很多頁面不會很快被引用,并會占用大量的內存空間,反而降低系統的效率。目前預調頁的成功率僅約50%。
請求調頁
o 僅當進程執行過程中,通過檢查頁表發現相應頁面不在內存時,才裝入該頁面。
o 采用請求調頁方式,一次裝入請求的一個頁面,磁盤I/O的啟動頻率較高,系統的開銷較大。
o 當進程剛開始執行時,由于預先未裝入進程的頁面,故需要頻繁地申請裝入頁面。執行一段時間以后,進程的缺頁率將下降。
從何處調入頁面
在請求分頁系統中的外存分為兩部分:
o 用于存放文件的文件區
o 用于存放對換頁面的對換區
(1)系統擁有足夠的對換區空間
o 進程運行前需將全部有關文件從文件區拷貝到對換區。
o 這時可以全部從對換區調入所需頁面,以提高調頁的速度。
(2)系統缺少足夠的對換區空間
o 這時凡是不會被修改的文件,都直接從文件區調入。
o 而當換出這些頁面時,若未被修改則直接丟棄,以后再調入時,仍從文件區調入。
o 但對于那些可能被修改的部分,在將它們換出時,便須調到對換區,以后需要時,再從對換區調入。
(3)UNIX方式
o 由于與進程有關的文件都放在文件區,應從文件區調入。
o 凡是未運行過的頁面,都應從文件區調入。
o 而對于曾經運行過但又被換出的頁面,由于是被放在對換區,因此在下次調入時,應從對換區調入。
o 允許頁面共享
頁面調入過程
頁面置換算法
o 最佳(優)置換算法
o 先進先出(FIFO)頁面置換算法
o 最近最久未使用(LRU)置換算法
o Clock置換算法
o 改進型Clock置換算法
o 其它置換算法
最佳(優)置換算法
所選擇的被淘汰頁面,將是以后永不使用的,或是在最長(未來)時間內不再被訪問的頁面。
假定系統為某進程分配了三個物理塊, 并考慮有以下的頁面訪問序列:
7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1
進程運行時, 先將7,0,1三個頁面裝入內存。
以后,當進程要訪問頁面2時, 將會產生缺頁中斷。此時OS根據最佳置換算法, 將選擇頁面7予以淘汰。
先進先出(FIFO)頁面置換算法
該算法總是淘汰最先進入內存的頁面,即選擇在內存中駐留時間最久的頁面予以淘汰
最近最久未使用(LRU)置換算法
LRU置換算法是選擇最近最久未使用的頁面予以淘汰。該算法賦予每個頁面一個訪問字段,用來記錄一個頁面自上次被訪問以來所經歷的時間t,當須淘汰一個頁面時,選擇現有頁面中其t值最大的,即最近最久未使用的頁面予以淘汰。
Clock置換算法
o 當采用簡單c1ock算法時,為每頁設置一位訪問位,再將內存中的所有頁面都通過鏈接指針鏈接成一個循環隊列。
o 當某頁被訪問時,其訪問位被置1。
o 置換程序從上次停止位置開始檢查頁面的訪問位。
o 如果是0,就選擇該頁換出。
o 若為1,則重新將它置0,暫不換出,而給該頁第二次駐留內存的機會。
o 由于該算法是循環地檢查各頁面的使用情況,故稱為c1ock算法。
o 置換時是將未使用過的頁面換出去,故又把該算法稱為最近未用算法NRU。
Clock算法的流程
實例
改進型Clock置換算法
由訪問位A和修改位M可以組合成下面四種類型的頁面:
o 1類(A=0,M=0:表示該頁最近既未彼訪問,又未被修改,是最佳淘汰頁。
o 2類(A=0,M=1):表示該頁最近未被訪問,但已被修改,并不是很好的淘汰頁。
o 3類(A=1,M=0):最近已被訪問,但未被修改:該頁有可能再被訪問。
o 4類(A=1,M=1):最近已被訪問且被修改,該頁可能再被訪問。
第五章 設備管理
o 設備管理的對象:主要是I/O設備。
o 設備管理的基本任務:完成用戶提出的I/O請求,提高I/O速率以及改善I/O設備的利用率。
o 設備管理的主要功能有:緩沖區管理、設備分配、設備處理、虛擬設備及實現設備獨立性等。
I/O 系統的基本功能
- 設備分配
- 設備映射
- 設備驅動
- I/O緩沖區的管理
通用設備管理分層模型
設備控制器的組成
I/O 通道
I/O通道設備的引入 目的是使一些原來由CPU處理的I/O任務轉由通道來承擔,從而把CPU從繁雜的I/O任務中解脫出來。
采用通道有以下特點:
o ① DMA(直接存儲器存取)方式顯著地減少了CPU的干預。
o ②只需向I/O通道發送一條I/O指令,即可完成一組相關的讀(或寫)操作及有關控制。
o ③可實現CPU、通道和I/O設備三者的并行操作,從而更有效地提高整個系統的資源利用率。
中斷簡介
中斷源:引起中斷發生的事件
中斷請求:中斷源向CPU發出的請求中斷處理信號
中斷響應:CPU收到中斷請求后轉到相應的事件處理程序的過程
關中斷/開中斷:CPU內部的PSW的中斷允許位被清除/被設置,不允許/允許CPU響應中斷。用于保證某段程序執行的原子性
中斷屏蔽:在中斷請求產生后,系統有選擇地封鎖一部分中斷而允許另一部分仍能得到響應。有些具有最高優先級的中斷不允許被屏蔽
中斷處理層的主要工作有:
o 進行進程上下文的切換
o 對處理中斷信號源進行測試
o 讀取設備狀態和修改進程狀態等
中斷線程保護
中斷處理流程
對I/O設備的控制方式
輪詢的可編程I/O方式
中斷的可編程I/O方式
直接存儲器訪問方式
DMA控制方式的特點:
①數據傳輸的基本單位是數據塊,即在CPU與I/O設備之間,每次傳送至少一個數據塊;
②所傳送的數據是從設備直接送入內存的,或者相反;
③僅在傳送一個或多個數據塊的開始和結束時,才需CPU干預,整塊數據的傳送是在控制器的控制下完成的。
DMA控制器的組成
DMA工作過程
I/O通道控制方式
I/O通道控制方式的引入
I/O通道方式是DMA方式的發展,它可進一步減少CPU的干預,即把對一個數據塊的讀(或寫)為單位的干預,減少為對一組數據塊的讀(或寫)及有關的控制和管理為單位的干預。
可實現CPU、通道和I/O設備三者的并行操作,從而更有效地提高整個系統的資源利用率。
I/O控制方式
磁盤存儲管理
提高磁盤I/O速度的主要途徑:
(1)選擇性能好的磁盤
(2)采用好的磁盤調度算法
(3)設置磁盤高速緩存(Disk Cache)
(4)其它方法
(5)采用高度可靠、快速的容量磁盤系統–磁盤冗余陣列
數據的組織和格式
o 存儲面(surface)
o 磁道(track)
o 柱面
o 扇區(sectors)
磁盤訪問時間分成以下三部分:
尋道時間Ts :
這是指把磁臂(磁頭)移動到指定磁道上所經歷的時間。
s:啟動磁臂的時間
n:磁頭移動n條磁道
m:移動每一條磁道所花費的時間
旋轉延遲時間Tτ:
這是指定扇區移動到磁頭下面所經歷的時間。
例如:
軟盤旋轉速度為 300 r/min或600 r/min,這樣,平均Tτ 為50~100 ms。
硬盤旋轉速度為15 000 r/min,每轉需時4 ms,平均旋轉延遲時間Tτ為2 ms。
傳輸時間Tt:
這是指把數據從磁盤讀出或向磁盤寫入數據所經歷的時間。
Tt 的大小與每次所讀/寫的字節數b 和旋轉速度有關:
r為磁盤每秒鐘的轉數;N為一條磁道上的字節數
磁盤調度算法
先來先服務FCFS
o 根據進程請求訪問磁盤的先后次序進行調度。此算法的優點是公平、簡單,且每個進程的請求都能依次地得到處理,不會出現某一進程的請求長期得不到滿足的情況。
最短尋道時間優先SSTF
o 該算法選擇這樣的進程,其要求訪問的磁道,與當前磁頭所在的磁道距離最近,以使每次的尋道時間最短,
o SSTF算法雖然能獲得較好的尋道性能,但卻可能導致某個進程發生“饑餓”現象。
掃描(SCAN)算法
o SSTF算法雖然能獲得較好的尋道性能,但卻可能導致某個進程發生“饑餓”(Starvation)現象。
o 該算法優先考慮的是磁頭當前的移動方向。例如,磁頭自里向外移動, 并同時自里向外地訪問,直至再無更外的磁道需要訪問時,才將磁臂換向自外向里移動。(又常稱之為電梯調度算法 )
循環掃描(CSCAN)算法
CSCAN算法規定磁頭單向移動,例如,只是自里向外移動,當磁頭移到最外的磁道并訪問后,磁頭立即返回到最里的欲訪問磁道,亦即將最小磁道號緊接著最大磁道號構成循環,進行循環掃描。
第六章 文件管理
文件的概念
文件是存儲和管理數據的容器
若文件中的數據有格式,可能是如下的結構:
文件是指由創建者所定義的、 具有文件名的一組相關元素的集合。
在有結構的文件中,文件由若干個相關記錄組成;
而無結構文件則被看成是一個字符流。
文件在文件系統中是一個基本的管理單元,這個管理單元必然有一組屬性。
文件的屬性
文件的屬性可以包括:
(1) 文件類型
(2) 文件長度
(3) 文件的物理位置
(4) 文件的建立時間
文件系統概念
定義:操作系統中的各類文件、管理文件的軟件,以及管理文件所涉及到的數據結構等信息的集合。
有少數實時操作系統沒有文件系統功能。
絕大多數操作系統都包含文件管理系統部分。
文件系統的功能
o 有效地管理文件的存儲空間;
o 管理文件目錄;
o 完成文件的讀/寫操作;
o 實現文件共享與保護;
o 為用戶提供交互式命令接口和程序調用接口。
文件系統模型
文件操作概述
1.最基本的文件操作有:創建文件、刪除文件。讀文件、寫文件、截斷文件和設置文件的讀/寫位置。
2.文件的“打開”和“關閉”操作:所謂“打開”,是指系統將指名文件的屬性(包括該文件在外存上的物理位置)從外存拷貝到內存打開文件表的一個表目中,并將該表目的編號(或稱為索引)返回給用戶。 利用“關閉”(close)系統調用來關閉此文件,OS將會把該文件從打開文件表中的表目上刪除掉。
3.其它文件操作:對文件屬性的操作,改變文件名、改變文件的擁有者,查詢文件的狀態等;
文件目錄的管理要
如何來組織和訪問大量的文件?
對目錄管理的要求如下:
(1)實現“按名存取”。
(2) 提高對目錄的檢索速度。
(3) 文件共享。
(4) 允許文件重名。
文件控制塊和索引節點
文件控制塊(FCB):用于描述和控制文件的數據結構。
文件目錄:文件控制塊的有序集合。
通常,一個文件目錄也被看做是一個文件,稱為目錄文件。
文件控制塊的內容
基本信息:文件名、文件類型等;
地址信息:卷(存儲文件的設備)、起始地址(起始物理地址)、文件長度(以字節、字或塊為單位)等。
訪問控制信息:文件所有者、訪問信息(用戶名和口令等)、合法操作等;
使用信息:創建時間、創建者身份、當前狀態、最近修改時間、最近訪問時間等。
FCB
目錄結構
單級目錄結構
所有用戶的全部文件目錄保存在一張目錄表中,每個文件的目錄項占用一個表項。
o 單級目錄的優點是簡單且能實現目錄管理的基本功能——按名存取
o 存在下述一些缺點:
(1) 查找速度慢
(2) 不允許重名
(3) 不便于實現文件共享
兩級目錄結構
主文件目錄MFD、用戶文件目錄UFD
o 一定程度解決了重名問題
o 提高了文件目錄檢索效率
o 簡單的文件共享
問題:不便用戶文件的邏輯分類;進一步解決重名、共享、檢索效率等問題
樹形結構目錄
多級目錄結構又稱為樹型目錄結構,主目錄在這里被稱為根目錄,把數據文件稱為樹葉,其它的目錄均作為樹的結點。
樹葉是數據文件。
樹的節點是目錄,或稱為子目錄。
目錄操作
創建目錄:在用戶要創建一個新文件時,只需查看在自己的UFD及其子目錄中,有無與新建文件相同的文件名。若無,便可在UFD或其某個子目錄中增加一個新目錄項。
目錄刪除采用下述兩種方法處理:
(1)不刪除非空目錄。
(2)可刪除非空目錄。
改變目錄:改變工作目錄
移動目錄:將子目錄或者文件移動到其他目錄下。
鏈接操作:通過鏈接讓同一個文件具有多個父目錄。
查找:在目錄中查找某個文件或者子目錄。
目錄查詢技術
線性檢索法
線性檢索法又稱為順序檢索法。
①在單級目錄中,利用用戶提供的文件名,用順序查找法直接從文件目錄中找到指名文件的目錄項。
②在樹型目錄中,用戶提供的文件名是由多個文件分量名組成的路徑名,此時須對多級目錄進行查找。
文件系統外存管理
磁盤管理的主要任務和目標是;
o 有效地利用外存空間
o 提高對文件的訪問速度
o 提高磁盤系統的可靠性
目前,常見的文件磁盤塊的組織方法有:
o 連續組織
o 鏈接組織
o 索引組織
連續組織
假設磁盤的容量是1MB,每個磁盤塊的大小為512個字節
磁盤塊數量:1MB/512B=2048塊
編碼磁盤塊需要位數:2∧10 < 2048 <= 2 ∧11,因此需要11個二進制位
如果文件的長度不大于512K
長度需要10位來表示:512K/512 = 1024, 2∧10 = 1024
因此,每個文件需要在目錄中額外占用21個二進制位。
空閑鏈表法
空閑盤區鏈
o 將磁盤上的所有空閑盤區(每個盤區可包含若干個盤塊)拉成一條鏈。
o 在每個盤區上含有用于指示下一個空閑盤區的指針和能指明本盤區大小(盤塊數)的信息。
o 分配盤區的方法與內存的動態分區分配類似,通常采用首次適應算法。
o 在回收盤區時,同樣也要將回收區與相鄰接的空閑盤區相合并。
o 為了提高對空閑盤區的檢索速度,可以采用顯式鏈接方法,亦即,在內存中為空閑盤區建立一張鏈表。
o 每個分區結點內容:起始盤塊號、盤塊數、指向下一個空閑盤區的指針。
問題
o 一段時間以后,可能會使空閑分區鏈表中包含太多小分區,使文件分配到的存儲空間過分離散。
o 刪除一個由許多離散小分區組成的文件時,將回收的小分區鏈接到空閑分區鏈表中需要很長時間。
o 若一個文件申請連續存儲空間,則需要花費較長的時間查找相鄰的空閑分區。
o 因此,這種空閑空間組織方法適合于非連續存儲文件。
位示圖
利用二進制位0、1表示存儲空間中存儲塊的使用狀態。空閑分區:0,已分配分區:1(或者相反)。
磁盤上的所有盤塊都有一個二進制位與之對應,這樣,由所有盤塊所對應的位構成一個集合,稱為位示圖。
通常可用m × n 個位數來構成位示圖,并使m × n等于磁盤的總塊數。
位示圖也可描述為一個二維數組map:
Var map: array of bit;
位示圖優點
o 可以容易地找到一個或一組連續的空閑分區。
o 例如,我們需要找到4個相鄰接的空閑盤塊,這只需在位示圖中找出4個其值連續為“0”的位即可。
位示圖的其他問題
o 一個位示圖需要占用的存儲空間大小為:
磁盤容量(字節數)/ (8 數據塊大小)*
o 對于容量較小的磁盤,位示圖占用的空間會很小。
o 但是,對于一個16GB的磁盤,若數據塊大小為512字節,則位示圖大小為4MB,大約需要占用8000個磁盤塊的存儲空間。
總結
重點:
o 文件和文件系統的概念;文件是具有符號名的信息(數據)項的集合;文件是具有符號名的記錄的集合;文件是具有符號名的數據項的集合。
o 文件邏輯結構;順序文件、索引順序文件、索引文件、HASH文件;
o 磁盤存儲分配方法;連續分配、鏈接分配、索引分配;
o 文件目錄及文件控制塊;文件存儲器分區和空間管理。
o 磁盤存儲管理;位示圖、空閑鏈表、索引。
難點:
o 磁盤存儲管理;
o 位示圖、空閑鏈表、
參考鏈接:
https://jason-xy.cn/2021/06/osreview/
總結
以上是生活随笔為你收集整理的Computer OS系统基本原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenCL编程详细解析与实例
- 下一篇: IP 公司与GPU IP