【操作系统】两万字学习文件管理那点东西!

 

写在前面

  • 关于文章

    操作系统作为计算机的最为重要的系统软件必须提供数据存储,数据处理、数据管理的基本功能。数据存储通常是以文件形式存放在磁盘或其他外部存储介质上,数据处理是通过文件处理来完成的,数据管理是通过文件管理来完成的。文件管理是通过目录来完成的,而目录又是建立在分区或卷的基础上的。操作系统中与文件和目录相关的子系统称为文件系统,文件系统在操作系统中占有非常重要的地位。

概述

在计算机系统中,信息的组织、存取、加工和保管等工作主要是由文件系统来完成的。对大多数用户来说,除了人机界面之外,文件系统是用户经常访问、直接处理的一个部分

操作系统对信息资源的管理包括对操作系统本身、编译程序等各种系统程序、系统工具、库函数及各种用户应用程序的管理,另外还包括对系统的各种数据以及对用户的数据的管理。

既然所有的计算机程序都要存储信息﹑检索信息,那么,对信息的存储就有一些基本的要求,概括起来有三条:
(1)能够存储大量的信息;(2)长期保存信息;( 3)可以共享信息。

磁盘存储器磁带存储器的出现,程序和数据等信息资源才开始真正被计算机所管理。把信息以一种单元,即文件的形式,存储在磁盘或其他外部存储介质上,导致了文件系统的出现
在文件系统中,把程序和数据等信息看作文件,把它们存放在磁盘或磁带等大容量存储介质上。文件是通过操作系统来管理的,这些管理内容包括:文件的结构、命名、存取﹑使用、保护和实现方法

操作系统为系统管理者和用户提供了对文件的透明存取。所谓透明存取,是指不必了解文件存放的物理机制和查找方法,只需给定一个代表某段程序或数据的文件名称,文件系统就会自动地完成对与给定文件名称相对应的文件的有关操作

文件和文件系统

文件

文件可以被解释为一组带标识的在逻辑上有完整意义的信息项的序列。这个标识为文件名,信息项构成了文件内容的基本单位。。这些信息项是一组有序序列,它们之间具有一定的顺序关系。

在计算机系统中,程序或数据都可以是文件。

文件提供了一种将数据保存在外部存储介质上以便于访问的功能。为了方便用户使用,每个文件都有特定的名称。这样用户就不必关心文件存储方法、物理位置以及访问方式等,而可以直接通过文件名来使用文件。

通常,系统为一个正在使用的文件提供读写指针。读指针用来记录文件当前的读取位置,它指向下一个将要读取的信息项;写指针用来记录文件当前的写入位置,下一个将要写入的信息项被写到该处。

各种文件系统的文件命名不尽相同。文件名称的长度因系统而异。有的文件系统不区分文件名的大小写,而有的则加以区分。有的文件系统只能使用ASCII字符命名文件,而有的则可以使用更为广泛的字符如Uni-code。例如FAT12属于前者,而UFS属于后者。

文件的长度,可以是单字节或多字节;这些字节可以是字符,也可以组成记录;而且各个记录的长度可以相等,也可以不相等。

  • 一般地,文件建立在存储器空间里,以便使文件能够长期保存。即:文件一旦建立,就一直存在,直到该文件被删除或该文件超过事先规定的保存期限
  • 文件是一个抽象机制,它提供了一种把信息保存在存储介质上而且便于以后存取的方法,用户不必关心文件实现的细节。

文件系统

文件系统,是操作系统中统一管理信息资源的一种软件。它管理文件的存储、检索、更新,提供安全可靠的共享和保护手段,并且方便用户使用。

从用户的角度来看,文件系统负责为用户建立文件、读写文件、修改文件、复制文件和撤销文件。文件系统还负责完成对文件的按名存取和对文件进行存取控制

文件系统的作用是很多的。比如,在多用户系统中,可以保证各用户文件的存放位置不冲突,还能防止任一用户对存储存空间的占而不用。文件系统既可保证任一用户的文件不被未经授权的用户窃取﹑破坏,又能允许在一定条件下由多个用户共享某些文件。

通常,文件系统使用磁盘、磁带和光盘等大容量存储器作为存储介质。因此,文件系统可存储大量的信息。

文件分类

文件系统的分类,其目的是:对不同文件进行管理,提高系统效率;同时,提高文件系统的用户界面友好性

文件用途

按文件的用途可以把文件分为如下三类:

  • 1)系统文件
    操作系统和各种系统应用程序和数据所组成的文件
    该类文件只允许用户通过系统调用来访问它们,这里访问的含义是执行该文件。但不允许对该类文件进行读写和修改
  • 2)库函数文件
    标准子程序及常用应用程序组成的文件

    该类文件允许用户对其进行读取、执行,但不允许对其进行修改

  • 3 )用户文件

    用户文件是用户委托文件系统保存的文件。

    这类文件只由文件的所有者或所有者授权的户才能使用。用户文件可以由源程序、目标程序、用户数据文件、用户数据库等组成。

组织形式

  • 1)普通文件
    普通文件主要是指文件的组织格式为文件系统中所规定的最一般格式的文件,例如由字符流组成的文件。

    普通文件既包括系统文件,也包括用户文件、库函数文件和用户实用程序文件等。

  • 2)目录文件
    目录文件是由文件的目录构成的特殊文件

    目录文件的内容不是各种程序文件或应用数据文件,而是含有文件目录信息的一种特定文件。

    目录文件主要用来检索文件的目录信息

  • 3)特殊文件
    特殊文件在形式上与普通文件相同,也可进行查找目录等操作。但是特殊文件有其不同于普通文件的性质

    比如,在UNIX类系统中,输入输出设备被看作是特殊文件,这些特殊文件的使用是和设备驱动程序紧密相连的,操作系统会把对特殊文件的操作转成为对应设备的操作。

常见分类

文件分类的方式是多样的,这里再列出几种常见的分类方式。

  • 文件的保护方式可划分为:只读文件、读写文件、可执行文件、无保护文件等。
  • 信息的流向分类可划分为:输入文件.输出文件和输入输出文件等。
  • 文件的存放时限可划分为:临时文件、永久文件和档案文件等。

    临时文件,即记有临时性信息的文件;永久性文件,即其信息需要长期保存的文件;档案文件,即保存在作为“档案”用的磁带或光盘等永久性介质上以备查证和恢复时使用的文件。

  • 文件所使用的介质类型分类可划分为:磁盘文件﹑磁带文件、卡片文件和打印文件等。
  • 还可以按文件的组织结构分类。比如,由用户组织的文件称逻辑文件,逻辑文件可采用流式文件和记录式文件两种组织方式。而文件在存储介质上的组织方式是文件的物理结构(物理文件),常用的组织方式有顺序文件、链接文件和索引文件等。

