位示图磁盘管理分配与回收模拟实现

位示图磁盘管理模拟实现算法

分配和回收转换公式

3.1 转换公式的四种情况

1.行列号从0开始,盘块号从0开始
2.行列号从0开始,盘块号从1开始
3.行列号从1开始,盘块号从0开始
4.行列号从1开始,盘块号从1开始

提示:
(1)/为整除,%为取余
(2)位示图每个位可以取0或1,下面表格中的内容不代表位示图的取值,而是代表对应位的位置编号,即行号列号盘块号。每个单元格内容的格式如下:
(3)为了方便说明,假设下面的位示图每行都只有4个位
盘块号( 行号,列号)

3.1.1 行列号从0开始,盘块号从0开始

如表3.1.1:
位 字 第0列 第1列 第2列 第3列
第0行 0(0,0) 1(0,1) 2(0,2) 3(0,3)
第1行 4(1,0) 5(1,1) 6(1,2) 7(1,3)
第2行 8(2,0) 9(2,1) 10(2,2) 11(2,3)
第…行 … … … …
表3.1.1
此种情况最好计算,类似于二维数组的行列下标与元素位置之间的转换
分配时,行列号转换为盘块号
盘块号 = 行号 ∗ 行位数 + 列号
回收时,盘块号转换为行列号:
行号 = 盘块号 / 行位数
列号 = 盘块号 % 行位数

3.1.2 行列号从0开始,盘块号从1开始

如表3.1.2:
位 字 第0列 第1列 第2列 第3列
第0行 1(0,0) 2(0,1) 3(0,2) 4(0,3)
第1行 5(1,0) 6(1,1) 7(1,2) 8(1,3)
第2行 9(2,0) 10(2,1) 11(2,2) 12(2,3)
第…行 … … … …
表3.1.2
相对于第一种情况,盘块号多了1,所以:
分配时,相对于第一种情况,计算后盘块号再加一
盘块号 = 行号 ∗ 行位数 + 列号 + 1
回收时,相对于第一种情况,计算前盘块号先减一
行号 = (盘块号−1) / 行位数
列号 = (盘块号 − 1) % 行位数

3.1.3 行列号从1开始,盘块号从0开始

如表3.1.3:
位 字 第1列 第2列 第3列 第4列
第1行 0(1,1) 1(1,2) 2(1,3) 3(1,4)
第2行 4(2,1) 5(2,2) 6(2,3) 7(2,4)
第3行 8(3,1) 9(3,2) 10(3,3) 11(3,4)
第…行 … … … …
表3.1.3
相对于第一种情况,行列号多了1,所以:
分配时,相对于第一种情况,计算前行列号先减一
盘块号= == (行号 − 1) ∗ 行位数 + 列号 − 1
回收时,相对于第一种情况,计算后行列号再加一
行号 = 盘块号 / 行位数 + 1

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值