位示图磁盘管理模拟实现算法
分配和回收转换公式
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

最低0.47元/天 解锁文章
8450