UNIX系统文件分类

在UNIX 类操作系统中,文件系统包括三种类型的文件:

  • (1)普通文件。这是内部无结构的一串平滑的字符所组成的文件。
  • (2)目录文件。这是由文件目录项所构成的文件。
  • (3)特殊文件。在UNIX类操作系统中,把!О设备也看成是一种文件——特殊文件。

文件系统功能

作为一个统一的文件管理机构,文件系统应具有下述功能:

  • (1)统一管理文件的存储空间,实施存储空间的分配与回收
  • (2)实现文件从名字空间到外存地址空间的映射。即实现文件的按名存取,以对用户透明的方式管理名字空间
  • (3)实现文件信息的共享,并提供文件的保护和保密措施
  • (4)向用户提供一个方便使用的接口(提供对文件系统操作命令,以及提供对文件的操作命令:信息存取、加工等)。
  • (5)系统维护及向用户提供有关信息
  • (6)保持文件系统的执行效率。文件系统在操作系统接口中占的比例最大,用户使用操作系统的感觉在很大程度上取决于对文件系统的使用效果。
  • (7)提供与I/O的统一接口

文件的结构

任何一种文件都有其内在的文件结构。用户看到的是经过抽象的文件结构,这就是文件的逻辑结构。除了文件的逻辑结构,文件还有其物理结构,也就是文件在实际的存储空间存储时的结构。

逻辑结构

文件的逻辑结构就是用户所看到的文件的组织形式。文件逻辑结构是一种经过抽象的结构,所描述的是记录在文件中信息的组织形式

文件中的这些信息到底在物理介质上是如何组织存储的与用户没有直接关系。

可以把文件划分成三类逻辑结构:无结构的字符流式文件定长记录文件和不定长记录文件构成的记录树。定长记录文件和不定长记录文件可以统称为记录式文件

流式文件

流式文件是有序字符的集合,其长度为该文件所包含的字符个数,所以又称为字符流文件。在流式文件中,构成文件的基本单位是字符
可以认为流式文件就是一串有开头和结尾的连续字符。在这串字符中,不存在任何可以视为结构的组织形式,所以可以说,流式文件无结构

源程序、目标代码等文件属于流式文件。UNIX类系统采用的是流式文件结构。

记录式文件

记录式文件是一组有序记录的集合。在记录式文件中,构成文件的基本单位是记录
记录是一个具有特定意义的信息单位,它由该记录在文件中的逻辑地址(相对位置)与记录名所对应的一组键、属性及其属性值所组成,可按键进行查找

记录式文件可分为定长记录文件和不定长记录文件两种。

  • 定长记录文件:各个记录长度相等。在检索时,可以根据记录号i及记录长度L就可以确定该记录的逻辑地址。
  • 不定长记录文件:各个记录的长度不等,在查找时,必须从第一个记录起一个记录一个记录查找,直到找到所需的记录。

记录式的有结构文件可把文件中的记录按各种不同的方式排列,构成不同的逻辑结构,以便用户对文件中的记录进行修改、追加﹑查找和管理等操作。

物理结构

常用的文件物理结构有顺序结构、链接结构、索引结构和Ⅰ节点结构。

顺序结构

顺序结构又称连续结构,这是一种最简单的文件物理结构,它把逻辑上连续的文件信息依次存放在连续编号的物理块中。也就是说,如果一个文件长n块,并从物理块号b开始存放,则该文件占据物理块号b,b+1 ,b+2 ,… ,b+n-1 。

在顺序结构中,一个文件的目录项中只要指出该文件占据的总块数和起始块号即可
顺序结构支持顺序存取和随机存取
对于顺序存取,顺序结构的存取速度快。所需的磁盘寻道次数和寻道时间都是最少的

顺序结构的缺点在于,文件不能动态增长,因为顺序结构的物理块必须是连续的
对于顺序结构的文件,申请新的空闲空间时,如果该文件长n块,必须找到连续的n个空闲块,才能存放该文件,相对来说查找速度较慢。有可能出现找不到满足条件的连续的n个空闲块的情况,也不利于文件插入和删除

随着文件不停地被分配和被删除,空闲空间逐渐被分割为很小的部分,最终导致出现存储碎片,此时虽然空间的总空闲数比申请的要多,但却因为不连续,都是小碎片而无法分配。

链接结构

实质就是为每个文件构造所使用磁盘块的链表。使用这种链接结构的文件,将逻辑上连续的文件分散存放在若干不连续的物理块中。在每个物理块中都设有一个指针,该指针指向其后续的物理块,如图所示。

在图中,一个文件由4个物理块组成,文件控制块中保存有文件记录的首指针。首指针指向逻辑记录0,即该文件使用的第一个物理块,块号为9,其后依次为块16,2,10。在每个物理块中都包括一个指向下一个物理块的指针。这些指针是不能被用户使用的,甚至不为用户所知。

如果每个物理块的大小是512字节,而一个盘块地址需要占用两个字节,则用户看到的块长,即逻辑块长,是510字节。链接指针需要占用一定的空间,在这个例子中,指针占用了0.39%的空间。

在建立链接结构的文件时,只需在文件目录中建立一个新的目录条目,将该条目中的首块指针初始化为空,以说明现在该文件是空的,文件长度初始化为零

链接结构的优点是,存储碎片问题迎刃而解,有利于文件动态扩充,有利于文件插入和删除,提高了磁盘空间利用率

链接结构的文件动态扩充时也很简单。从空闲空间信息中得到一个空闲块亦即第一个空闲块,然后将该块链接到文件尾部,并改变文件的长度值即可。只要还能申请到空闲块,文件可以一直动态地扩充增长。

链接结构的主要缺点是,存取速度慢,不适于随机存取文件;磁盘的磁头移动多,效率相对较低;存在文件的可靠性问题,比如指针出错,文件也就出错了;另外,链接指针需要占用一定的空间

链接结构的文件所使用的物理块是不连续分配的,所以一个链接结构的文件的所有物理块在磁盘上是分散分布的。与顺序结构的文件相比,在访问一个链接结构的文件时需要更多的寻道次数和寻道时间

索引结构

索引结构的文件把每个物理盘块的指针字集中存放在被称为索引表的数据结构中的内存索引表中。在每个文件相应的目录条目中包括该文件的索引表地址,而索引表中的第i个条目指向文件的第i块,如图所示。这样,要读某个文件的第i块,只需从该文件索引表的第i个条目中得到该文件块的地址就行了。

