【操作系统】记录的成组误区

来源:互联网 发布:管理学网络计划图例题 编辑:程序博客网 时间:2024/06/05 06:47

磁盘的成组与分解技术

开始理解错了成组与分解的意思,现在重新总结如下。

记录的成组与分解

1、记录的成组与分解的原因:由于磁盘块的大小是预先划分好的,大小固定,而逻辑记录的大小是用户文件性质决定的,不一定和块大小一致。

2、记录的成组:把若干个逻辑记录存入一个块的工作称为“记录的成组”。每块中逻辑记录的个数称“块因子”。

3、记录的分解:这是记录成组的一个逆过程。进程是先从磁盘中找到记录所在的块,并将本块读入主存缓冲区,再从缓冲区取出所需要的记录送到用户工作区。如果用户所需的记录已经在缓冲区中,则不需要启动外设读块信息,这也可以提高系统工作效率。

有一个问题是:逻辑记录能否跨越两个块

不能。通常设计的逻辑记录的长度与物理块的长度是有整数倍数的。如果没有我们需要看一个名词:块因子。即:一个物理块能存的逻辑记录的数目。成组分解是为了加快读取的效率的。试想,如果恰好一个逻辑记录占用了两个物理块的尾部和首部,那么这种不对齐的方式读取效率是大打折扣的。也即,要读入两个物理块才能读取这个逻辑记录。所以这是不可能的。

之所以会这么提是因为在这样一种情境下:逻辑记录100B,物理块大小512B,那么请问第22个逻辑记录在哪一个物理块。两种想法:5个逻辑记录在一个物理块,那么20个逻辑记录占用4块,因此第22个逻辑记录在第5个物理块。
另一种思路是:前5个占用500B,剩下的12B给第六个逻辑记录这样。这样计算就是22×100÷512=4.30,上取整得到5.答案也是一样的,但是思考的方式却是错的。

设文件ABCD为定长记录的连续文件,共有18个逻辑记录。如果记录长为512B,物理块长为1024B,采用成组方式存放,起始块号为12,叙述第15块逻辑记录读入内存缓冲区的过程。

答:采用成组方式存放,块因子为2。由于共有18个逻辑记录,故占用了9个物理块,而第15号逻辑记录占用的是第15/2=8(向上取整)物理块。因为,是连续文件物理块也是连续的,所以,该逻辑记录占用的是12+8-1=19块。所以,第15号逻辑记录读入内存缓冲区的过程如下:根据块因子,计算占用的相对物理块号8;根据起始块号为12,计算出绝对物理块号19;把物理块号19读入内存缓冲区;把所要的逻辑记录分解出来。

原文链接:http://blog.csdn.net/u011240016/article/details/52858870

原创粉丝点击