僅適用於廣工學生,其實同類型題型多找些題目做,直到完全明白如何解題基本考試就沒啥問題了
B —字節,1字節8位
1MB=1024KB=1024B*1024=1048576B;
8bit=1Byte;
1024KB=1MB;
1024MB=1GB;
1024GB=1TB;
第二章進程
信號量
步驟
- 先判斷幾個進程
- 判斷進程間的先后要求關系,或者互斥關系
注意
- 信號量的變量定義必須寫成 semaphore s;這樣的形式
- 信號量的賦值取決於資源的數量
- 程序的parbegin與parend
- 進程要么中括號,要么begin,end
- 代碼里必須有P V操作,也就是P(s)這樣的
- 每個信號量必須注釋!
第三章處理機調度和死鎖
進程調度
輪換算法
將運行的時間平均分給正在運行的所有進程
短作業優先
-
有一個具有兩道作業的批處理系統(最多可有兩道作業同時裝入內存執行),作業調度采用計算時間短的作業優先調度算法,進程調度采用以優先數為基礎的搶占式調度算法,今有如下作業序列,作業優先數即為進程優先數,優先數越小優先級越高:
作業名 到達時間 估計運行時間 優先數 J1 10 : 10 20分鍾 5 J2 10 : 20 30分鍾 3 J3 10 : 30 25分鍾 4 J4 10 : 50 20分鍾 6
列出所有作業進入內存時間及結束時間, 計算平均周轉時間。
分析:
-
作業調度是負責把作業調入內存
-
進程調度負責分配處理器給作業讓作業運行
-
一次內存里最多進入兩個,但在運行中的只能一個作業
作業調度算法
-
先來先服務調度算法(First-come First-served,FCFS)
-
短作業優先調度算法(Short Job First,SJF)
-
優先級調度算法(Priority-scheduling Algorithm,PSA)
-
高響應比優先調度算法
-
\[優先權R_p=\frac{等待時間+要求服務時間}{要求服務時間}=\frac{響應時間}{要求服務時間} \]
-
-
周轉時間=結束時間-進入時間
-
平均周轉時間可以表示為:
\[T=\frac{1}{n}\sum_{i=1}^nT_i=\frac{總周轉時間}{作業數} \] -
為了更好地描述調度的性能,往往采用帶權周轉時間,即周轉時間Ti和運行時間Ts的比值,平均帶權周轉時間可以表示為:
\[ W=\frac{1}{n}\sum_{i=1}^n\frac{T_i}{T_s} \]
第四章存儲器管理
分頁存儲管理
求頁大小和頁表
求起始地址(16/10)
如果是16進制表示則:4KB=4*1024B=2+10=12位,作為頁內偏移地址
主存分為16塊,故內存物理地址高4位為主存塊號。
第0頁被裝入主存第2塊,在內存中起始地址:0010 0000 0000 0000 B
轉換為16進制=>2 0 0 0 H
求邏輯地址轉內存地址
分段存儲管理
第五章虛擬存儲器
頁面置換算法
缺頁率/缺頁中斷率
- 假設進程邏輯空間為n頁,系統分配內存物理塊數位m,若運行過程中,訪問頁面成功(該頁面在內存中)的次數S,訪問失敗次數為F,則總訪問次數A=S+F
\[缺頁率f=\frac{F}{A}=\frac{F}{F+S}=\frac{訪問成功次數}{總訪問次數} \]
先進先出置換算法FIFO
最近最久未使用置換算法LRU
- 賦予每個頁面一個訪問字段,用於記錄一個頁面自上次被訪問以來所經歷的時間t,每次需要淘汰頁面時,選擇t最大的
主存塊數3,所以總共可以放入三頁
若改為主存字數和頁大小,如下面
在一個采用分頁式虛擬存儲管理的系統中,有一用戶作業,它依次要訪問的字地址序列是115,228,120,88,446,102,321,432,260,167。若分配給作業可使用的主存空間共300個字,作業頁面大小為100個字
分析:作業頁面大小為100個字,所以地址88對應的頁號為0,。。。
依次要訪問的字地址序列可化為頁號序列:1,2,1,0,4,1,3,4,2,1
主存300字,300/100=3.所以共三頁
第七章文件管理
插入記錄
文件 F 由 200 條記錄組成,記錄從 1 開始編號,用戶打開文件后,欲將內存中的一條記錄插入文件 F 中,作為其第 30 條記錄,請回答下列問題,並說明理由。
(1)若文件系統為順序分配方式,每個存儲塊存放一條記錄,文件 F 的存儲區域前后均有足夠空閑的存儲空間,則要完成上述操作最少要訪問多少存儲塊? F 的文件控制區內容會有哪些改變?
(2)若文件系統為鏈接分配方式,每個存儲塊存放的一條記錄和一個鏈接指針,則要完成上述操作最少要訪問多少次存儲塊?若每個存儲塊大小為 1KB,其中 4 個字節存放指針,則該系統支撐文件的最大長度是多少?
-
順序分配方式
- 因為要最少訪問,所以選擇向前移動文件的前 29 條記錄,向前移動文件的前29 條記錄,每條記錄需先讀一次,然后寫到其前一塊磁盤塊需 29×2=58 次。
- 然后需要將新記錄寫到騰出的那個磁盤塊中, 作為該文件的第 30 條記錄。故總共需要 58+1=59 次。
由於文件的起始位置前移了一個磁盤塊,同時文件也增加了一條記錄,因此F 的文件控制塊中的文件的起始位置和文件的大小會發生改變。
-
鏈接分配方式
- 這就需要先找到第29 條文件記錄的磁盤塊,然后獲得第 30 條文件記錄的磁盤塊地址 (需讀磁盤 29 次)。
- 再為該記錄分配一個空閑磁盤塊, 將該記錄以及第 30 條文件記錄的磁盤塊地址寫入其中,再將該塊寫入磁盤(需寫磁盤 1 次)。
- 最后還需要修改第 29 塊的鏈接指針,指向新的插入塊,並將第 29 塊寫回磁盤(需寫磁盤 1 次)。
- 故共需要 29+1+1=31 次。
- 由於每個磁盤塊大小為 1KB,其中 4 個字節存放鏈接指針, 因此用於存放文件的空間為( 1KB-4B)。 又由於4字節指針的地址空間為
2^32
(32位,則共有2^32
個物理塊)。 因此該文件系統支持的文件最大長度是
(1024-4) B×2^32=4080GB
多級索引組織方式
字節偏移量轉換為物理地址
解題思路
文件索引磁盤地址表=直接塊號+一級索引+二級索引+三級索引
若磁盤塊大小512字節,每個磁盤地址占2字節,因此一個一級索引可容納256個磁盤地址。同樣地,一個二級索引表可容納256個一級索引表地址,一個三級索引表可容納256個二級索引表地址
- 邏輯塊號=字節偏移量/1024
- 塊內偏移量=字節偏移量%1024
- 判斷在哪個塊
- 直接塊,邏輯塊號<直接塊號數量
- 一次間接索引塊,一級索引塊號+直接塊號數量>邏輯塊號>直接塊號數量
- 2次間接索引塊,一級索引塊號*一級索引塊號+(一級索引塊號+直接塊號數量)>邏輯塊號>一級索引塊號+直接塊號數量
- 若二級間接尋塊,則需用(邏輯塊號-直接塊號數量-一級索引塊號)/一級索引塊號=第幾塊一級索引塊號
一.UNIX系統中,假定盤塊大小為1KB,每個盤塊號占4個字節,文件索引結點中的磁盤地址明細表如圖6-11所示,如何將下列文件的字節偏移量轉換為物理地址(盤塊號和塊內偏移)?
(1)9000;(2)14000;(3)350000;(4)680000
(1)
解:
(1)
- 字節偏移量為9000
- 邏輯塊號為:9000/1024=8
- 塊內偏移量:9000%1024=808
- 因邏輯塊號小於10,因此該塊為直接塊。由圖6-12可知,其物理塊號為367,該塊的第808字節即為文件的第9000字節。
(2)
- 字節偏移量為14000
- 邏輯塊號為:14000/1024=13
- 塊內偏移量:14000%1024=688
- 因邏輯塊號10<13<266,因此該塊為一次間接塊。
- 由圖6-12可知,一次間接索引塊號為428,由於直接索引有10個塊號,13-10=3。讀出428#塊,查得其中第3個索引項值為952。即是邏輯塊號13對應的物理塊號為952,物理塊952中的第688字節即為文件的第14000字節。
(3)
- 字節偏移量為350000
- 邏輯塊號為:350000/1024=341
- 塊內偏移量:350000%1024=816
- 因邏輯塊號266<341<65802,因此該塊為二次間接塊。
- 由圖6-12可知,二次間接索引塊號為9156。由於一個一次間接塊中可容納256個塊號,直接索引有10個塊號,341-(10+256)=75;75/256=0。
- 讀出9156#盤塊,查得其中的第0個索引項值為331。讀331#盤塊,查得其中第75個索引項的值為3333。.因此,字節偏移量350000對應的盤塊號為3333,3333#物理塊中的第816字節即為文件的第350000字節。
(4)
- 字節偏移量為680000
- 邏輯塊號為:680000/1024=664
- 塊內偏移量:680000%1024=64
- 因邏輯塊號266<664<65802,因此該塊為二次間接塊。
- 由圖6-12可知,二次間接塊號位9156。由於一個一次間接塊中可容納256個塊號,直接索引有10個塊號,664-(10+256)=398;398/256=1;398%256=142。讀出9156#盤塊,查得其中的第1個索引項值為452。.讀452#盤塊,查得其中第142個索引項的值為5300。.因此,字節偏移量680000對應的盤塊號為5300,5300#物理塊中的第64字節即為文件的第680000字節。
查詢文件
某文件系統的目錄結構如圖6-2所示,已知每個目錄項占256B,磁盤的一塊為512B。設當前目錄為根目錄。
(1)查詢文件Wang的路徑是什么?
(2)系統需要讀取幾個文件后才能查到Wang?
(3)計算系統找到Wang,至少讀了幾個盤塊。
(4)給出一種加速文件查找速度的方案。
答:
(1) 查詢文件Wang的路徑是 /D/DC/DDC/Wang
(2) 系統需要讀取D、DC、DDC等3個目錄文件才能查到Wang
(3) 因1個盤塊中可存儲2個目錄項,讀取根目錄的第2個盤塊時才能找到文件D的目錄項;讀取文件D的第2個盤塊時才能找到DC的FCB;讀取文件DC的第2個盤塊時才找到文件DDC的FCB;讀取DDC的第1個盤塊就能找到Wang。因此,系統找到Wang,至少讀了7個盤塊。
(4) 可以采用類似UNIX的方法,縮短目錄項,例如,目錄項中僅包含文件名(12個字節)和索引節點號(4個字節),目錄項長度為16字節,這樣每個盤塊可存放32個目錄項。這樣只需讀4個盤塊就可找到Wang。