OS对磁盘块的管理

混合索引

这部分内容属于操作系统对非空闲磁盘块的管理(就是那些存放了文件数据的磁盘块),即文件的物理结构,文件如何存放在外存中、文件分配方式。主要有三种:连续、链接和索引组织方式。
在这里插入图片描述
【题目】

  1. 在一个操作系统中,如果一个盘块的大小为1KB,每个盘块号占 4 个字节,采用直接地址(为10块)、一次间接、二次间接及三次间接的混合索引结构保存文件。那么,一个进程要访问偏移量为287744B处的数据时,需要经过几次间接寻址?

【解答】

  • 由题中盘块的大小和盘块号的大小可知,每个盘块可以放256个地址;
  • 则逻辑块号为287744 / 256 = 1124,块内偏移量为287744 % 256 = 0;
  • 又因为10 + 256 < 1124 < 10 + 256 + 256 * 256
  • 而1124 – (10 + 256) = 858
  • 858 / 256 = 3, 858 % 256 = 90()
  • 故可从FCB的第11个地址项(0~9是直接地址项,10是一次间址项,11是二次间址项),即二次间址项中得到二次间址块的地址
  • 读入二次间址块并从它的第3项中获得一个一次间址块的地址,并从它的第90项中获得对应的物理盘块号
  • (文件数据)块内偏移量为0

故:由于文件的FCB已经在内存,访问偏移量为287744B处的数据时,需要经过两次间接寻址(第一次是读入二次间址块,第二次是读入一次间址块)

示意图:
我认为是这样的:
在这里插入图片描述
在这里插入图片描述


位示图法

这属于对空闲磁盘块的管理,即文件存储空间的管理的内容。主要有空闲表法,空闲链表法、位示图法和成组链接法。

在这里插入图片描述
【题目】
2. 使用位示图:1行开始共20行、1列开始共30列来表示空闲盘块状态,设首盘块号为1。假如当分配一个盘块号为140时,其在位示图中的行、列数应为多少?当释放一个盘块号为 301 时,其所在位示图中的行、列数为多少?(行号、列号和盘块号都是从1开始编号)

【解答】

这种问题就是自己要注意行号、列号和块号分别是从什么开始,是0还是1。
然后自己画个矩阵就明白了。

假设是三行五列的(353*5):这题行列、块号都是从1开始的。

行号/列号 1 2 3 4 5
1 1 2 3 4 5
2 6 7 8 9 10
3 11 12 13 14 15

可以看出知道盘块号block、行数m和列数n,行号i和列号j的推导:

i = block / n + 1;
j = block % n;
if( block % n == 0){
	i--;
}

补充说明:如果盘块号是列数的倍数,也就是在最后一列的盘块号,可以看出行号不需要加1,那第一行来说,1~4除列数5都是0,加1才能得到正确的行数;而如果盘块号是5,除列数就刚好是行数1了。

行号/列号 1 2 3 4 5
1 1 2 3 4 5

没什么固定方法,还是自己举个栗子推推看。
个人理解,有误请指正~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章