在开始建立索引结构的文件时,把索引表中的所有指针置为空。当第一次需要在文件的第i块写入信息时,从空闲块信息中任意申请一个空闲块,然后将该块地址写人索引表的第i个条目。

索引文件结构保持了链接结构的优点,又解决了其缺点。索引文件可以满足文件动态增长的要求,也满足了文件插入、删除的要求。索引文件还能充分利用外存空间

索引结构文件既适于顺序存取,也适于随机存取。这是因为有关逻辑块号和物理块号的信息全部保存在了一个集中的索引表中,而不是像链接文件结构那样分散在各个物理块中。

索引结构的缺点是:会引起较多的寻道次数和寻道时间;索引表本身增加了存储空间的开销

如果文件很大,它的文件索引表也就较大。如果索引表的大小超过了一个物理块,那么也必须决定索引表的物理存放方式如果索引表采用连续结构,不利于索引表的动态增加。如果采用链接文件结构存放索引表,会增加访问索引表的时间开销

较好的一种解决办法是采用间接索引,也称多级索引间接索引是在索引表所指的物理块中不存放文件信息,而是装有存放这些信息的物理块地址。这样就有一级间接索引,还可以进行类似的扩充,即二级间接索引,等等。但是,多级索引显然会降低文件的存取速度

在索引结构文件中要存取文件时,需要至少访问存储设备两次以上。其中,一次是访问索引表,另一次是根据索引表访问在存储设备上的文件信息。这样势必降低了对文件的存取速度。一种改进的方法是,当对某个文件进行操作之前,系统预先把索引表放入内存

Ⅰ节点结构

Ⅰ节点是一种多级索引文件结构。Ⅰ节点最早出现在UNIX操作系统中,是多级索引结构文件在UNIX中的具体实现。

Ⅰ节点在一般多级索引结构文件的基础上,进行了结构上的变化,克服了索引结构的缺点。
Ⅰ节点的基本思想是,给每个文件赋予一张称为Ⅰ节点的小表,在这张小表中列出了文件属性和文件中各块在磁盘上的地址

在采用Ⅰ节点的文件中,文件的开始几个磁盘地址存放在Ⅰ节点内。比如,在图中,I节点内可记录15个盘块地址指针,其中前12个指针直接指向文件数据盘块,称为直接盘块对于所有各级索引表统称为间接盘块;在图中 ,第13个指针指向一个索引表,该索引指向文件数据盘块,称为一重间接盘块;第14个指针指向一个二级索引表,称为二重间接盘块,该索引表所指向的索引表指向文件数据盘块;第15个指针指向一个三级索引表,称为三重间接盘块
这样,对于不超过12块的小文件就不需要单独的索引表,因为所需信息均在Ⅰ节点中。在打开文件时,这些信息从磁盘读入内存。

对于稍大一些的文件,在Ⅰ节点中有一个索引表,即一重间接盘块地址,这个磁盘块中含有附加的磁盘地址。
如果文件再变大,就可以采用Ⅰ节点中的二级索引表。如果这还不够的话,还可以采用三级索引表。

使用Ⅰ节点的文件结构,不仅适合小文件使用,也可供大型文件使用,灵活性比较强。这种文件结构占用的系统空间比一般多级索引结构的文件要少。

存储介质

特点

在计算机系统中,外存储设备同内存相比较,一般有容量大、断电后仍可保存信息﹑速度较慢、成本较低等特点。

外存储设备通常由驱动部分和存储介质两部分组成。存储介质又常被称为,“卷”字来自把存储介质看作“信息容器”的比喻。驱动器的作用是使计算机能够实现读写(及保存、控制、测试)存储介质上的内容。例如,软盘设备由软盘驱动器(即软盘驱动器硬件部分和控制部分)以及软盘片(即存储实体)组成。

有的外存储设备中,存储实体可以同驱动器分离,称为可移动的存储实体。对可移动的存储实体而言,存储实体可以单独保存起来,也可以装到同一计算机系统的另一可移动驱动器上,还可以装到不同计算机系统的同类设备上,从而实现了存储实体的移动。常见的闪存,又称Flash盘或E盘,就是可移动存储实体中的一种。

在磁盘中,磁盘空间由盘面、柱面、磁道和扇区组成。对外存储设备的使用就是在外存储设备上存取数据,即往外存储设备写数据,或从外存储设备读数据。

要求

用户使用外存储设备,目的在于读写存储在介质上的数据。用户对外存储设备的要求是:方便、效率、安全,更具体来说,有以下的要求:

  • (1)在读写外存储设备时不涉及硬件细节,用户直接使用逻辑地址和逻辑操作。
  • (2)外存储设备存取速度尽可能快,容量大且空间利用率高。
  • (3)外存储设备上存放的信息安全可靠,防止来自硬件的故障和他人的侵权。
  • (4)可以方便地共享,存储空间可动态扩大、缩小,携带、拆卸便捷,可随时了解存储设备及使用情况。
  • (5)以尽可能小的代价完成上述要求。

外存储设备的特性决定了文件的存取方式。常见的外存储设备有顺序存取设备和随机存取设备两种。

分类

顺序存取设备

磁带是最早使用的磁记录存储介质。磁带是一种顺序存取设备,因为在磁带上,只有在前面的物理块被访问之后才能存取后续的物理块,如图所示。

磁带设备的优点是存储容量大。磁带虽能保存大容量的数据,但存取速度太慢。更重要的是,由于磁带只能进行顺序存取,即前面的物理块被存取访问之后,才能存取后续的物理块的内容。这种设备不适合用于随机存取方式,故磁带主要用于后备存储和保存不经常使用的信息,或用作不同系统之间传递数据的一种介质

随机存取设备

在随机存取设备中 ,磁盘是一种典型的随机存取设备。磁盘设备允许文件系统直接存取磁盘上的任意物理块。为了存取一个特定的物理块,可将磁头直接移动到所要求的位置上,而不像顺序存取那样需要顺序移过一系列的其他物理块之后,才能到达需要存取的特定物理块。磁盘结构如图所示。

磁盘一般由若干磁盘片组成,每个磁盘片对应两个读/写磁头,分别对磁盘片的上下两面进行读写。各个磁头与磁头臂相连。系统在对磁盘初始化时,将盘面上划分出一些同心圆,作为存储信息的介质,称为磁道(简称道)。对每个磁道又分为若干段,称为扇区。每个扇区就构成了一个物理块。整个磁盘上的所有扇区(物理块)统一编号,从0开始。所有磁盘片的相同磁道称为柱面

磁盘上每个物理块的位置可用柱面号(磁道号)磁头号和扇区号表示,这些地址与物理块号一一对应。其计算公式如下:
(1)已知物理块号,则磁盘地址:

  • 柱面号=[物理块号/(磁头数x扇区数)]
  • 磁头号=[(物理块号mod(磁头数×扇区数))/扇区数]
  • 扇区号=(物理块号 mod(磁头数×扇区数) ) mod 扇区数

(2)已知磁盘地址:

  • 物理块号=柱面号×(磁头数x扇区数)+磁头号×扇区数+扇区号

磁头臂是沿半径方向移动的。在访问磁盘时,首先要把磁头臂移动到相应柱面的磁道上,称为寻道,然后旋转盘片将指定磁头定位在指定扇区上,最后控制磁头对扇区中的数据进行读写。所以,一次访盘时间由寻道时间,旋转定位时间和数据传输时间组成,其中,寻道时间由于是机械动作,因而所花费的时间最长

通过对磁盘读写的分析,可以看到,存取磁盘上任一物理块的时间与该物理块所处的位置无关,这与顺序存储设备是完全不同的。
由于盘片正反两面都使用,或若干个磁盘片组合固定在一起由同一个马达驱动,因此需要标定盘面的代号或磁头号。

将所有盘面中处于同一磁道号上的所有磁道组成一个柱面,这就形成了柱面号。读写同一柱面内的数据不需移动磁头,实际上节省了访盘时间。

固态硬盘

固态硬盘是由闪存作为主要存储介质,辅之与控制电路和译码寻址电路共同组成一个计算机的外部设备,其主要的功能是用于存放数据信息并可以随机访问

由于计算机系统大量使用硬盘接口,因此固态硬盘沿用了原来的硬盘接口规范,它有如下优点:

  • 非易失:固态硬盘存入的数据失电以后能继续保存数据信息。
  • 访问速度快:由于固态硬盘无机械结构,寻址通过译码电路完成,因此相对普通硬盘其访问速度较快。特别是读出时间,几乎与RAM相当,这对纯代码的访问非常有利。
  • 低功耗:无电机等大功率耗能单元。
  • 抗冲击:无磁头等精密器件,可以在频繁移动的设备上使用。

它的缺点是:

  • 成本高:单位存储成本还是高于传统硬盘,因此大量应用还受到限制。
  • 写入寿命限制:最常用的闪存是NAND存储器,其写入次数是有限的,以廉价的三

    层存储单元(Triple Layer Cell,TLC)为例,其每个单元的写入次数为500 ~ 1000 次,对于操作系统的LOG记录而言是不够的,当然技术人员通过编制主控软件使得存储单元顺序平衡存取,可以大大延长固态硬盘的寿命。

存取方式

一个文件要能够为用户所使用,单有其逻辑结构和物理结构是不够的,必须提供一种文件的逻辑结构和物理结构之间的映射或变换机制,其作用是把用户对一个文件中某个逻辑记录访问的请求转变为对该文件物理结构中某个存储块中的字符串的读写请求,也就是把对逻辑字符串地址的请求变换为对物理字符串地址的请求

文件的存取方式就是一种文件的逻辑结构和物理结构之间的映射或变换机制
文件常用的存取方法有:顺序存取和随机存取两种方式。

顺序存取

顺序存取就是按从前到后的次序依次访问文件的各个信息项

  • 对记录式文件,是按记录的排列顺序来存取。顺序存取只要把当前记录的逻辑地址加上记录的长度,就可以得到下一个记录的逻辑地址。若要直接存取第n个记录,其逻辑地址则为( n-1)×记录长度。
  • 对流式文件,顺序存取反映当前读写指针的变化,在存取完一段信息后,读写指针自动指出下次存取时的位置。

随机存取

随机存取又称直接存取,即允许用户按任意的次序直接存取文件中的任意一个记录,或者根据存取命令把读写指针移到文件中的指定记录处读写
UNIX类操作系统的文件系统采用了顺序存取和随机存取两种方法。
在图中列出了文件结构及文件存取方式与文件存储介质的关系,以便使读者对三者之间的关系有一个更清晰的认识。

文件目录

在一个计算机系统中保存有许多文件,用户在创建和使用文件时只给出文件的名字,由文件系统根据文件名找到指定文件。为了便于对文件进行管理,设置了文件目录,用于检索系统中的所有文件

文件目录组成

文件系统的一个特点是“按名存取”,即用户只要给出文件的符号名就能方便地存取在外存空间的该文件的信息,而不必了解和处理文件的具体物理地址
在操作系统中,为了管理大量的文件,为每个文件都设置一个描述性数据结构——文件控制块FCB(File Control Block ) ,把所有文件的文件控制块有机地组织起来,就构成了文件控制块的一个有序集合,称为文件目录
文件目录实际就是文件符号名到文件物理地址之间的一种映射机制

PCB结构

文件控制块FCB是文件存在的标志,它记录了系统管理文件所需要的全部信息

在文件控制块中的信息可以分成文件存取控制信息文件结构信息文件管理信息

FCB通常应包括以下内容:

  • 文件名,是用户给文件取的名称。
  • 文件号,是系统在文件创建时所指定的一个编号,文件号唯一地标识一个文件,即在一个文件系统中文件号是不重复的。(可以改变)
  • 用户名,记录了该文件创建者的名称。一般而言,一个文件的创建者就是该文件的所有者
  • 文件物理结构,标识了该文件内部的物理结构是顺序结构、链接结构还是索引结构。
  • 文件逻辑结构,指出该文件是流式文件还是记录式文件。
  • 文件物理位置,记录了与文件在存储介质中的物理位置有关的信息。如果文件是链接结构.则该栏目中保存了该文件记录的首指针;如果是索引结构,则该栏目中保存了该文件的索引表地址。
  • 文件长度和记录大小,则分别保存有该文件的长度和每个物理块的大小。
  • 文件类型,这与该文件系统的文件类型的划分方法有关。一些常见的文件类型有:源程序文件、可执行文件、字符文件、数据文件、语音文件和视频文件等。
  • 文件属性,指出文件是只读式文件、可读写文件还是只可执行文件。
  • 共享说明,指出该文件是否允许其他用户使用,是仅允许组内用户使用,还是允许系统中的所有用户使用等。
  • 口令,是指为了文件的安全和文件信息的保密所设置的访问文件的密码。
  • 保存期限,是指预计该文件的保管时间。
  • 共享计数、文件的建立日期、保存期限、最后修改日期、最后访问日期

目录文件

当用户建立一个新文件时,与该文件有关的一些信息与属性记录在该文件的文件控制块内。

多个文件的文件控制块集中在一起组成了文件的目录

通常,文件目录以文件的形式保存起来,这个文件就被称为目录文件

目录文件是长度固定的记录式文件
在目录文件中,每个文件的文件控制块又称为目录文件中的目录项

如果某个系统中的文件比较多,对应的目录文件显然也比较长。有时,为了节省内存的空间,就把目录文件保存在外存储器上,在需要时才把目录文件调入内存。

文件目录结构

文件目录是实现用户按名存取文件的一种手段。在用户要求读一个文件时,系统便从文件目录中查找用户所指定文件是否存在,并核对是否有权使用。一个好的目录结构应该既能方便用户的检索,又能保证文件的安全

一级目录结构

一级目录结构是一种最简单、最原始的文件目录结构。通常该目录表存放在存储设备的某个固定区域,在系统初启时或需要时,系统将该目录表调入内存或部分调入内存

有了一级目录,文件系统就可实现对文件空间的管理和按名存取

当用户进程要求对某个文件进行读写操作时,它调用有关的系统调用,通过事件驱动或中断控制方式进入文件系统,此时,处理器控制权在文件系统手中。文件系统首先根据用户给定的文件名搜索一级文件目录表,以查找该文件信息的对应物理块号。如果搜索不到对应的文件名,或者失败返回(在进行读操作时) ,或者由空闲块分配程序进行空闲块分配,然后再修改一级目录表。如果已找到该文件的第一个物理块块号,则系统根据该文件所对应的物理文件的结构信息,计算出所要读写的文件信息块的全部物理块块号,然后系统把处理器控制权交给设备管理系统,启动有关设备进行文件的读写操作。

在一级目录表中,只能按连续结构或顺序结构存放,因此,文件名与文件必须—―对应,限制了用户对文件的命名,不能重名。如果两个不同的文件重名的话,则系统将把它们视为同一文件。

一级目录结构的优点是简单,容易实现。

二级目录结构

为克服一级目录结构中文件目录命名中的可能冲突,并提高对目录文件的检索速度,一级目录被改进扩充成二级目录。

在二级目录结构中,目录被分为两级。第一级称为主文件目录(Main File Directory ,MFD),给出了用户名和用户子目录所在的物理位置;第二级称为用户文件目录(User File Directory ,UFD),又称用户子目录,给出了该用户所有文件的FCB。这样,由MFD和UFD共同形成了二级目录。

二级目录解决了文件的重名问题,可以实现用户间的文件共享,查找时间也降低了。二级目录的缺点是增加了系统的开销。

树形目录

在树形目录结构中,除了最低一级的物理块中装有文件信息外,其他每一级目录中存放的都是下一级目录或文件的说明信息,由此形成层次关系,最高层为根目录,最低层为文件。根目录是唯一的,由它开始可以查找到所有其他目录文件和普通文件。根目录一般可放在内存。从根结点出发到任一个非叶结点或叶结点(文件)都有且仅有一条路径,该路径上的全部分支组成了一个全路径名

多级目录结构的优点是,层次结构清晰,便于管理和保护,解决了重名问题,查找速度加快。多级目录结构的缺点是,查找一个文件按路径名逐层检查,由于每个文件都放在外存,多次访盘会影响速度,结构相对比较复杂。

路径名

当前目录

文件系统向用户提供了一个当前正在使用的目录,称为“当前目录”,又称“工作目录”用户可随意更改当前目录
用户在访问文件时,需要进行目录检索,这时用户给出文件名,系统按名寻找目录项。有两种根据路径名检索的方法,一种是全路径名,另一种是相对路径

  • 绝对路径

    使用全路径名检索的方法,需要从根目录开始,列出由根到用户指定文件的全部有关子目录,全路径名又称为“绝对路径名”

    如果每次都从根结点开始检索,很不方便。因为通常各目录文件放在外存,故影响访问速度,尤其是当目录层次较多时检索要耗费很多时间。

  • 相对路径

    为克服这一缺点,引入“相对路径”的概念。相对路径的含义是,用于检索的路径名只是从当前目录开始到所要访问文件的一段路径,即以当前目录作为路径的相对参照点。这样检索路径缩短,检索速度提高。

目录检索

一个文件控制块一般要占很多存储单元,这样导致目录文件往往也很大。在检索目录时,为了找到所需要的目录项,常常要将存放目录文件的多个物理块逐块读入内存进行查找,这就降低了检索速度

为加快目录检索可采用目录项分解法,即把目录项(FCB)分为符号目录项(次部)和基本目录项(主部)两部分

  • 符号目录项包含文件名以及相应的文件号
  • 基本目录项包含了除文件名外文件控制块的其他全部信息

目录操作

在UNIX 中,“.”代表当前目录,“..”代表根目录。

  • (1) CREATE,创建目录。在新创建的目录中,除了目录项“.”和“..”外,目录内容是空的。而目录项“.”和“..”是系统自动放在目录中的(有时通过mkdir程序完成)。
  • (2)DELETE,删除目录。只有当一个目录为空时,该目录方可被删除。所谓空目录的含义是,在一个目录中只有目录项“.”和“..”。“.”和“..”这两个目录项是不能被删除的
  • (3)OPENDIR,打开目录,使内容可被读取。
  • (4) CLOSEDIR ,关闭目录。读目录结束后,应关闭目录以释放内存空间。

文件系统的实现

前面讨论的文件系统,主要是从用户的角度探讨问题。文件的使用者关心文件是如何命名的、可以进行哪些文件操作、文件目录是如何组织的,如何检索或查找文件目录等问题

下面从设计和实现者的角度讨论文件系统如何实现。

分配与回收

在计算机系统中,外存储设备中的空间容量虽然比较大,但也不是无限的,故对文件删除之后而不再使用的空间必须加以回收,然后在建立文件等操作中重新利用

对于只读的存储设备(如CD-ROM光盘),无所谓回收,也无所谓动态分配,这种存储设备在物理上就是不可重用的。

为了进行存储空间的分配与回收,在外存储设备上设置有空闲空间登记表,该表动态跟踪该外存储设备上所有还没有分配给任何文件的空闲块的数目和块号。
该空闲空间登记表虽然称为表,但不一定以一个二维表格的形式实现。从方便、高效和安全的角度考虑,通常把空闲空间登记表放在存储介质上。在进行文件删除、文件建立、写文件等操作中都会访问和修改空闲空间登记表。

位示图

位示图法的基本思想是,利用一串二进制位(bit)的值来反映磁盘空间的分配使用情况

在位示图中,每一个磁盘中物理块用一个二进制位对应,如果某个物理块为空闲,则相应的二进制位为0;如果该物理块已分配了,则相应的二进制位为1 。

在申请磁盘物理块时,可在位示图中从头查找为0的位,如果发现了为0的位,则将其改为1,同时返回该二进制位对应的物理块号。在归还不再使用的物理块时,则在位示图中将该物理块所对应的二进制位改为0,表示这块物理块恢复为空闲状态。

