操作系統期末復習題


僅適用於廣工學生,其實同類型題型多找些題目做,直到完全明白如何解題基本考試就沒啥問題了

B —字節,1字節8位

1MB=1024KB=1024B*1024=1048576B;

  8bit=1Byte;

  1024KB=1MB;

  1024MB=1GB;

  1024GB=1TB;

第二章進程

信號量

步驟

  1. 先判斷幾個進程
  2. 判斷進程間的先后要求關系,或者互斥關系

注意

  1. 信號量的變量定義必須寫成 semaphore s;這樣的形式
  2. 信號量的賦值取決於資源的數量
  3. 程序的parbegin與parend
  4. 進程要么中括號,要么begin,end
  5. 代碼里必須有P V操作,也就是P(s)這樣的
  6. 每個信號量必須注釋!

第三章處理機調度和死鎖

進程調度

輪換算法

將運行的時間平均分給正在運行的所有進程

短作業優先

  1. 有一個具有兩道作業的批處理系統(最多可有兩道作業同時裝入內存執行),作業調度采用計算時間短的作業優先調度算法,進程調度采用以優先數為基礎的搶占式調度算法,今有如下作業序列,作業優先數即為進程優先數,優先數越小優先級越高:

    作業名 到達時間 估計運行時間 優先數
    J1 10 : 10 20分鍾 5
    J2 10 : 20 30分鍾 3
    J3 10 : 30 25分鍾 4
    J4 10 : 50 20分鍾 6

列出所有作業進入內存時間及結束時間, 計算平均周轉時間。

分析:

  • 作業調度是負責把作業調入內存

  • 進程調度負責分配處理器給作業讓作業運行

  • 一次內存里最多進入兩個,但在運行中的只能一個作業

Ui1DU0.png

作業調度算法

  • 先來先服務調度算法(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} \]

第四章存儲器管理

分頁存儲管理

USt9JS.png

求頁大小和頁表

USteoV.png

求起始地址(16/10)

UStlQJ.png

如果是16進制表示則:4KB=4*1024B=2+10=12位,作為頁內偏移地址

主存分為16塊,故內存物理地址高4位為主存塊號。

第0頁被裝入主存第2塊,在內存中起始地址:0010 0000 0000 0000 B

轉換為16進制=>2 0 0 0 H

求邏輯地址轉內存地址

USNFfO.png

分段存儲管理

USNqHI.png

USUSgg.png

第五章虛擬存儲器

頁面置換算法

缺頁率/缺頁中斷率

  • 假設進程邏輯空間為n頁,系統分配內存物理塊數位m,若運行過程中,訪問頁面成功(該頁面在內存中)的次數S,訪問失敗次數為F,則總訪問次數A=S+F

    \[缺頁率f=\frac{F}{A}=\frac{F}{F+S}=\frac{訪問成功次數}{總訪問次數} \]

先進先出置換算法FIFO

最近最久未使用置換算法LRU

  • 賦予每個頁面一個訪問字段,用於記錄一個頁面自上次被訪問以來所經歷的時間t,每次需要淘汰頁面時,選擇t最大的

USUHRU.png

主存塊數3,所以總共可以放入三頁

USdTvF.jpg

若改為主存字數頁大小,如下面

在一個采用分頁式虛擬存儲管理的系統中,有一用戶作業,它依次要訪問的字地址序列是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 個字節存放指針,則該系統支撐文件的最大長度是多少?

  1. 順序分配方式

    1. 因為要最少訪問,所以選擇向前移動文件的前 29 條記錄,向前移動文件的前29 條記錄,每條記錄需先讀一次,然后寫到其前一塊磁盤塊需 29×2=58 次。
    2. 然后需要將新記錄寫到騰出的那個磁盤塊中, 作為該文件的第 30 條記錄。故總共需要 58+1=59 次。

    由於文件的起始位置前移了一個磁盤塊,同時文件也增加了一條記錄,因此F 的文件控制塊中的文件的起始位置和文件的大小會發生改變。

  2. 鏈接分配方式

    1. 這就需要先找到第29 條文件記錄的磁盤塊,然后獲得第 30 條文件記錄的磁盤塊地址 (需讀磁盤 29 次)。
    2. 再為該記錄分配一個空閑磁盤塊, 將該記錄以及第 30 條文件記錄的磁盤塊地址寫入其中,再將該塊寫入磁盤(需寫磁盤 1 次)。
    3. 最后還需要修改第 29 塊的鏈接指針,指向新的插入塊,並將第 29 塊寫回磁盤(需寫磁盤 1 次)。
    4. 故共需要 29+1+1=31 次。
    5. 由於每個磁盤塊大小為 1KB,其中 4 個字節存放鏈接指針, 因此用於存放文件的空間為( 1KB-4B)。 又由於4字節指針的地址空間為2^32(32位,則共有2^32個物理塊)。 因此該文件系統支持的文件最大長度是
      (1024-4) B×2^32=4080GB

