408計算機學科專業基礎綜合——作業系統
第1章 作業系統概述
1.1 作業系統的基本概念
作業系統是指控制和管理整個計算機系統的硬體和軟體資源,併合理地組織排程計算機的工作和資源的分配,以提供給使用者和其他軟體方便的介面和環境的程式集合。
併發是指兩個多多個事件在同一時間間隔內發生,引入程序的目的是使程式能併發執行。
注意:同一時間間隔(併發)和同一時刻(並行)的區別。微觀上這些程式還是分時交替執行。
共享是指系統中的資源可供記憶體中多個併發執行的程序共同使用,可分為互斥共享方式、同時訪問方式。
併發和共享是作業系統兩個最基本的特徵。
虛擬是指把一個物理上的實體變為若干個邏輯上的對應物,如虛擬處理器、虛擬記憶體、虛擬外部裝置。
非同步
作業系統作為計算機系統資源的管理者:處理機管理、儲存器管理、檔案管理、裝置管理
作業系統作為使用者與計算機硬體系統之間的介面:
1)命令介面:聯機命令介面又稱互動式命令介面,適用於分時或實時系統的介面,由一組鍵盤操作命令組成;離線命令介面又稱批處理命令介面,即適用於批處理系統,由一組作業控制命令組成。
2)程式介面:由一組系統呼叫命令(簡稱系統呼叫,也稱廣義指令)組成
作業系統用作擴充機器
選擇題
8.單處理機系統中,可並行的是(II、III、IV)
I. 程序與程序
II. 處理機與裝置
III. 處理機與通道
IV. 裝置與裝置
12.作業系統提供給程式設計人員的介面是(系統呼叫)
19.計算機開機後,作業系統最終被載入到(RAM)
1.2 作業系統的發展與分類
手工操作階段(此階段無作業系統)
批處理階段(作業系統開始出現):
1)單道批處理系統:自動性、順序性、單道性
2)多道批處理系統:多道、巨集觀上並行、微觀上序列
分時作業系統:同時性、互動性、獨立性、及時性
實時作業系統:及時性、可靠性
網路作業系統:網路中各種資源的共享以及各臺計算機之間的通訊
分散式計算機系統:分佈性、並行性
分散式作業系統與網路作業系統本質上的不同之處在於分散式作業系統中,若干臺計算機相互協同完成同一任務。
個人計算機作業系統
選擇題
1.提高單機資源利用率的關鍵技術是(多道程式設計技術)
2.批處理系統的主要缺點是(無互動能力)
8.實時系統的程序排程,通常採用(搶佔式的優先順序高者優先)演算法
9.(資源利用率)不是設計實時作業系統的主要追求目標
10.(航空訂票、機床控制、股票交易系統)應用工作最好採用實時作業系統平臺
11.分時系統的一個重要效能是系統的響應時間,對作業系統(優先順序+非搶佔式排程演算法)因素進行改進有利於改善系統的響應時間
12.分時系統追求的目標是(比較快速響應使用者)
13.在分時系統中,時間片一定時,(使用者數越多)響應時間越長(T=Q*N,Q為時間片,N為使用者數)
1.3 作業系統的執行環境
作業系統核心包括:時鐘管理、中斷機制、原語、系統控制的資料結構及處理
中斷,也稱外中斷,指來自CPU執行指令以外的事件的發生
異常,也稱內中斷、例外或陷入,指源自CPU執行指令內部的事件
如果程式的執行由使用者態轉到核心態,會用到訪管指令,訪管指令是在使用者態使用的,所以它不可能是特權指令。
選擇題
2.下列說法正確的是(II、IV)
I. 批處理的主要缺點是需要大量記憶體(錯誤,缺少互動性)
II. 當計算機提供了核心態和使用者態時,輸入/輸出指令必須在核心態下執行(正確)
III. 作業系統中採用多道程式設計技術的最主要原因是為了提高CPU和外部裝置的可靠性(錯誤,提高系統資源利用率和吞吐量)
IV. 作業系統中,通道技術是一種硬體技術(正確)
4.(中斷處理)是作業系統必須提供的功能
5.使用者程式在使用者態下要使用特權指令引起的中斷屬於(訪管中斷)
8.在中斷髮生後,進入中斷處理的程式屬於(作業系統程式)
10.下列選項中,在使用者態執行的是(A)
A 命令解釋程式(命令介面)
B 缺頁處理程式
C 程序排程程式
D 時鐘中斷處理程式
11.下列選項中,不可能在使用者態發生的事件是(C)
A 系統呼叫 B 外部中斷 C 程序切換 D 缺頁
13.訪管指令(僅在使用者態下)使用
15.在作業系統中,下列只能在核心態下執行的指令是(廣義指令)(呼叫可能在使用者態)
16.輸入/輸出指令必須在核心態下執行
17.當CPU處於核心態時,可以執行的指令是(除訪管指令的全部指令)
第2章 程序管理
2.1 程序與執行緒
程序控制塊PCB,描述程序的基本情況和執行狀態,進而控制和管理程序。
由程式段、相關資料段和PCB三部分構成了程序映像(程序實體)。
注意:程序映像是靜態的,程序是動態的。PCB是程序存在的唯一標誌
程序是程序實體的執行過程,是系統進行資源分配合排程的一個獨立單位,其特徵包括:動態性(最基本)、併發性、獨立性、非同步性、結構性。
程序的狀態:執行、就緒、阻塞(等待)、建立、結束
就緒->執行
執行->就緒
執行->阻塞(主動的行為)
阻塞->就緒(被動的行為)
程序:
1)程序控制塊PCB:程序建立時,作業系統就新建一個PCB,它之後就常駐記憶體,在程序結束時刪除,PCB是程序實體的一部分,是程序存在的唯一標誌
2)程式段
3)資料段
程序的通訊是指程序之間的資訊交換
1)共享儲存:基於資料結構的共享(低階);基於儲存區的共享(高階)
2)訊息傳遞:直接通訊方式、間接通訊方式
3)管道通訊:管道是指用於連線一個讀程序和一個寫程序以實現它們之間通訊的一個共享檔案
引入程序的目的,是為了更好地使多道程式併發執行,以提高資源利用率和系統吞吐量,增加併發程式
引入執行緒的目的,是為了減小程式在併發執行時所付出的時空開銷,提高作業系統的併發效能
執行緒:“輕量級程序”,CPU執行單元,也是程式執行流的最小單元,由執行緒ID、程式計數器、暫存器集合和堆疊組成,執行緒自己不擁有系統資源
執行緒是獨立排程的基本單位,程序是擁有資源的基本單位。在同一程序中,執行緒的切換不會引起程序切換;在不同程序中進行執行緒切換,會引起程序切換。
執行緒的屬性:
1)執行緒不擁有系統資源
2)不同的執行緒可以執行相同的程式
3)同一程序中的各個執行緒共享該程序所擁有的資源
4)執行緒是處理機的獨立排程單位,多個執行緒是可以併發執行的
使用者級執行緒:有關執行緒管理的所有工作都由應用程式完成,核心意識不到執行緒的存在
核心級執行緒:執行緒管理的所有工作都由核心完成
組合方式的多執行緒實現:核心級執行緒數目小於等於使用者級執行緒的數目
多執行緒模型:
1)多對一模型:將多個使用者級執行緒對映到一個核心級執行緒
2)一對一模型:每個使用者級執行緒對映到一個核心級執行緒
3)多對多模型:將n個使用者級執行緒對映到m個核心級執行緒上,要求m≤n
選擇題
4.程序與程式的根本區別是(靜態和動態特點)
7.一個程序的狀態變化(不一定)引起另一個程序的狀態變化
12.併發程序失去封閉性,是指(併發程序共享變數,其執行結果與速度有關)
16.在多對一的執行緒模型中,當一個多執行緒程序中的某個執行緒被阻塞後(整個程序都將阻塞)
20.全域性賦值變數(正文段)、未賦值的區域性變數(棧段)、函式呼叫實參傳遞值(棧段)、用malloc要求動態分配的儲存區(堆段)、常量值(正文段)、程序的優先順序(PCB)
22.系統動態DLL庫中的系統執行緒,被不同的程序所呼叫,它們是(相同)的執行緒
27.在具有通道裝置的單處理器系統中實現併發技術後(各程序在某一時間段內併發執行,CPU與I/O裝置間並行工作)
29.對程序的管理和控制使用(原語)
41.(一個程序從執行狀態變為就緒狀態)必會引起程序切換
2.2 處理機排程
排程層次:
作業排程(高階排程):選擇處於後備狀態的作業分配資源,發生頻率最低
記憶體排程(中級排程):選擇暫時不能執行的程序調出記憶體,發生頻率中等
程序排程(低階排程):選擇就緒佇列中合適的程序分配處理機,發生頻率最高,最基本,不可或缺
程序排程方式:
剝奪式排程方式,又稱搶佔方式:有更為重要或緊迫的程序需要使用處理,立即分配
非剝奪式排程方式,又稱非搶佔方式:有更為重要或緊迫的程序需要使用處理機,仍讓當前程序繼續執行
週轉時間 = 作業完成時間 - 作業提交時間
平均週轉時間 = (作業1的週轉時間 + … + 作業n的週轉時間)/ n
帶權週轉時間 = 作業週轉時間 / 作業實際執行時間
平均帶權週轉時間 = (作業1的帶權週轉時間 + … + 作業n的帶權週轉時間)/ n
排程演算法:
先來先服務FCFS:選擇最先進入佇列的,屬於不可剝奪演算法,對長作業比較有利,但對短作業不利,有利於CPU繁忙型作業,不利於I/O繁忙型作業
短作業優先SJF:選擇完成時間最短的,對長作業不利,“飢餓”現象,SJF的平均等待時間、平均週轉時間最少
優先順序排程:選擇優先級別最高的
1)非剝奪式優先順序排程演算法
2)剝奪式優先順序排程演算法
1)靜態優先順序
2)動態優先順序
高響應比優先:選擇響應比最高的,對FCFS排程和SJF演算法的一種平衡,有利於短作業,克服了“飢餓”,兼顧了長作業
響應比Rp=(等待時間+要求服務時間)/ 要求服務時間
時間片輪轉:總是選擇就緒佇列中第一個程序,但僅能執行一個時間片,主要適用於分時系統
多級反饋佇列:時間片輪轉排程演算法和優先順序排程演算法的綜合和發展,終端型作業使用者:短作業優先;短批處理作業使用者:週轉時間較短;長批處理作業使用者:不會長期得不到處理
1)應設定多個就緒佇列,併為各個佇列賦予不同的優先順序
2)賦予各個佇列中程序執行時間片的大小也各不相同,在優先順序越高的佇列中,每個程序的執行時間片就越小
選擇題
6.若每個作業只能建立一個程序,為了照顧短作業使用者,應採用(短作業優先排程演算法);為了照顧緊急作業使用者,應採用(剝奪式優先順序排程演算法);為了實現人機互動,應採用(時間片輪轉排程演算法);而能使短作業、長作業和互動作業使用者都滿意,應採用(多級反饋佇列排程演算法)
14.(時間片輪轉)排程演算法是絕對可搶佔的
29.滿足短作業優先且不會發生飢餓現象的是(高響應比)排程演算法
30.不可能導致飢餓現象的是(時間片輪轉)排程演算法
2.3 程序同步
同步:需要在某些位置上協調程序之間的工作次序而等待、傳遞資訊所產生的制約關係
互斥:當一個程序進入臨界區使用臨界資源時,其他要求進入臨界區必須等待
臨界資源:一次僅允許一個程序使用的資源
對臨界資源的訪問,必須互斥地進行,在每個程序中,訪問臨界資源的那段程式碼稱為臨界區
臨界資源的訪問過程分為四個部分:
1)進入區
2)臨界區
3)退出區
4)剩餘區
原則:空閒讓進、忙則等待、有限等待、讓權等待
實現臨界區互斥的基本方法:
軟體實現
1)單標誌法:違背“空閒讓進”原則
2)雙標誌法先檢查:違背“忙則等待”原則
3)雙標誌法後檢查:會導致“飢餓”現象
4)皮特森演算法:單標誌法和雙標誌法後檢查的結合
硬體實現
中斷遮蔽法:進區關中斷,出區開中斷
硬體指令法:設立原子操作指令:TestAndSet指令、Swap指令
訊號量:只能被兩個標準的原語wait(S)和signal(S)來訪問,利用PV操作實現互斥
原語是指完成某種功能且不被分割不被中斷執行的操作序列。
當訊號量K>0時,表示還有K個相關資源可用;
當訊號量K=0時,表示臨界區外無程序等待;
當訊號量K<0時,表示臨界區中有一個程序,且臨界區外有|K|個程序在等待該資源;
當資源訊號量小於0時,表示所有資源已經全部用完,而且還有程序正在等待該資源,等待的程序數就是資源量的絕對值。
管程:由一組資料以及定義在這組資料之上的對這組資料的操作組成的軟體模組,這組操作能初始化並改變管程的資料和同步過程
管程的組成:
1)區域性於管程的共享結構資料說明
2)對該資料結構進行操作的一組過程
3)對區域性於管程的共享資料設定初始值的語句
管程的基本特性:
1)區域性於管程的資料只能被區域性於管程內的過程所訪問
2)一個程序只有通過呼叫管程內的過程才能進入管程訪問共享資料
3)每次僅允許一個程序在管程內執行某個內部過程
經典同步問題:
生產者-消費者問題
讀者-寫者問題
哲學家進餐問題
吸菸者問題
選擇題
1.臨界區是指程序中用於訪問共享資源的那段程式碼
7.臨界區是指併發程序訪問共享變數段的(程式碼程式)
11.在作業系統中,要對併發程序進行同步的原因是(併發程序是非同步的)
13.在作業系統紅,PV操作是一種(低階程序通訊原語)
14.P操作可能導致(程序阻塞)
18.在用訊號量機制實現互斥時,互斥訊號量的初值為(1)
19.用PV操作實現程序同步,訊號量的初值為(由使用者確定)
32.如果系統有n個程序,則就緒佇列中程序的個數最多有(n-1)個;阻塞佇列中程序的個數最多有(n)個
33.PV操作是一種低階程序通訊原語,PV操作是由兩個不可被中斷的過程組成
2.4 死鎖
死鎖:多個程序因競爭資源而造成的一種僵局(互相等待),若無外力作用,這些程序都將無法向前推進
死鎖產生的原因
1)系統資源的競爭:只有對不可剝奪資源的競爭才可能產生死鎖,對可剝奪資源的競爭是不會引起死鎖的
2)程序推進順序非法:請求和釋放資源的順序不當;訊號量使用不當也會造成死鎖
3)死鎖產生的必要條件:
互斥:在一段時間內某資源僅為一個程序所佔有
不剝奪:程序所獲得的資源在未使用完畢之前,不能被其他程序強行奪走(只能是主動釋放)
請求和保持:程序已經保持了至少一個資源,但又提出了新的資源請求,而該資源已被其他程序佔有
迴圈等待:存在一種程序資源的迴圈等待鏈,鏈中每一個程序已獲得的資源同時被鏈中下一個程序所請求
資源分配圖含圈而系統又不一定有死鎖的原因是同類資源數大於1。但若系統中每類資源都只有一個資源,則資源分配圖含圈就變成了系統出現死鎖的充分必要條件。
資源分配策略 | 各種可能模式 | 主要優點 | 主要缺點 | |
---|---|---|---|---|
死鎖預防 | 保守,寧可資源閒置 | 一次請求所有資源,資源剝奪,資源按序分配 | 適用於做突發式處理的程序,不必進行剝奪 | 效率低,程序初始化時間延長;剝奪次數過多;不便靈活申請新資源 |
死鎖避免 | 是“預防”和“檢測”的折中(在執行時判斷是否死鎖) | 尋找可能的安全允許順序 | 不必進行剝奪 | 必須知道將來的資源需求;程序不能被長時間阻塞 |
死鎖檢測 | 寬鬆,只要允許就分配資源 | 定期檢查死鎖是否已經發生 | 不延長程序初始化時間,允許對死鎖進行現場處理 | 通過剝奪解除死鎖,造成損失 |
死鎖預防
破壞互斥條件:有些資源必須互斥使用,無法破壞互斥條件
破壞不剝奪條件:增加系統開銷,降低吞吐量
破壞請求和保持條件:嚴重浪費系統資源,還可能導致飢餓現象
破壞迴圈等待條件:浪費系統資源,並造成程式設計不便
死鎖避免
系統安全狀態:能找到一個分配資源的序列能讓所有程序都順利完成
並非所有的不安全狀態都是死鎖狀態,但當系統進入不安全狀態後,便可能進入死鎖狀態;反之,只要系統處於安全狀態,系統便可以避免進入死鎖狀態。
銀行家演算法:採用預分配策略檢查分配完成時系統是否處在安全狀態
死鎖檢測
1)資源分配圖:圓圈代表一個程序,框代表一類資源,程序到資源的有向邊叫請求邊,資源到程序的邊叫分配邊
2)死鎖定理:S為死鎖的條件是當且僅當S狀態的資源分配圖是不可完全簡化的;若能消去圖中所有的邊,則稱該圖是可完全簡化的。
死鎖解除
資源剝奪法:掛起某些死鎖程序並搶奪它的資源,以便讓其他程序繼續推進
撤銷程序法:強制撤銷部分、甚至全部死鎖程序並剝奪這些程序的資源
程序回退法:讓一個或多個程序回退到足以迴避死鎖的地步,程序回退時自願釋放資源而不是被剝奪
選擇題
3.一次分配所有資源的方法可以預防死鎖的產生,它破壞的死鎖四個必要條件中的(佔有並請求)
5.死鎖的避免是根據(防止系統進入不安全狀態)採取措施實現的
12.屬於死鎖預防策略的是(B)
A 銀行家演算法(避免)
B 資源有序分配演算法(預防)
C 死鎖檢測演算法(檢測)
D 資源分配圖化簡法(檢測)
25.死鎖定理是用於處理死鎖的(檢測死鎖)方法
第3章 記憶體管理
3.1 記憶體管理概念
記憶體管理的功能:
1)記憶體空間的分配與回收
2)地址轉換:邏輯地址->實體地址
3)記憶體空間的擴充:利用虛擬儲存技術或自動覆蓋技術,從邏輯上擴充記憶體
4)儲存保護
編譯、連結、裝入
靜態連結:在程式執行之前,先將各目標模組及它們所需的庫函式連結成一個完整的可執行程式,以後不再拆開
裝入時動態連結:將使用者源程式編譯後所得到的一組目標模組,在裝入記憶體時,採用邊裝入邊連結的連結方式
執行時動態連結:對某些目標模組的連結,是在程式執行中需要該目標模組時,才對它進行的連結,便於修改和更新,便於實現對目標模組的共享
絕對裝入:在編譯時,如果知道程式將駐留在記憶體的某個位置,編譯程式將產生絕對地址的目的碼。絕對裝入程式按照裝入模組中的地址,將程式和資料裝入記憶體。只適用於單道程式環境。
可重定位裝入:根據記憶體當前情況,將裝入模組裝入到記憶體的適當位置,裝入時對目標程式中指令和資料的修改過程稱為重定位,地址變換通常是在裝入時一次完成的,所以又稱為靜態重定位。靜態重定位的特點是在一個作業裝入記憶體時,必須分配其要求的全部記憶體空間,如果沒有足夠的記憶體,就不能裝入該作業。作業一旦進入記憶體後,在整個執行期間不能在記憶體中移動,也不能再申請記憶體空間。
動態執行時裝入:也稱動態重定位,裝入程式並不立即把裝入模組中的相對地址轉換為絕對地址,而是把這種地址轉換推遲到程式真正要執行時才進行。裝入記憶體後的所有地址均為相對地址,需要一個重定位暫存器的支援。動態重定位的特點是可以將程式分配到不連續的儲存空間;在程式執行之前可以只裝入它的部分程式碼即可投入執行,然後在程式執行期間,根據需要動態申請分配記憶體;便於程式段的共享。
當裝入程式將可執行程式碼裝入記憶體時,必須通過地址轉換將邏輯地址轉換成實體地址,這個過程稱為地址重定位。
記憶體保護
1)在CPU中設定一對上、下限暫存器,存放使用者作業在主存中的下限和上限地址,每當CPU訪問一個地址時,分別和兩個暫存器的值相比,判斷有無越界。
2)採用重定位暫存器(基址暫存器)和界地址暫存器(限長暫存器),記憶體管理機構動態地將邏輯地址與界地址暫存器進行比較,如果未發生地址越界,則加上重定位暫存器的值後對映成實體地址,再送交記憶體單元。
擴充記憶體
1)覆蓋:把使用者空間分成一個固定區和若干個覆蓋區,將經常活躍的部分放在固定區,其餘部分按呼叫關係分段,首先將那些即將要訪問的段放入覆蓋區,其他段放在外存中,在需要呼叫前,系統再將其調入覆蓋區,替換覆蓋區中原有的段。特點是打破了必須將一個程序的全部資訊裝入主存後才能執行的限制。
2)交換:把處於等待狀態(或在CPU排程原則下被剝奪執行權利)的程式從記憶體移到輔存,把記憶體空間騰出來,這一過程叫“換出”,把準備好競爭CPU執行的程式從輔存移到記憶體,這一過程叫“換入2”
交換技術主要是在不同程序(或作業)之間進行,而覆蓋則用於同一個程式或程序中。
連續分配管理方式:
單一連續分配:優點是簡單、無外部碎片,可以採用覆蓋技術;缺點是隻能用於單使用者、單任務的作業系統中,有內部碎片,儲存器的利用率極低
固定分割槽分配——內部碎片
動態分割槽分配,可變分割槽分配,產生外部碎片,可用緊湊技術解決
1)首次適應演算法:空閒分割槽以地址遞增的次序連結,分配記憶體時順序查詢,找到大小能滿足要求的第一個空閒分割槽
2)最佳適應演算法:空閒分割槽以容量遞增形成分割槽鏈,找到第一個能滿足要求的空閒分割槽
3)最壞適應演算法:又稱最大適應演算法,空閒分割槽以容量遞減的次序連結,找到第一個也即是最大的分割槽
4)鄰近適應演算法:又稱迴圈首次適應演算法,分配記憶體時從上次查詢結束的位置開始繼續查詢
首次適應演算法可能比最佳適應演算法效果好,而它們兩者一定比最大適應演算法效果好。
非連續分配管理方式
1)基本分頁儲存管理:不會產生外部碎片,地址空間是一維的
程序中的塊稱為頁,記憶體中的塊稱為頁框(或頁幀),外存也以同樣的單位進行劃分,直接稱為塊。
地址結構:0~11位為頁內地址,即每頁大小為4KB;12 ~ 32位為頁號,地址空間最多允許有2^20頁
31…12 | 11…0 |
---|---|
頁號P | 頁內偏移量W |
頁表由頁表項組成,頁表項包括兩部分,第一部分為頁號,第二部分為實體記憶體中的塊號,系統為每個程序建立一張頁表,記錄頁面在記憶體中對應的物理塊號,實現從頁號到物理塊號的地址對映。
基本地址變換結構(重要,限於篇幅):
頁面大小L,邏輯地址A,物理塊號b
頁號P=A/L,頁內偏移量W=A%L
實體地址E=b*L+W
快表:具有並行查詢能力的高速緩衝儲存器,用來存放當前訪問的若干頁表項,以加速地址變換的過程
建立多級頁表的目的在於建立索引,不用浪費主存空間去儲存無用的頁表項,也不用盲目地順序式查詢頁表項
基本分段儲存管理:段內要求連續,段間不要求連續,地址空間是二維的
在頁式系統中,邏輯地址的頁號和頁內偏移量對使用者是透明的;在段式系統中,段號和段內偏移量必須由使用者顯示提供。
地址結構:段號為16位,段內偏移量為16位,則一個作業最多有2^16=65536個段,最大段長為64KB
31…16 | 15…0 |
---|---|
段號S | 段內偏移量W |
段表用於實現從邏輯段到實體記憶體區的對映
地址變換結構
段頁式儲存管理:段表只有一個,而頁表可能有多個,地址空間是二維的
地址結構:
段號S | 頁號P | 頁內偏移量W |
---|
選擇題
1.在虛擬記憶體管理中,地址變換機構將邏輯地址變換為實體地址,形成該邏輯地址的階段是(連結)
3.在使用交換技術時,如果一個程序正在(I/O操作)時,則不能交換出主存。
5.分割槽分配記憶體管理方式的主要保護措施是(界地址保護)
7.段頁式儲存管理中,地址對映表是(每個程序一張段表,每個段一張頁表)
8.記憶體保護需要由(作業系統和硬體機構合作)完成,以保證程序空間不被非法訪問
13.動態重定位是在作業的(執行過程)中進行的
17.分頁式儲存管理、固定分割槽式儲存管理、段頁式儲存管理會產生內部碎片,分段式儲存管理產生外部碎片
21.採用分頁或分段管理後,提供給使用者的實體地址空間(不能確定)
22.分頁系統中的頁面是為(作業系統所感知的)
24.對重定位儲存管理方式,應(在整個系統中設定一個重定位暫存器)
25.採用段式儲存管理時,一個程式如何分段式在(使用者程式設計)時決定的
30.動態分割槽又稱為可變式分割槽,它是在系統執行過程中(在作業裝入時)動態建立的
42.在段式分配中,CPU每次從記憶體中取一次資料需要(2)次訪問記憶體
43.在段頁式分配中,CPU每次從記憶體中取一次資料需要(3)次訪問記憶體
48.段頁式儲存管理汲取了頁式管理和段式管理的長處,其實現原理結合了頁式和段氏管理的基本思想,及(用分段方法來分配和管理使用者地址空間,用分頁方法來管理物理儲存空間)
53.屬於多級頁表優點的是(D)
A 加快地址變換速度(錯誤,是減慢)
B 減少缺頁中斷次數(錯誤,是增加)
C 減少頁表項所佔位元組數
D 減少頁表所佔的連續記憶體空間
3.2 虛擬記憶體管理
區域性性原理:時間區域性性、空間區域性性
虛擬儲存器三個特徵:多次性、對換性、虛擬性
虛擬記憶體的實現:需要有一定的硬體支援
1)請求分頁儲存管理 2)請求分段儲存管理 3)請求段頁式儲存管理
頁面置換演算法:
1)最佳置換OPT:被淘汰頁面是以後永不使用的,或者是在最長時間內不再被訪問的頁面,該演算法無法實現
2)先進先出FIFO:優先淘汰最早進入記憶體的頁面,即在記憶體中駐留時間最久的頁面,當所分配的物理塊數增大而頁故障數不減反增的異常現象稱為Belady異常,LRU和OPT不會出現該異常
3)最近最久未使用LRU:認為過去一段時間內未訪問過的頁面,在最近的將來可能也不會被訪問;需要暫存器和棧的硬體支援,是堆疊類演算法,不可能出現Belady異常
4)時鐘CLOCK置換演算法:又稱為最近未用NRU演算法
改進型的CLOCK演算法:
1)從指標的當前位置開始,掃描幀緩衝區,在這次掃描過程中,對使用位不做任何修改,選擇遇到的第一個幀(u=0,m=0)用於替換
2)如果第1步失敗,則重新掃描,查詢(u=0,m=1)的幀。選擇遇到的第一個這樣的幀用於替換。在這個掃描過程中,對每個跳過的幀,把它的使用位設定成0(u=0)
3)如果第2步失敗,指標將回到它的最初位置,並且集合中所有幀的使用位均為0,重複第1步,並且如果有必要,重複第2步,這樣就可以找到供替換的幀。
改進型的CLOCK演算法優於簡單CLOCK演算法之處在於替換時首選沒有變化的頁。
頁面分配策略:
1)固定分配區域性置換
2)可變分配全域性置換
3)可變分配區域性置換
調入頁面的時機:
1)預調頁策略
2)請求調頁策略
預調頁實際上就是執行前的調入,請求調頁實際上就是執行期間調入。
請求分頁系統中的外存分為兩部分:用於存放檔案的檔案區和用於存放對換頁面的對換區。對換區通常是採用連續分配方式,而檔案區採用離散分配方式,故對換區的磁碟I/O速度比檔案區的更快
1)系統擁有足夠的對換區空間:可以全部從對換區調入所需頁面
2)系統缺少足夠的對換區空間:凡不會被修改的檔案都直接從檔案區調入;而當換出這些頁面時,由於它們未被修改而不必再將它們換出。但對於那些可能被修改的部分,換出時須調到對換區,以後需要時再從對換區調入
3)UNIX方式:未執行過的頁面,都應從檔案區調入,曾經執行過但又被換出的頁面,由於是被放在對換區,因此下次調入時應從對換區調入
抖動(顛簸):剛剛換出的頁面馬上又要換入主存,剛剛換入的頁面馬上就要換出主存,頻繁的頁面排程行為。如果一個程序在換頁上的時間多於執行時間,那麼這個程序就在顛簸。
頻繁的發生缺頁中斷(抖動),其主要原因是某個程序頻繁訪問的頁面數目高於可用的物理頁幀數目。
**工作集(駐留集)**是指在某段時間間隔內,程序要訪問的頁面集合。經常被使用的頁面需要在工作集中,而長期不被使用的頁面要從工作集中被丟棄。
工作集模型的原理是:讓作業系統跟蹤每個程序的工作集,併為程序分配大於其工作集的物理塊。
選擇題
1.下列關於虛擬儲存器的敘述中,正確的是(虛擬儲存只能基於非連續分配技術)
2.請求分頁儲存管理中,若把頁面尺寸增大一倍而且可容納的最大頁數不變,則在程式順序執行時缺頁中斷次數會(減少)
3.程序在執行中發生了缺頁中斷,經作業系統處理後,應讓其執行(被中斷的那一條)指令
9.(不必將作業全部裝入記憶體)是請求分頁儲存管理方式和基本分頁儲存管理方式的區別
14.虛擬儲存器的最大容量(由計算機的地址結構決定)
16.引起LRU演算法的實現耗費高的原因是(需要對所有的頁進行排序)
20.使用(覆蓋、交換)方法可以實現虛擬儲存
3.3 本章疑難點
分頁管理 | 分段管理 | |
---|---|---|
目的 | 頁是資訊的物理單位,分頁是為實現離散分配方式,提高記憶體的利用率 | 段是資訊的邏輯單位,是為了能更好地滿足使用者的需要 |
長度 | 頁的大小固定且由系統決定,分為頁號和頁內地址,在系統中只能有一種大小的頁面 | 段的長度不固定,決定於使用者所編寫的程式 |
地址空間 | 一維的,即單一的線性地址空間,程式設計師只需利用一個記憶符,即可表示一個地址 | 二維的,需給出段名和段內地址 |
碎片 | 有內部碎片無外部碎片 | 有外部碎片無內部碎片 |
共享和動態連結 | 不容易實現 | 容易實現 |
第4章 檔案管理
4.1 檔案系統基礎
檔案是以計算機硬碟為載體儲存在計算機上的資訊集合。在系統執行時,計算機以程序為基本單位進行資源的排程和分配,而在使用者進行的輸入、輸出中,則以檔案為基本單位。
無結構檔案:又稱流式檔案,將資料按順序組織成記錄並積累儲存
有結構檔案:又稱記錄式檔案,由一組相似記錄組成
檔案的屬性:
1)名稱:唯一
2)識別符號:唯一標籤,對人不可讀的一種內部名稱
3)型別
4)位置
5)大小
6)保護
7)時間、日期和使用者標識
所有檔案的資訊都儲存在目錄結構中,而目錄結構儲存在外存上,目錄條目包括檔名稱及其唯一識別符號。
檔案的基本操作:
1)建立檔案
2)寫檔案
3)讀檔案
4)檔案重定位(檔案定址)
5)刪除檔案
6)截斷檔案
系統呼叫open通常返回一個指向開啟檔案表中的一個條目的指標,通過使用該指標(而非檔名)進行所有I/O操作。在open呼叫完成之後,作業系統對該檔案的任何操作,都不再需要檔名,只需要open呼叫返回的指標。
無結構檔案:又稱流式檔案,將資料按順序組織成記錄並積累儲存,如源程式檔案、目的碼檔案等
有結構檔案:又稱記錄式檔案,由一組相似記錄組成
1)順序檔案
串結構:記錄之間的順序與關鍵字無關
順序結構:記錄之間的順序與關鍵字有關
2)索引檔案:為變長檔案建立索引表,提高查詢速度,變長記錄檔案只能順序查詢,索引表本身是定長記錄的順序檔案
3)索引順序檔案:順序檔案和索引檔案的結合
4)直接檔案或雜湊檔案:通過雜湊函式直接決定記錄的實體地址,沒有順序的特性
檔案控制塊:用來存放控制檔案需要的各種資訊的資料結構,以實現“按名存取”。FCB的有序集合稱為檔案目錄,一個FCB就是一個檔案目錄項。為了建立一個新檔案,系統將分配一個FCB並存放在檔案目錄中,成為目錄項。
FCB主要包含以下資訊:基本資訊、存取控制資訊、使用資訊
單級目錄結構:在整個檔案系統中只建立一張目錄表,每個檔案佔一個目錄項
兩級目錄結構:將分件目錄分成主檔案目錄和使用者檔案目錄
多級目錄結構(樹形目錄結構):可以很方便地對檔案進行分類
無環圖目錄結構:實現檔案共享
檔案共享
1)基於索引結點的共享方式(硬連結)
2)利用符號鏈實現檔案共享(軟連結)
硬連結和軟連結都是檔案系統中的靜態共享方法,硬連結的查詢速度會比軟連結快。
檔案保護
1)口令保護:通過口令訪問檔案,時間和空間開銷不多,缺點是口令直接存在系統內部,不夠安全
2)加密保護:對檔案進行加密處理,節省了儲存空間,不過編碼和譯碼要花費一定時間
3)訪問控制:根據訪問者的身份進行限制
選擇題
1.設定當前工作目錄的主要目的是(加快檔案的檢索速度)
3.從使用者的觀點看,作業系統中引入檔案系統的目的是(實現對檔案的按名存取)
5.開啟檔案操作的主要工作是(把指定檔案的目錄複製到記憶體指定的區域)
6.UNIX作業系統中,輸入/輸出裝置看做是(特殊檔案)
13.使用者在刪除某檔案的過程中,作業系統不可能執行的操作是(刪除此檔案所在的目錄)
17.檔案系統採用多級目錄結構的目的是(解決命名衝突)
24.對一個檔案的訪問,常由(使用者訪問許可權和檔案屬性)共同限制
4.2 檔案系統實現
目錄實現
1)線性列表:使用儲存檔名和資料塊指標的線性表
無序:查詢檔案較慢,新建檔案較快
有序:查詢檔案較快,新建檔案較慢
2)雜湊表:根據檔名得到一個值,並返回一個指向線性列表中元素的指標
查詢、新建速度都較快,要處理衝突
檔案實現
檔案分配方式:
1)連續分配:在磁碟上連續存放檔案,尋道數和尋道時間最小,支援順序訪問和直接訪問
優點:實現簡單、存取速度快
缺點:檔案長度不宜動態增加,會產生外部碎片,只適用於長度固定的檔案
2)連結分配:採取離散分配的方式,消除了外部碎片,提高磁碟空間的利用率
隱式:採用類似連結串列的結構,無法直接訪問盤塊,只能通過指標順序訪問檔案
顯式:把隱式檔案中的指標單獨抽離出來,存放在記憶體的一張連結表(檔案分配表)中,該表在整個磁碟僅設定一張,每個表項中存放對應塊的下一塊連結指標,即下一個盤塊號
3)索引分配:每個檔案所有的盤塊號都集中存放,建立索引表,支援直接訪問,且沒有外部碎片問題
訪問第n個記錄 | 優點 | 缺點 | |
---|---|---|---|
順序分配 | 需訪問磁碟1次 | 速度快,可根據檔案起始地址及記錄長度進行隨機訪問 | 要求連續儲存空間,會產生外部碎片,不利於動態擴充套件 |
連結分配 | 需訪問磁碟n次 | 可以解決外部碎片問題,提高外存空間利用率,動態增長較方便 | 只能按照檔案的指標鏈順序訪問 |
索引分配 | m級需訪問磁碟m+1次 | 可以隨機訪問,易於檔案的增刪 | 索引表增加儲存空間的開銷,對檔案系統效率影響較大 |
儲存空間管理:
空閒表:屬於連續分配方式,把所有空閒塊組織成表
空閒連結串列法:把所有空閒塊組織成連結串列
位示圖:利用二進位制的每位記錄空閒塊
盤塊的分配:盤塊號b=n(i-1)+j
盤塊的回收:i=(b-1) DIV n + 1;j=(b-1) MOD n + 1
成組連結:空閒表和空閒連結串列的結合,適合大的檔案系統
選擇題
1.適合隨機訪問且易於檔案擴充套件的是(索引結構)
5.為支援CD-ROM中視訊檔案的快速隨機播放,播放效能最好的檔案資料塊組織方式是(連續結構)
4.3 磁碟組織與管理
磁碟地址結構:柱面號、盤面號、扇區號
尋道時間:將磁頭移動到指定磁軌所需要的時間,Ts=m*n+s
延遲時間:磁頭定位到某一磁軌的扇區所需要的時間,Tr=1/(2r)
傳輸時間:從磁碟讀出或向磁碟寫入資料所經歷的時間,Tt=b/(rN)
啟動時間(一般忽略):控制器的啟動時間
排程演算法:
1)先來先服務:根據程序請求訪問磁碟的先後順序進行排程
2)最短尋找時間優先:選擇當前磁頭所在磁軌距離最近的磁軌,會產生“飢餓”現象
3)掃描演算法:,又稱電梯排程,在磁頭當前移動方向上選擇與當前磁頭所在磁軌距離最近的請求
4)迴圈掃描:在掃描演算法的基礎上規定磁頭單向移動來提供服務,回返時直接快速移動至起始端而不服務任何請求
優點 | 缺點 | |
---|---|---|
FCFS演算法 | 公平、簡單 | 平均尋道距離大,僅應用在磁碟I/O較少的場合 |
SSTF演算法 | 效能比FCFS好 | 不能保證平均尋道時間最短,可能出現“飢餓”現象 |
SCAN演算法 | 尋道效能較好,可避免“飢餓”現象 | 不利於遠離磁頭一端的訪問請求 |
C-SCAN演算法 | 消除了對兩端磁軌請求的不公平 | - |
磁碟管理:
1)磁碟初始化:對磁碟進行低階格式化和邏輯格式化
低階格式化(物理分割槽):在磁碟儲存資料之前,必須分成扇區以便磁碟控制器能進行讀和寫操作
邏輯格式化:對物理分割槽進行邏輯格式化,作業系統將初始的檔案系統資料結構儲存到磁碟上,這些資料結構包括空閒和已分配的空間以及一個初始為空的目錄
2)引導塊:存放自舉程式
3)壞塊:對於損壞扇區的處理,使系統不去使用壞塊,壞塊屬於硬體故障,作業系統是不能修復的
選擇題
1.磁碟是可共享裝置,但在每一時刻(至多能由一個)作業啟動它
2.用磁帶做檔案儲存介質時,檔案只能組織成(順序檔案)
3.既可以隨機訪問又可以順序訪問的有(I、III、IV)
I. 光碟 II. 磁帶 III. U盤 IV. 磁碟
9.(最短尋找時間優先)可能出現“飢餓”現象
18.下列選項中,磁碟邏輯格式化程式所做的工作是(II、IV)
I. 對磁碟進行分割槽
II. 建立檔案系統的根目錄
III. 確定磁碟扇區校驗碼所佔位數
IV. 對儲存空間磁碟塊資訊的資料結構進行初始化
第5章 輸入/輸出(I/O)管理
5.1 I/O管理概述
裝置分類
按傳輸速率分:
低速:如鍵盤、滑鼠
中速:如行式印表機、鐳射印表機
高速:如磁帶機、磁碟機、光碟機
按資訊交換單位分:
塊裝置:如磁碟
字元裝置:如鍵盤、印表機
I/O控制方式
程式直接控制:程式直接對裝置迴圈測試
中斷驅動:引入中斷機制,當裝置準備完成時發生中斷
DMA:在I/O裝置與主存之間開闢直接資料通路,徹底解放CPU
1)基本單位是資料塊
2)所傳送的資料,是從裝置直接送入記憶體的,或者相反
3)僅在傳送一個或多個數據塊的開始和結束時,才需CPU干預,整塊資料的傳送是在DMA控制器的控制下完成的
中斷驅動方式資料傳送是在中斷處理時由CPU控制完成的,而DMA控制方式則是在DMA控制器的控制下完成的。
通道控制:引入專門的I/O處理機進行管理,可以實現CPU、通道和I/O裝置三者的並行操作
I/O通道與一般處理機的區別是:通道指令的型別單一,沒有自己的記憶體,通道所執行的通道程式是放在主機的記憶體中的,也就是說通道與CPU共享記憶體。
I/O通道與DMA方式的區別是:DMA方式需要CPU來控制傳輸的資料塊大小、傳輸的記憶體位置,而通道方式中這些資訊是由通道控制的。另外,每個DMA控制器對應一臺裝置與記憶體傳遞資料,而一個通道可以控制多臺裝置與記憶體的資料交換。
I/O子系統層次結構:
使用者層I/O軟體:實現與使用者互動的介面
裝置獨立性軟體:實現使用者程式與裝置驅動器的統一介面、裝置命令、裝置保護以及裝置分配與釋放
裝置驅動程式:與硬體直接相關,負責具體實現系統對裝置發出的操作指令
中斷處理程式:用於處理中斷相關事項
硬體裝置:包括一個機械部件(裝置本身)和一個電子部件(控制器)
選擇題
3.磁碟裝置的I/O控制主要是採取(DMA)方式
4.為了便於上層軟體的編制,裝置控制器通常需要提供(控制暫存器、狀態暫存器和控制命令)
5.在裝置控制器中用於實現對裝置控制功能的是(I/O邏輯(即裝置控制器))
6.在裝置管理中,裝置對映表(DMT)的作用是(建立邏輯裝置與物理裝置的對應關係)
7.DMA方式是在(I/O裝置和主存)之間建立一條直接資料通路。
9.在作業系統中,(通道技術)指的是一種硬體技術
12.(位元組多路通道)用作連線大量的低速後中速I/O裝置
13.(及時性)不是裝置分配中應考慮的問題
14.將系統中的每一臺裝置按某種原則統一進行的編號,這些編號作為區分硬體和識別裝置的代號,該編號稱為裝置的(絕對號)
15.通道控制裝置控制器、裝置控制器控制裝置工作
22.使用者程式發出磁碟I/O請求後,系統的正確處理流程是(使用者程式->系統呼叫處理程式->裝置驅動程式->中斷處理程式)
23.作業系統的I/O子系統通常由四個層次組成,每一層明確定義了與鄰近層次的介面,其合理的層次組織排列順序是(使用者級I/O軟體、裝置無關軟體、裝置驅動程式、中斷處理程式)
5.2 I/O核心子系統
I/O排程:確定一個好的順序來執行I/O請求
磁碟快取記憶體:在邏輯上屬於磁碟,物理上則是駐留在記憶體中的盤塊,分為兩種形式:
1)在記憶體中開闢一個單獨的儲存空間作為磁碟快取記憶體
2)把未利用的記憶體空間作為一個緩衝池,供請求分頁系統和磁碟I/O分時共享
引入緩衝區的目的:
1)緩和CPU與I/O裝置間速度不匹配的矛盾
2)減少對CPU的中斷頻率,放寬對CPU中斷響應時間的限制
3)解決基本資料單元大小(即資料粒度)不匹配的問題
4)提高CPU與I/O裝置之間的並行性
單緩衝:先把被交換資料寫入緩衝區,然後需要資料的裝置或處理機從緩衝區取走資料,處理C,輸入T,傳送M,用時Max(C, T)+M
雙緩衝:用時Max(C+M, T)
迴圈緩衝
緩衝池
快取記憶體和緩衝區的區別:
快取記憶體:存放的是低速裝置上的某些資料的複製資料,也就是快取記憶體上有的低速裝置上面必然有;如果高速裝置要訪問的資料不在快取記憶體中,高速裝置就需要訪問低速裝置
緩衝區:存放的是低速裝置給高速裝置的資料(或者相反),而這些資料在低速裝置(或高速裝置)不一定有備份,這些資料再從緩衝區傳送到高速裝置(或低速裝置);高速裝置和低速裝置的通訊要經過緩衝區,高速裝置永遠不會直接去訪問低速裝置
裝置的分配與回收
裝置分配是指根據使用者的I/O請求分配所需的裝置。
1)獨佔式使用裝置:裝置被使用時不再允許其他程序使用該裝置
2)分時式共享使用裝置
3)SPOOLing技術:即假離線I/O技術,實質上就是對I/O操作進行批處理,是一種以空間換時間的技術,將獨佔裝置改造為共享裝置
分配的總原則:即要充分發揮裝置的使用效率,又要避免造成程序死鎖,還要將使用者程式和具體裝置隔離開
分配方式
靜態分配:在使用者作業開始執行前,由系統一次性分配該作業所要求的全部裝置
動態分配:在程序執行過程中根據執行需要進行分配
裝置分配的資料結構
裝置控制表DCT、控制器控制表COCT、通道控制表CHCT、系統裝置表SDT
裝置控制表DCT和控制器控制表COCT是一一對應的關係;
通道控制表CHCT和控制器控制表COCT是一對多的關係。
整個系統只有一張系統裝置表SDT
裝置分配的策略
1)靜態分配:主要用於對獨佔裝置的分配,由系統一次性分配該作業所要求的全部裝置、控制器,並不符合分配的總原則
2)動態分配:在程序執行過程中根據執行需要進行
裝置分配演算法:現請求先分配、優先順序高者優先
裝置分配的安全性
1)安全分配方式:每當程序發出I/O請求後進入阻塞狀態,直到I/O操作完成時才被喚醒,CPU和I/O裝置序列工作
2)不安全分配方式:一個程序可同時操作多個裝置,從而使程序推進迅速,但有可能產生死鎖
邏輯裝置名到物理裝置名的對映
1)在整個系統中只設置一張邏輯裝置表LUT
2)為每個使用者設定一張邏輯裝置表LUT
SPOOLing技術(假離線技術):外部裝置同時聯機操作,又稱為假離線輸入/輸出操作,是作業系統中採用的一項將獨佔裝置改造成共享裝置的技術
選擇題
5.程式設計師利用系統呼叫開啟I/O裝置時,通常使用的裝置標識是(邏輯裝置名)
8.為了使併發程序能有效地進行輸入和輸出,最好採用(緩衝池)結構的緩衝技術
9.在採用SPOOLing 技術的系統中,使用者的列印結果首先被送到(磁碟固定區域)
10.緩衝技術中的緩衝池在(主存)中
13.如果I/O所花費的時間比CPU的處理時間短得多,則緩衝區(幾乎無效)
18.提高單機資源利用率的關鍵技術時(多道程式設計技術)
19.虛擬裝置是靠(SPOOLing)技術來實現的
20.SPOOLing技術的主要目的是(提高獨佔裝置的利用率)
21.採用SPOOLing技術的計算機系統,外圍計算機需要(0臺)
22.SPOOLing系統由下列程式組成(預輸入程式、井管理程式和緩輸出程式)
23.在SPOOLing系統中,使用者程序實際分配到的是(外存區,即虛擬裝置)
24.SPOOLing系統中的使用者程式可以隨時將輸出資料送到輸出井中,待輸出裝置空閒時再有SPOOLing系統完成資料的輸出操作
26.SPOOLing技術時作業系統中採用的以空間換取時間的技術
29.在採用SPOOLing技術的系統中,使用者的列印資料首先被送到(磁碟固定區域)
31.在系統記憶體中設定磁碟緩衝區的主要目的是(減少磁碟I/O次數)