位示图 c语言程序,位示图模拟文件系统空闲快管理c语言
用數(shù)組表示位示圖,其中的每一位對(duì)應(yīng)磁盤一個(gè)物理塊的狀態(tài),0表示空閑,1表示分配;當(dāng)請(qǐng)求分配一個(gè)磁盤塊時(shí),尋找到數(shù)組中為0的位,計(jì)算相對(duì)磁盤塊號(hào),并計(jì)算其在磁盤中的物理地址(柱面號(hào)、磁道號(hào)、物理塊號(hào)),并將其狀態(tài)由0變到1。
當(dāng)釋放某一物理塊時(shí),已知其在磁盤中的物理地址,計(jì)算其相對(duì)磁盤塊號(hào),再找到位示圖數(shù)組中的相應(yīng)位,將其狀態(tài)由1變?yōu)?。
實(shí)驗(yàn)三 文件系統(tǒng)空閑空間管理模擬
一、實(shí)驗(yàn)內(nèi)容及要求
要求打印或顯示程序運(yùn)行前和運(yùn)行后的位示圖,以及分配和回收磁盤的物理地址過(guò)程;
二、基本原理
用數(shù)組表示位示圖,其中的每一位對(duì)應(yīng)磁盤一個(gè)物理塊的狀態(tài),0表示空閑,1表示分配;當(dāng)請(qǐng)求分配一個(gè)磁盤塊時(shí),尋找到數(shù)組中為0的位,計(jì)算相對(duì)磁盤塊號(hào),并計(jì)算其在磁盤中的物理地址(柱面號(hào)、磁道號(hào)、物理塊號(hào)),并將其狀態(tài)由0變到1。
當(dāng)釋放某一物理塊時(shí),已知其在磁盤中的物理地址,計(jì)算其相對(duì)磁盤塊號(hào),再找到位示圖數(shù)組中的相應(yīng)位,將其狀態(tài)由1變?yōu)?。
三、實(shí)驗(yàn)相關(guān)公式: 計(jì)算公式如下:
(1) 已知位示圖中的下標(biāo)i , j, 計(jì)算相對(duì)塊號(hào)
Block= I * sizeof( int )+j
(2)已知相對(duì)塊號(hào)計(jì)算柱面、磁道、物理塊號(hào)如下:
柱面號(hào) C= 相對(duì)塊號(hào)/(每柱面磁道數(shù)*每磁道物理塊數(shù))
磁道號(hào) H= 相對(duì)塊號(hào)%(每柱面磁道數(shù)*每磁道物理塊數(shù))/ 每磁道物理塊數(shù) 物理塊號(hào) R= 相對(duì)塊號(hào)%每磁道物理塊數(shù)
4. 提出申請(qǐng)磁盤塊或釋放磁盤塊的要求,根據(jù)要求完成操作。
若申請(qǐng)盤塊,則在位示圖中找到為0的位,計(jì)算相對(duì)磁盤塊號(hào),再計(jì)算相應(yīng)具體物理設(shè)備的柱面號(hào)C、磁道號(hào)H和物理塊號(hào)R,計(jì)算方法如步驟3;輸出分配的CHR地址,并將位示圖相應(yīng)位由0變?yōu)?,輸出位示圖;
若釋放盤塊,則從已分配磁盤塊表中隨機(jī)選擇一個(gè)盤塊釋放,此時(shí),已知CHR地址,計(jì)算該盤塊的相對(duì)磁盤塊號(hào),再計(jì)算其相應(yīng)信息在位示圖中的位置( i,j)。計(jì)算過(guò)程如下:
相對(duì)磁盤塊號(hào) = 柱面號(hào)*每柱面磁道數(shù)*每磁道物理塊數(shù)+
磁道號(hào)*每磁道物理塊數(shù)+ 物理塊號(hào)
i = 相對(duì)磁盤塊號(hào)/ sizeof(int)
j = 相對(duì)磁盤塊號(hào)% sizeof(int)
四、實(shí)驗(yàn)程序清單:
#include
#include
總結(jié)
以上是生活随笔為你收集整理的位示图 c语言程序,位示图模拟文件系统空闲快管理c语言的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux下samba病毒,Samba
- 下一篇: java信息管理系统总结_java实现科