多級索引組織方式

字節偏移量轉換為物理地址

解題思路

文件索引磁盤地址表=直接塊號+一級索引+二級索引+三級索引

若磁盤塊大小512字節,每個磁盤地址占2字節,因此一個一級索引可容納256個磁盤地址。同樣地,一個二級索引表可容納256個一級索引表地址,一個三級索引表可容納256個二級索引表地址

  1. 邏輯塊號=字節偏移量/1024
  2. 塊內偏移量=字節偏移量%1024
  3. 判斷在哪個塊
    1. 直接塊,邏輯塊號<直接塊號數量
    2. 一次間接索引塊,一級索引塊號+直接塊號數量>邏輯塊號>直接塊號數量
    3. 2次間接索引塊,一級索引塊號*一級索引塊號+(一級索引塊號+直接塊號數量)>邏輯塊號>一級索引塊號+直接塊號數量
  4. 若二級間接尋塊,則需用(邏輯塊號-直接塊號數量-一級索引塊號)/一級索引塊號=第幾塊一級索引塊號

一.UNIX系統中,假定盤塊大小為1KB,每個盤塊號占4個字節,文件索引結點中的磁盤地址明細表如圖6-11所示,如何將下列文件的字節偏移量轉換為物理地址(盤塊號和塊內偏移)?

(1)9000;(2)14000;(3)350000;(4)680000

UPDHyt.png

(1)

解:

(1)

  1. 字節偏移量為9000
  2. 邏輯塊號為:9000/1024=8
  3. 塊內偏移量:9000%1024=808
  4. 因邏輯塊號小於10,因此該塊為直接塊。由圖6-12可知,其物理塊號為367,該塊的第808字節即為文件的第9000字節。

(2)

  1. 字節偏移量為14000
  2. 邏輯塊號為:14000/1024=13
  3. 塊內偏移量:14000%1024=688
  4. 因邏輯塊號10<13<266,因此該塊為一次間接塊。
  5. 由圖6-12可知,一次間接索引塊號為428,由於直接索引有10個塊號,13-10=3。讀出428#塊,查得其中第3個索引項值為952。即是邏輯塊號13對應的物理塊號為952,物理塊952中的第688字節即為文件的第14000字節。

(3)

  1. 字節偏移量為350000
  2. 邏輯塊號為:350000/1024=341
  3. 塊內偏移量:350000%1024=816
  4. 因邏輯塊號266<341<65802,因此該塊為二次間接塊。
  5. 由圖6-12可知,二次間接索引塊號為9156。由於一個一次間接塊中可容納256個塊號,直接索引有10個塊號,341-(10+256)=75;75/256=0。
  6. 讀出9156#盤塊,查得其中的第0個索引項值為331。讀331#盤塊,查得其中第75個索引項的值為3333。.因此,字節偏移量350000對應的盤塊號為3333,3333#物理塊中的第816字節即為文件的第350000字節。

(4)

  1. 字節偏移量為680000
  2. 邏輯塊號為:680000/1024=664
  3. 塊內偏移量:680000%1024=64
  4. 因邏輯塊號266<664<65802,因此該塊為二次間接塊。
  5. 由圖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)給出一種加速文件查找速度的方案。

UP621H.png

答:

(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。

UFCxBQ.png

UFPqa9.png


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM