操作系統 | 成組鏈接法練習題


操作系統成組鏈接法

剛剛學習完文件管理這一章的內容,這道題用來練習和理解成組鏈接法還是很合適的。

 

例題.某個系統采用成組鏈接法來管理磁盤的空閑空間,目前磁盤的狀態如圖1所示。 

(1) 該磁盤中目前還有多少個空閑盤塊? 

(2) 請簡述磁盤塊的分配過程。 

(3) 在為某個文件分配3個盤塊后,系統要刪除另一文件,並回收它所占的5個盤塊,它們的盤塊號依次為700、711、703、788、701,請畫出回收后的盤塊鏈接情況。

圖1

 

 

解析:

 

(1)從圖中可以看出,目前系統共有四組空閑盤塊,第一組為2塊,第二,三組分別為100塊,第四組雖記為100快,但除去用於結束標記的那一塊后實際只有99塊,故空閑盤塊總數為301塊。 

 

(2) 磁盤塊的分配過程如下:首先檢查超級塊空閑盤塊號棧是否已上鎖,若已上鎖則進程睡眠等待;否則將s_nfree減1,若s_nfree仍大於0,即第一組中不止一個空閑盤塊,則將s_free[s_nfree]中登記的(即空閑盤塊號棧頂的)空閑盤塊分配出去。若s_nfree為0,即當前空閑盤塊號棧中只剩下最后一個空閑盤塊,由於該盤塊中登記有下一組空閑盤塊的盤塊號和盤塊數,因此核心在給超級塊的空閑盤塊號棧上鎖后,先將該盤塊的內容讀入超級塊的空閑盤塊號棧,再將該盤塊分配出去。另外,還需將空閑盤塊號棧解鎖,並喚醒所有等待其解鎖的進程。若s_nfree為0,而且棧底登記的盤塊號為0,則表示系統已無空閑盤塊可分配,此時也讓進程睡眠等待其他進程釋放盤塊。 

 

(3) 根據題意,分配給某文件的3個盤塊依次為299號,300號,301號這三個盤塊。在此基礎上依次回收另一個文件的5個盤塊:700、711、703、788、701,回收完成后,空閑盤塊的鏈接情況將如圖2所示。

圖2

 


免責聲明!

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



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