位示图对空间分配情况的描述能力强。一个二进制位就描述一个物理块的状态。另外,位示图占用空间较小,因此可以复制到内存,使查找既方便又快速。位示图适用于各种文件物理结构的文件系统

使用位示图能够简单有效地在盘上找到n个连续的空闲块。很多计算机提供了位操作指令,使位示图的查找能够高效进行。

空闲块表

空闲块表是专门为空闲块建立的一张表,该表记录外存储器中全部空闲的物理块,包括每个空闲块的第一个空闲物理块号和该空闲块中空闲物理块的个数。

:在建立新文件时,应该寻找一组连续的空闲物理块,其空闲块个数恰好等于或接近于所申请值。系统首先查找空闲块表,主要查看该空闲块表项中是否有符合上述申请值的对应表项,如果有,就将该表项从空闲块表中删去,并且把所对应的一组连续的空闲物理块分配给申请者。
当删除文件时,系统收回它所占用的物理块,并且考虑所收回的物理块是否可以与原有空闲块相邻接,以便合并成更大的空闲区域,最后修改有关空闲块表项。

空闲块表方式特别适合于文件物理结构为顺序结构的文件系统

空闲块链表

将外存储器中所有的空闲物理块连成一个链表,用一个空闲块首指针指向第一个空闲块,随后的每个空闲块中都含有指向下一个空闲块的指针,最后一块的指针为空,表示链尾,这样就构成了一个空闲块链表。

空闲块链表模式效率低。要遍历整张空闲块链表,必须读每一个物理块,这就需要大量的I/O时间。
在空闲块链表模式中对空间的申请和释放是以块为单位的。申请空间时从链首取空闲块,空间释放时将物理块接入链尾。

空闲块链表法节省内存,但申请空间和回收空间的速度较慢,实现效率较低。

成组链接

对链接表的一个改进方案是将n个空闲盘块的地址存放在第一个空闲块中。其余n--1个空闲盘块是实际空闲的。假设每100个空闲块为一组。第一组的100个空闲块块号放在第二组的头一块中,而第二组的其余99块是完全空闲的。第二组的100个块号又放在第三组的头一块中。依此类推,组与组之间形成链接关系。在最后一组的块号中第2个单元填“0”,表示该块中指出的块号是最后一组的块号,空闲块链到此结束。在这个空闲块链中,不足100块的那个组的块号通常放在内存的一个专用块中。这种方式称为成组链接。

系统在初始化时先把专用块内容读到内存中,当需分配空闲块时就直接在内存中找到哪些块是空闲的,每分配一块后把空闲块数减1。但在把一组中的第一个空闲块分配出去之前,应把登记在该块中的下一组的块号及块数保存到专用块中(此时原专用块中的信息已经无用,因为它指出的一组空闲块都已被分配了)。当一组空闲块被分配完后,再把专用块的内容读到内存中,指出另一组可供分配的空闲块。

采用成组链接后,分配回收空闲块时均在内存中查找和修改,只有在一组空闲块分配完或空闲的磁盘块构成一组时才需要启动磁盘读写。因此,成组链接的管理方式比普通的链接方式效率高
成组链接这种方案能够迅速找到大量空闲盘块地址。有些版本的UNIX操作系统便采用了这种方案。

文件的操作

建立文件

用户首先调用文件系统的“建立文件”操作,在请求调用该操作时提供所要创建的文件的文件名及若干参数:用户名、文件名、存取方式,存储设备类型、记录格式、记录长度,等等。系统依据用户提供的文件名及若干参数,为这一新创建的文件分配一个文件控制块,填写文件控制块中的有关项
建立文件的实质是建立文件的文件控制块FCB,并建立必要的存储空间,分配空的FCB,从而建立起系统与文件的联系

建立文件系统调用的一般格式为:create(文件名,访问权限,(最大长度))。
建立文件的具体步骤如下:
(1)检查参数的合法性:
文件名是否符合命名规则,若是,则进行下一步(2);否则报错,返回。
(2)检查同一目录下有无重名文件:若没有,则进行下一步(3);否则报错,返回。
(3)在目录中有无空闲位置:若有,则进行下一步(4);否则,不成功返回。
有的系统可能要为此文件申请数据块空间(申请一部分或一次性全部申请)。
(4)填写目录项内容:
包括:文件名、用户名、存取权限﹑长度置零、首地址等。
(5)返回。

打开文件

打开文件,是使用文件的第一步,任何一个文件使用前都要先打开,即把文件控制块FCB送到内存

打开文件系统调用的一般格式为:fd = open(文件路径名,打开方式)。
打开文件时,系统主要完成以下工作:
(1)根据文件路径名查目录,找到FCB主部。
(2)根据打开方式、共享说明和用户身份检查访问合法性。
(3)根据文件号查系统打开文件表,看文件是否已被打开。
如果是,共享计数加1;否则,将外存中的FCB主部等信息填入系统打开文件表空表项,共享计数置为1。
(4)在用户打开文件表中取一空表项,填写打开方式等,并指向系统打开文件表对应表项。

返回信息:文件描述符fd ,这是一个非负整数,用于以后读写文件

读文件

打开文件后,就可以读取文件中的信息。

读文件系统调用的一般格式为: read(文件名,(文件内位置) ,要读的长度,内存目的地址)。隐含参数:文件主。
读写方式可为读、写和既读又写等。读文件时,系统主要完成以下工作:
(1)检查长度是否为正整数:若是,则进行下一步(2);否则,转向( 10)。
(2)根据文件名查找目录,确定该文件在目录中的位置。
(3)根据隐含参数中的文件主和目录中该文件的存储权限数据,检查是否有权读。若是,则进行下一步(4);否则,转向( 10)。
(4)由文件内位置与要读的长度计算最末位置,将其与目录中的文件长度比较,超过否?若是,则转向(10);否则,进行下一步(5)。也可将参数中的长度修正为目录中的文件长度。(5)根据参数中的位置、长度和目录中的映射信息,确定物理块号,需要读出的块数等读盘参数(参数准备完毕后,进行物理的读盘操作,读盘操作可能要进行多次)。
(6)根据下一块号读块至内存缓冲区。
(7)取出要读的内容,也许要进行成组的分解,将取出的内容送至参数中的内存目的地址。(8)根据块内长度或起始块号+块数,确定还读下一块吗?同时确定下一块块号:
若是,则转向(5);否则,进行下一步( 9)。
(9)正常返回。
(10)错误返回,返回相应错误号。

写文件

