以下内容源自计算机操作系统(第四版)
关于操作系统,
CSDN有很多的优秀博客。
在这里,
本文摘取其他博客内容,
并附上相关链接,
如有侵权,
联系删除,
仅供学习交流使用
请您阅读文章声明,默认同意该声明
计算机操作系统(第四版)之文件管理、磁盘存储器的管理要点梳理
文件的物理结构直接与外存的组织方式有关。对于不同的外存组织方式,将形成不同的文件物理结构。目前常用的外存组织方式有:
1)连续组织方式。
2)链接组织方式.
3)索引组织方式。
为了实现前面任何一种文件组织方式,都需要为文件分配盘块,因此必须知道磁盘上哪些盘块是可用于分配的。故在文件分配磁盘时,除了需要文件分配表外,系统还应为可分配存储空间设置相应的数据结构,即设置一个磁盘分配表,用于记住可供分配的存储空间情况。此外,还应提供对盘块进行分配和回收的手段。不论哪种分配和回收方式,存储空间的基本分配单位都是磁盘块而非字节。
1. 空闲表法
1)空闲表。
空闲表法属于连续分配方式,它与内存的动态分配方式雷同。
即系统也为外存上的所有空闲区建立一张空闲表,每个空闲区对应于一个空闲表项,其中包括表项序号、该空闲区的第一个盘块号、该区的空闲盘块数等信息。再将所有空闲区按其起始盘块号递增的次序排列。
2)存储空间的分配与回收。
空闲盘区的分配与内存的动态分配类似,同样是采用首次适应算法、循环首次适应算法等。
系统在对用户所释放的存储空间进行回收时,也采取类似于内存回收的方法,即要考虑回收区是否与空闲表中插入点的前区和后区相邻接,对相邻接者应予以合并。
应该说明,在内存分配上,虽然很少采用连续分配方式,然而在外存的管理中,由于这种分配方式具有较高的分配速度,可减少访问磁盘的 I/O 频率,故它在诸多分配方式中仍占有一席之地。例如,在前面所介绍的对换方式中,对对换空间一般都采用连续分配方式。对于文件系统,当文件较小(1~4 个盘块)时,仍采用连续分配方式,为文件分配相邻接的几个盘块;当文件较大时,便采用离散分配方式。另外,对于多媒体文件,为了能减少磁头的寻道时间,也采用连续分配方式。
2. 空闲链表法
1)空闲盘块链。
这是将磁盘上的所有空闲空间,以盘块为单位拉成一条链。当用户因创建文件而请求分配存储空间时,系统从链首开始,依次摘下适当数目的空闲盘块分配给用户。当用户因删除文件而释放存储空间时,系统将回收的盘块依次插入空闲盘块链的末
尾。
2)空闲盘区链。
这是将磁盘上的所有空闲盘区(每个盘区可包含若干个盘块)拉成一条链。在每个盘区上除含有用于指示下一个空闲盘区的指针外,还应有能指明本盘区大小(盘块数)的信息。分配盘区的方法与内存的动态分区分配类似,通常采用首次适应算法。在回收盘区时,同样也要将回收区与相邻接的空闲盘区相合并。
位示图法
1. 位示图
位示图是利用二进制的一位来表示磁盘中一个盘块的使用情况。当其值为“0”时,表示对应的盘块空闲;为“1”时,表示已分配。这样,由所有盘块所对应的位构成一个集合,称为位示图。通常可用 m × n 个位数来构成位示图,并使 m × n 等于磁盘的总块数。位示图也可描述为一个二维数组 map[m, n]。
2. 盘块的分配
根据位示图进行盘块分配时,可分三步进行:
1)顺序扫描位示图,从中找出一个或一组其值为“0”的二进制位(“0”表示空闲时)。
2)将所找到的一个或一组二进制位转换成与之相应的盘块号。假定找到的其值为“0”的二进制位位于位示图的第 i 行、第 j 列,则其相应的盘块号应按下式计算:
b = n * (i - 1) + j;
式中,n 代表每行的位数。
3)修改位示图,令 map[i,j] = 1。
3. 盘块的回收
盘块的回收分两步:
1)将回收盘块的盘块号转换成位示图中的行号 i 和列号 j 。转换公式为:
i = (b - 1) / n + 1;
j = (b - 1) % n + 1;
2)修改位示图。令 map[i,j] = 0。
位示图常用于微型机和小型机中。
空闲表法和空闲链表法都不适用于大型文件系统,因为这会使空闲表或空闲链表太长。在 UNIX 系统中采用的是成组链接法,这是将上述两种方法相结合而形成的一种空闲盘块管理方法,它兼备了上述两种方法的优点而克服了两种方法均有的表太长的缺点。
其中最主要的技术便是磁盘高速缓存。
容错技术是通过在系统中设置冗余部件的办法,来提高系统可靠性的一种技术。
磁盘容错技术往往也被人们称为系统容错技术 SFT。可把它分成三个级别:第一级(SFT-I)是低级磁盘容错技术;第二级(SFT-II)是中级磁盘容错技术;第三级是系统容错技术,它基于集群技术实现容错。
请您阅读文章声明,默认同意该声明
打赏通道