磁盘存储器管理

连续组织的原理及优缺点

又称连续分配方式:要求为每一个文件分配一组相邻接的盘块。通常它们都位于一条磁道上,磁道已满,再分配下一条磁道;
顺序文件结构:在采用连续分配方式时,可把逻辑文件中的记录顺序地存储到邻接的各物理盘块中,此时的物理文件称顺序文件。

优点

  • 存取速度快,系统开销小;
  • 当文件记录定长时,可以进行随机定位访问。

缺点

  • 文件进行动态扩充困难,删除部分内容处理不便;
  • 文件增加、删除后,容易形成磁盘碎片。

链接组织的原理及优缺点

一个文件的信息存放在若干不连续的物理盘块中,各块之间通过指针连接,前一个物理盘块指向下一个物理盘块。
链接组织方式:通过在每个盘块上的链接,将同属于一个文件的多个离散的盘块链接成一个链表,形成的物理文件称为链接文件
链接组织方式又分为隐式链接和显式链接两种方式。

优点

  • 解决存储介质上的碎片问题,提高了存储空间的利用率;
  • 文件的动态增长、删除部分内容等处理方便。

缺点

  • 链接文件不能进行随机访问,只能按照文件的存储块链顺序访问,查找效率较低。
  • 链接文件需要“指针”的额外空间开销。

索引组织的原理及优缺点

一个文件的信息存放在若干不连续物理块中,系统为每个文件建立一个专用数据结构— —索引表,并将这些块的块号存放在一个索引表中;
分为单级索引分配、多级索引分配和混合索引分配方式

单级索引组织方式
索引分配方法为每个文件分配一个索引块(表),该文件的所有盘块号,都记录在该索引块中。

优点
索引文件可以做到随机访问,访问速度快,文件长度增减也很容易;

缺点
索引文件空间开销是最大的:花费较多的外存空间。由于每个文件通常需要一个专门的盘块作为索引块。对于小文件采用索引方式时,其索引块的利用率极低。
索引文件的存取过程复杂,访问策略的不同对文件系统的效率影响较大。

多级索引组织方式
大文件需要多个索引块→索引块的组织问题

解决办法
为这些索引块再建立一级索引,称为第一级索引,即系统再分配一个索引块,作为第一级索引的索引块,将第一块,第二块,…,等索引块的盘块号,填入到此索引表中。这样形成了两级索引分配方式。
如果文件非常大时,还可用三级、四级索引分配方式。

混合索引组织方式
将多种索引组织方式(直接地址,一级索引组织方式,二级索引组织方式等)相结合而形成的一种组织方式。
好处:根据文件大小定组织方式

隐式链接与显式链接

隐式链接

文件目录的每个目录项,都须含有指向链接文件第一盘块和最后一个盘块的指针。每个盘块中都含有一个指向下一个盘块的指针。

问题:它只适合于顺序访问,它对随机访问是极其低效的(需外存磁盘访问),并且可靠性较差。

解决方案:将几个盘块组成一个簇(cluster),以减少查找指定块的时间。易形成“簇内碎片”问题

显式链接

指把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,该表称为文件分配表(FAT)。
该表在整个磁盘仅设置一张。表的序号是物理盘块号,从0开始,直至N-1;N为盘块总数。在每个表项中存放链接指针,即下一个盘块号。
在该表中,凡是属于某一文件的第一盘块号,或者说每一条链的链首指针所对应的盘块号,均作为文件地址被填入相应文件的文件控制块(FCB)的“物理地址”中。

优点:这样查找文件记录的过程是在内存中进行的,因而减少了访问磁盘的次数,提高了检索速度。

问题:不能支持高效的直接存取。要对一个较大的文件进行直接存取,须首先在FAT中顺序地查找许多盘块号;FAT本身需占用较大的内存空间。

文件分配表(FAT)属于哪种分配?

链接组织

对空闲磁盘空间的管理常采用哪些方法?在 UNIX 中采取何种方法?

  • 对于大型文件系统, 空闲表和位示图法空间开销大
  • 空闲链法一种隐性链接,虽然空间开销小,但时间开销大(空闲盘块/盘区的磁盘访问)
  • 在UNIX系统中采用成组链接法。

成组链接法

成组链接法实质是盘块组的隐性链接,通过空闲盘块号栈将当前一组空闲盘块信息放入内存,空闲盘块号栈是位于内存的空闲盘块索引表

空闲盘块组织

文件区中的所有空闲盘块,被分成若干组。例如,每100个盘块作为一组。
将每一组含有的盘块总数和该组所有的盘块号,记入其前一组的第一个盘块。
闲盘块号栈:空闲盘块号栈存放当前可用的一组空闲块的盘块号及盘块数 N。栈必须互斥访问,N兼作栈顶指针。S.free(0)是栈底,S.free(N-1)是栈顶。

分配和回收过程

分配

该过程首先检查空闲盘块号栈是否上锁,如未上锁,便从栈顶取出一空闲盘块号,将与之对应的盘块分配给用户,然后将栈顶指针下移一格。把栈中的空闲盘块数减1并返回。若该盘块号已是栈底, 即S.free(0),这是当前栈中最后一个可分配的盘块号。由于在该盘块号所对应的盘块中记有下一组可用的盘块号,因此, 须调用磁盘读过程,将栈底盘块号所对应盘块的内容读入栈中,作为新的盘块号栈的内容,把原栈底对应的盘块分配出去(其中的有用数据已读入栈中)。

回收

在系统回收空闲盘块时,须调用盘块回收过程进行回收。它是将回收盘块的盘块号记入空闲盘块号栈的顶部,并执行空闲盘块数加1操作。当栈中空闲盘块号数目已达100时, 表示栈已满,便将现有栈中的100个盘块号, 记入新回收的盘块中,再将其盘块号作为新栈底。

操作系统接口

操作系统接口分为:用户接口和程序接口(概念)。用户接口包括:命令接口、图形接口
程序接口是由一组系统调用组成。
系统调用——是在 OS 核心设置的一组实现系统功能的子程序(过程),并将其提供给应用程序调用。