写文件系统调用的一般格式为: write(文件名,记录键,内存位置)。
把内存中指定单元的数据作为指定的一个记录写入指定文件中,系统还将为其分配物理块,以便把记录信息写到外存上

关闭文件

若文件暂时不用,则应将它关闭。文件关闭后一般不能存取,若要存取,则必须再次打开。关闭文件系统调用的一般格式为:close(文件名)。
系统根据用户提供的文件名或文件描述符,在该文件的文件控制块上做修改。例如,将该文件的共享用户数减1,减1后若值为0 ,则将文件控制块置上“非活跃”标志,若该文件控制块内容被修改过,则要写回外存

删除文件

删除文件系统调用的一般格式为:delete(文件名)。
系统根据用户提供的文件名或文件描述符,检查此次删除的合法性,若合法,则收回该文件所占用的文件控制块及物理块等资源

指针定位

指针定位的一般格式为: seek ( fd ,新指针的位置)。
指针定位时,系统主要完成以下工作:
(1)由fd检查用户打开文件表,找到对应的入口;
(2)将用户打开文件表中文件读写指针位置设为新指针的位置,供后续读写命令存取该指针处文件内容。

文件保护和安全

文件系统中有对用户而言十分重要的信息。设法防止这些信息不被未授权使用、不被破坏,这是所有文件系统的一个主要内容。

文件共享

文件的共享是指一个文件可以允许多个用户共同使用

文件共亨不仅是完成共同任务所必需,而且还带来许多好处:节省文件所占用的存储空间;免除系统复制文件的工作;减少用户大量重复性劳动;减少实际输入输出文件的次数。此外,利用文件共享可以实现进程间相互通信

从共享的时间段上看,共享文件的使用有两种情况:

  • 文件可以同时使用
    允许多个用户同时使用同一个共享文件,但系统必须对该共享文件实施同步控制

    一般说,允许多个用户同时打开共享文件执行读操作,而不允许读者与写者同时使用共享文件,也不允许多个写者同时对共享文件执行操作,以确保文件信息的完整性。

  • 文件不允许同时使用
    任何时刻只允许一个用户使用共享文件,即不允许两个或两个以上的用户同时打开一个文件。要待一个用户使用结束关闭了文件后,才允许另一个用户打开该文件。

在文件共享的具体方式上,有三种文件的共享形式:

(1)文件被多个用户使用,由存取权限控制。
(2)文件被多个程序使用,但分别用自己的读写指针。
(3)文件被多个程序使用,但共享读写指针。

在多级目录结构中,链接法( link)是常用的实现文件共享技术

文件保护

文件系统必须有防止硬、软件的各种意外可能破坏文件的能力。为此,文件系统经常采用建立副本定时转储的方法来保护文件。

建立副本

对文件建立副本,是保护文件不受破坏的有效方法。可以把同一个文件保存到多个存储介质上,这些存储介质可以是同类型的,也可以是不同类型的

这种方法简单,但设备费用和系统开销增大,而且当文件需修改或更新时,必须要改动所有的副本。因此,这种方法一般用于短小且极为重要的文件。

定时转储

定时转储的含义是,每隔一定的时间就把文件转储到其他的存储介质上。当文件发生故障时,就用转储的文件来复原,把有故障的文件恢复到转储时刻文件的状态。

UNIX系统就是采用定时转储的方法保护文件,以提高文件的可靠性

按照转储内容可分为增量转储和全量转储。增量转储是指备份自上一次转储以来更改过的文件。按照转储方式可分为物理转储和逻辑转储。

  • 物理转储是从磁盘的第0块开始,将全部磁盘块按序输出到另一介质上,直到最后一块复制完毕。
  • 逻辑转储是从一个或几个指定的目录开始,递归地转储其自给定日期(例如,最近一次增量转储或全量转储的日期)后有所更改的全部文件和目录。

规定文件存取权限

规定用户使用文件的权限的方法有两种:

  • (1)采用树形目录结构。
    凡能得到某级目录的用户就可得到该级目录所属的全部目录和文件,按目录中规定的存取权限使用目录或文件。
  • (2)存取控制表。
    列出每个用户对每个文件或子目录的存取权限。在这种机制中,系统对拥有权限的用户,应该让其进行相应的操作;对于超越其操作权限者,应禁止其操作;系统同时还要防止其他用户以任何理由冒充拥有权限的用户对文件进行操作。

文件保密

文件保密的目的是防止不经文件拥有者授权而窃取文件

规定文件的使用权限在一定程度上可起到文件保密的作用,但是,文件的使用权限可由用户设定或修改,因而单靠规定文件的使用权限不能达到文件保密的目的。常用的文件保密的措施有以下几种:

  • 隐藏目录文件
  • 设置口令
  • 使用密码

UNIX文件存取权限

UNIX中对文件的存取权限划分为两级。

  • 第一级对访问者或者用户进行分类识别
    • (1)文件属主或文件拥有者( owner ) ;
    • (2)文件属主的同组用户( group ) ;
    • (3)其他用户( other)。
  • 第二级对文件操作则根据不同的操作内容进行权限限定,把对文件的操作分成如下的类别:
    • (1)读( Read)操作(R);
    • (2)写(Write)操作(W);
    • (3)执行( eXecute)操作(X);
    • (4)不能执行任何操作(--)。

由于对文件属主、组和其他用户均有上述三种权限设置,因此每个文件共有九个权限参数。

在UNIX 中,使用“ls--l”命令就能看到各个文件的权限设置,例如:

root@iZ2ze85m9yb0gbgzfriys0Z:/# ls -l
lrwxrwxrwx   1 root root         7 May 21  2021 bin -> usr/bin
drwxr-xr-x   3 root root      4096 May 21  2021 boot
drwxr-xr-x  18 root root      3900 Jan 26 22:14 dev
drwxr-xr-x  91 root root      4096 Dec 23 22:00 etc
drwxr-xr-x   2 root root      4096 Apr 15  2020 home
-rw-------   1 root root 993249280 May 21  2021 swapfile

从上面的例子中,可以看到文件的权限设置在列出的数据的第一列中显示。ls输出结果第一列中的第一个位置表示类别

“d”表示目录,“c”表示该文件为字符设备文件,“b”表示为块设备文件,"“1”表示为一个符号连接;其余9个位置分别表示3组的3种权限设置:第2个到第4个位置表示属主的权限分别设置为读、写和执行,第5个到第7个位置设置同组用户的权限,第8个到第10个位置设置其他用户的权限。若指定位置上没有显示对应的权限,而是“_-”,则表示不允许对应的权限。

UNIX系统内部使用数值来表示上述的文件属性,每一个属性与文件属性中的一个二进制位相对应。如果该存取权限设置了,对应的二进制位就是1 ,如果该存取权限没有设置,对应的二进制位是0。

在UNIX中,文件的属主和管理员可以使用命令chmod来设置或改变文件的权限。chmod有几种不同的使用方法,可以直接使用八进制的权限表示方式设置属性,或者使用属性字母来设置或更改文件的属性,不同的使用方法要求不同的chmod参数。

文件系统性能

文件系统的物理基础是磁盘设备。显然,磁盘存储器的服务效率﹑速度和可靠性就成为文件系统性能和可靠性的关键。设计文件系统时应尽可能减少磁盘访问次数,这样可以适当减少磁盘存储器性能对文件系统性能的影响

块高速缓存

其基本思想是,系统在内存中保存一些磁盘块,这些磁盘块在逻辑上属于磁盘,内存的这一区域被称为块高速缓存

运行时,系统检查所有的读请求,看所需的文件块是否在块高速缓存中。如果在,则可直接在内存中进行读操作;否则,首先要启动磁盘,将所需块读到高速缓存中,再拷贝到其他内存区域。如果内存中的高速缓存已满,则需要按照一定的算法淘汰一些较少使用的磁盘块,让出块高速缓存空间。

块高速缓存的内容需要定期写回到磁盘上,以保存对磁盘块的修改

合理分配磁盘空间

在磁盘空间中分配块时,应该把有可能顺序存取的块放在一起,最好在同一柱面上。这样可以有效地减少磁盘臂的移动次数,加快了文件的读写速度,从而提高了文件系统的性能

磁盘的驱动调度

磁盘是一种高速旋转的存储设备

磁头沿着盘片直径方向移动,同时对指定磁道上的扇面中的数据进行读写操作。当多个访盘请求在等待时,系统采用一定的策略,对这些请求的服务顺序进行调整安排,使寻道时间和延迟时间都尽可能小的那个访问请求可以优先得到服务,并降低若干个访问者的总访问时间,增加磁盘单位时间内的操作次数。其目的在于降低平均磁盘服务时间,从而实现公平、高效的访盘请求。

磁盘的存取访问时间由三部分组成:

  • 寻道时间,即将磁头移动到相应的磁道或柱面所需的时间;
  • 旋转延迟时间,即一旦磁头到达指定磁道,必须等待所需要的扇区旋转到读/写头下的时间;
  • 传输时间,即信息在磁盘和内存之间的实际传送时间。

一次磁盘服务的总时间就是以上三个时间之和

要使磁盘服务尽可能地快,就需要操作系统提供合适的磁盘调度算法,以改善磁盘服务的平均时间。

磁盘驱动调度由“移臂调度”和“旋转调度”两部分组成。

移臂调度

根据访问者指定的柱面位置来决定执行次序的调度,称为“移臂调度”。移臂调度的目的是尽可能地减少操作中的寻找时间。

一般可采用以下几种移臂调度算法。

先来先服务调度算法(FCFS)
先来先服务调度算法(FCFS)按照访问请求的次序为各个进程服务,这是最公平而又最简单的算法,但是效率不高。因为磁头引臂的移动速度很慢,如果按照访问请求发出的次序依次读写各个磁盘块,则磁头引臂将可能频繁大幅度移动,容易产生机械振动,亦造成较大的时间开销,影响效率。
最短寻道时间优先调度算法(SSTF)
SSTF算法以寻道优化为出发点,优先为距离磁头当前所在位置最近磁道(柱面)的访问请求服务。这种算法改善了平均服务时间,但也存在缺点:假设某一段时间外磁道请求不断,则可能有内磁道请求长时间得不到服务,缺乏公平性。
扫描算法(SCAN)

扫描算法(SCAN)因其基本思想与电梯的工作原理相似,故又称电梯算法。

SCAN算法也是一种寻道优化的算法,它克服了SSTF算法的缺点。SSTF算法只考虑访问磁道与磁头当前位置的距离,而未考虑磁臂的移动方向,而SCAN算法则既考虑距离,也考虑方向,且以方向优先。即:当无访问请求时,磁头臂停止不动;当有访问请求时,磁头臂按照一定方向扫描。假设初始时,磁头处于最外磁道,并向内磁道移动。在移动的过程中,如果经过的磁道有访问请求,则为其服务,然后判断内磁道是否还有访问请求,如果有,则继续向内磁道移动并服务;否则改变磁头移动方向,即开始向外磁道移动,同时为经过的请求服务;如此反复。这种算法比较公平,而且效率较高。
循环扫描算法(C-SCAN)
由于扫描算法在移动磁头的过程中是双向的,因此位于磁盘中间位置的磁道得到的服务就比在两端的磁道要及时,亦即对中间磁道有偏好。为了保持公平性,引入了循环扫描算法,该算法修改了原扫描路径,将双向的服务改为单向服务,即当磁头从外道移向内道时,如果经过的磁道有访问请求,则为其服务,直到最内端的请求服务完毕,然后立即快速回到最外边有请求的磁道,继续下一个循环。反之亦然。该算法具有较好的公平性。

旋转调度

对在同一个柱面中多个访问者的读写请求,需要有调度算法,用来确定为这些访问等待者服务的次序。
在移动臂定位后有若干个访问者等待访问该柱面的情况下,若从减少输入输出操作总时间为目标出发,显然应该优先选择延迟时间最短的访问者去执行。根据延迟时间来决定执行次序的调度称为“旋转调度”

Windows的 FAT文件系统

FAT文件系统

FAT是 File Allocation Table(文件分配表)的缩写。FAT是一个简单的文件系统,最初为DOS操作系统设计,适用于小容量的磁盘,具有简单的目录结构。为了向后兼容,也为了方便用户升级,目前新版本的Windows仍然提供对FAT的支持。

FAT文件系统总共有三个版本:FAT-12、FAT-16和FAT-32,取决于用多少二进制位表示磁盘地址。FAT文件系统以簇为单位进行分配,所以FAT-16文件系统表示用16位(2字节)表示簇号

在FAT-16文件系统中,位于根目录下的每个文件和子目录在根目录区中都包含一个目录项。根目录与其他目录之间的唯一区别是根目录位于磁盘上一个特殊的位置并且具有固定的大小。每个目录项的大小为32字节,其内容包括:文件名、扩展名、属性字节、最后一次修改时间和日期、文件长度、第一簇的编号等。

FAT表项的排列次序是隐含的,即簇号按顺序依次排列。

FAT文件系统后来经过多次改进,为扩大文件系统的容量将FAT-16扩展为FAT-32 ,即簇号的长度扩展为4字节32位,可以寻址23个簇(数据块)。另一种改进是支持长文件名。

微信关注

WeChat

 

阅读剩余
THE END