1.54k likes | 1.77k Views
操作系统 Operating System. 教学目的. 通过对本章地讲解使学生理解并掌握文件系统的功能、结构,外存空间的管理和目录结构。. 本章重点:. 文件的逻辑结构和物理结构 文件外存空间的管理 文件目录结构的管理 文件的保护与共享. 本章难点:. 目录的搜索 文件外存空间的管理. 第 6 章 文件系统. 现代计算机系统中,大量的程序和数据总是以文件的形式存放在外存中,需要时随时调入内存。 文件系统是指操作系统中用来管理文件以及对文件进行操作的机制及其实现。 文件系统由三个基本部分组成: 存储数据的文件的集合,组织文件的目录结构,管理文件的软件机构。.
E N D
教学目的 • 通过对本章地讲解使学生理解并掌握文件系统的功能、结构,外存空间的管理和目录结构。
本章重点: • 文件的逻辑结构和物理结构 • 文件外存空间的管理 • 文件目录结构的管理 • 文件的保护与共享
本章难点: • 目录的搜索 • 文件外存空间的管理
第6章 文件系统 • 现代计算机系统中,大量的程序和数据总是以文件的形式存放在外存中,需要时随时调入内存。文件系统是指操作系统中用来管理文件以及对文件进行操作的机制及其实现。 • 文件系统由三个基本部分组成:存储数据的文件的集合,组织文件的目录结构,管理文件的软件机构。 • 本章主要内容: §6.1 文件 §6.2 目录 §6.3 文件系统 §6.4 Linux虚拟文件系统 §6.5 Ext2文件系统 §6.6 Windows文件系统
本章学习目标 • 文件、文件系统、文件目录、目录项、文件共享等基本概念及文件的分类 • 文件的两种逻辑结构及两种存取方法 • 文件的三种物理结构:连续结构、链接结构及索引结构 • UNIX系统的文件索引结构 • 三种目录结构:单级、两级、多级目录结构 • 文件的共享及保护 • 外存空间的管理方法
§6.1 文件 • 主要内容: • §6.1.1 文件及文件类型 • §6.1.2 文件的逻辑结构 • §6.1.3 文件的物理结构 • §6.1.4 文件的存取方法 • §6.1.5 文件存储空间的管理 • §6.1.6 文件操作 • §6.1.7 文件的共享与保护 • §6.1.8 文件的存储设备
§6.1.1 文件及文件类型 • 1.文件的定义 • 文件是具有标识符(文件名)的一组相关信息的集合。标识符是用来标识文件的。不同的系统对标识符的规定有所不同。文件的确切定义有两种说法: • (1)文件是具有标识符的相关字符流的集合。 • (2)文件是具有标识符的相关记录的集合。 • 2.文件系统的定义 • 文件系统是操作系统中负责存取和管理文件信息的机构。它由管理文件所需的数据结构(如文件控制块,存储分配表等)和相应的管理软件以及访问文件的一组操作组成。
3.文件的分类 • 按文件的用途可分为: • (1)用户文件:由用户建立,并由文件拥有者进行读/写和执行。这类文件只能由文件所有者或所有者授权用户使用。 • (2)库文件:由系统为用户提供的实用程序、标准子程序、动态链接库等。 • (3)系统文件:由系统建立的文件,如操作系统、编辑系统、编译系统等。这类文件只允许通过系统调用来执行,不允许读/写与修改。
按文件中的数据形式分为: • (1)源文件:由源代码和数据构成的文件。通常是由ASCII码或汉字所组成。 • (2)目标文件:是指源程序经过编译程序编译后,但尚未链接成可执行文件的目标代码文件。属于二进制文件。 • (3)可执行文件:是指目标代码经过链接程序链接后所形成的可以执行的文件。
按文件的访问控制属性分为: • (1)只读文件:允许所有者或授权用户对文件进行读,但不允许写。 • (2)读写文件:允许所有者或授权用户对文件进行读写。 • (3)执行文件:允许授权用户调用执行,但不允许对它进行读写。 • (4)不保护文件:不加任何访问限制的文件。
按信息流向分类 • (1)输入文件:如读卡机上的文件只能读入,所以它们是输入文件。 • (2)输出文件:如打印机上的文件只能写出,所以它们是输出文件。 • (3)输入/输出文件:如磁盘、磁带上的文件,既可读又可写,所以它们是输入/输出文件。 • 按文件的组织方式分类 • (1)一般文件:也叫普通文件,它按一般的文件格式进行组织,如字符流文件。 • (2)特殊文件:如目录文件(由目录信息构成的文件)。在某些操作系统中,把I/O设备也定义为特殊文件。
UNIX文件类型 (1)正规文件:是指系统所规定的普通格式的文件,包括系统文件、库文件以及各种用户文件等。 (2)目录文件:是由文件目录构成的一类文件。是用来维护文件系统结构和管理普通文件和目录的文件。 (3)符号链接:又称为软链接。它是一个短文件,其中包含了另一个文件的任意一个路径名。这个路径名可以指向位于任意一个文件系统的任意文件,甚至可以指向一个不存在的文件。硬链接是指目录表中的目录项所确定的文件名和索引节点之间的对应关系。硬链接的次数就是同一索引节点被目录项引用的次数。
(4)设备文件:包括块设备文件和字符设备文件。在UNIX系统中,所有的输入输出设备都被看成是文件,甚至在使用形式上也和普通文件相同。(4)设备文件:包括块设备文件和字符设备文件。在UNIX系统中,所有的输入输出设备都被看成是文件,甚至在使用形式上也和普通文件相同。 (5)管道(pipe)文件:系统使用管道文件的目的是希望将一个进程的输出作为另一个进程的输入。管道文件使用一块专用的内存区域来保存中间信息。 (6)套接字(socket):又称插口。通过在发送方和接收方分别创建一个称为套接字的通信端点可以获得TCP服务。每个套接字有一个套接字序号(地址),包含主机的IP地址和一个端口。每条连接由两端的套接字标识符来识别,即(socket1, socket2)。
§6.1.2 文件的逻辑结构 • 1.文件结构 • 文件结构是指文件的组织形式。通常分为文件的逻辑结构和文件的物理结构。 • 文件的逻辑结构是指从用户的观点出发,用户所观察到的文件组织形式。 • 文件的物理结构又称为文件的存储结构,是指文件在外部存储介质上是如何存放的,即文件在外存上的存储组织形式。
2.文件的逻辑结构(常分为2种) • (1)有结构的文件 • 有结构的文件是指由若干个相关的记录构成的文件,又称记录式文件。用户存取文件是以记录为单位进行的。记录又分为定长的和变长的记录。 • (2)无结构文件 • 无结构文件又称流式文件,组成流式文件的基本信息单位是字节或字,其长度是文件中所含字节的数目,如大量的源程序,库函数等采用的就是流式结构。
§6.1.3 文件的物理结构 • 为了有效地管理文件存储器,通常把文件存储空间划分成若干个大小相等的物理块,物理块是分配及传输信息的基本单位。块的大小通常是扇区的倍数,如512B、1KB、2KB或者4KB。 • 一个物理块中可以存放若干个逻辑记录,一个逻辑记录也可以存放在若干个物理块中。 • 为了有效地利用外存和便于系统管理,一般也把文件信息划分为与物理存储块大小相等的逻辑块。 • 常见的文件物理结构有三种:连续结构、链接结构和索引结构。
1.连续结构 连续结构,又称顺序结构,是一种最常用和最简单的物理文件结构,它把逻辑上连续的文件信息存储在物理位置连续的物理块中。 图6.1 文件的连续结构
0 14 29 磁盘空间 图4-1 连续结构的文件组织 文件目录表
连续结构的主要优点是实现简单和存取速度快,只要记住文件的第一块号和块数就能确定该文件在外存上的位置。当文件是定长记录文件时,还可根据文件起始地址及记录长度进行随机访问。连续结构的主要优点是实现简单和存取速度快,只要记住文件的第一块号和块数就能确定该文件在外存上的位置。当文件是定长记录文件时,还可根据文件起始地址及记录长度进行随机访问。 • 缺点:不利于文件的动态增长,因为文件末尾处可能已经没有空闲块了,一旦增长,就需要进行大量的改动;反复增删文件以后,存储设备中便会产生类似于内存分配中出现的磁盘空间碎片。因此,连续结构只适用于长度固定的文件。
2.链接结构 链接结构是指可以将文件存储在外部存储介质上的若干个不必连续的物理块中,其中的每个物理块都设有一个指针字段,指向下一个物理块的位置,从而使得存放同一个文件的物理块链接起来。以链接结构存放的文件称为链接文件。 图6.2 文件的链接结构
4 7 13 4 7 -1 13 19 14 -1 12 22 -1 19 0 14 29 磁盘空间 图4-2 链接结构的文件组织 文件目录表
链接结构的优点是可以解决文件存储空间的碎片问题,提高了文件存储空间的利用率,同时允许文件动态增长。链接结构的优点是可以解决文件存储空间的碎片问题,提高了文件存储空间的利用率,同时允许文件动态增长。 • 缺点:但链接文件只能按照文件的链接指针顺序访问,为了访问文件的第i块,必须从第一块开始访问,然后一块接着一块,直到找到第i块。另一个缺点是必须为指针字段分配空间。
为了克服链接结构文件的缺点,可以把所有链接文件里的指针从物理块中取出,存放在一张链接表中,表的长度就是文件存储器能划分的物理块数,表的序号就是物理块号。为了克服链接结构文件的缺点,可以把所有链接文件里的指针从物理块中取出,存放在一张链接表中,表的长度就是文件存储器能划分的物理块数,表的序号就是物理块号。 • 在每个表项中,存放链接指针,即下一个物理块号。该链接表存放在内存里。 • 由于分配给文件的所有物理块的块号都在该链接表中,故把该链接表称为文件分配表FAT(File Allocation Table),MS-DOS及OS/2等操作系统都采用FAT
显式链接 图 6-9 显式链接结构
3.索引结构 索引结构就是把每个文件占用磁盘的物理块号集中存放在一张表中,即每一个文件都有一张索引表。每一个索引表项存放文件数据所占用的一个磁盘块的地址。以索引结构存放的文件称为索引文件。 图6.3 文件的索引结构
0 13 14 4 7 磁盘空间 29 19 4,6,9,11,14,16 图4-3 索引结构的文件组织 文件目录表
模式 拥有者 时间戳 数据块 数据块 数据块 文件大小 块的数量 数据块 数据块 数据块 直 接 块 数据块 数据块 数据块 数据块 … … 一级间接块 … 二级间接块 … 三级间接块 … 图4-4 UNIX文件的索引结构
§6.1.4 文件的存取方法 • 文件存取方法是指用户在使用文件时按怎样的次序存取文件。文件的存取方法是由文件的性质和用户使用文件的情况决定的。根据对文件信息的存取次序不同,把文件存取方法分为顺序存取、随机存取、索引存取等。 • 1.顺序存取 • 顺序存取是最简单的方法。它严格按照文件信息单位排列的顺序依次存取,后一次存取总是在前一次存取的基础上进行,所以不必给出具体的存取位置。在文件读写过程中总有两个位置指针指向其中要读写的字节位置或要读写的记录位置。 读写指针R R+l R+l : : :
起始R R+4*l 起始R R+l0 l0 l1 l2 l3 l4 R+l0+l1+l2+l3+l4 l5 2.随机存取 • 定长记录随机存取 • 随机存取又称直接存取,在存取时必须先确定进行存取时的起始位置(如记录号、字符序号等)。直接存取通常是对记录式文件而言的。 • 对于定长记录式文件来说,直接存取方便、高效。 • 对于变长记录文件,采用顺序存取方法会更高效。磁盘是支持随机存取的典型设备。 • 变长记录随机存取
起始R R+4*l l0 l1 l2 l3 l4 l5 3.按键存取 • 文件索引存取又称为按键存取,即对文件中的记录按某个数据项的值进行排序,从而可以根据键值来快速存取。 按键值排列的 索引表
§6.1.5 文件存储空间的管理 • 文件存储空间主要是指磁盘空间。文件系统应为分配存储空间而设置相应的数据结构,还应提供对存储空间进行分配和回收的功能。下面介绍几种常用的空闲存储空间管理方法。 • 1.空白文件目录 • 系统将文件存储设备上的每个连续空闲区都看作一个空白文件,并为所有空白文件单独建立一个目录,每个空白文件在这个目录中占一个目录项,目录项的内容包括第一个空白块的地址(物理块号)和空白块的数目。
序号 第一个空白块号 空白块的数目 物理磁盘块号 1 14 6 (14,15,16,17,18,19) 2 23 2 (23,24) 3 51 4 (51,52,53,54) ………… 表6-1 空白文件目录 • 这是一种最简单的空闲区管理技术。适合于文件的静态分配(即连续结构的文件分配)。分配存储空间时,分割某个空白文件;系统回收该文件所占空间,要考虑相邻接空白文件合并问题。 • 显然,当文件存储空间中只有少量空白区时,这种方法才有较好的效果。如果存储空间中有大量小的空白区,那么空白文件目录会变得很大,因而效率大为降低。
2.位映像表 15 14 …… 9 8 7 6 5 4 3 2 1 0 • 系统需要将位映像表中的二进制位所在位置与盘块号之间进行转换: • 分配时,已知位坐标i、j,盘块号k=16*i+j; • 回收时,已知K,则i=k/16,j=K%16。 • 一个1G的磁盘,每个盘块为1KB时,它要求一个1M位的映像表,这个表占128个磁盘块(1M/8k)。位映像表需要调入内存。 适合文件静态分配和动态分配的最简单管理方法是采用位映像表(或位示图)。 0 1 2 3 :: 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 1 0 0 ……………………
first ∧ 3.空闲块链表 • 该方法的优点是实现简单,但工作效率低,因为每当在链上增加或移去空闲块时,都需要对空闲块链做较大的调整,因而会有较大的系统开销。 • 对空闲块链管理技术的改进方法是采用成组空闲块链表,即利用盘空闲块管理盘上的空闲块,每个磁盘块记录尽可能多的空闲块。 • 空闲块链表是通过链表来实现的。
UNIX系统采用了这种成组空闲块链表管理方法。UNIX系统采用了这种成组空闲块链表管理方法。 • 显然这种管理方法既适合连续结构,也适合链接和索引结构。
§6.1.6 文件操作 • 文件系统向用户提供的对文件的操作可以分为两大类:一类是对文件自身的操作,例如,创建新文件、打开文件、删除文件、读写文件等;另一类是对记录的操作,例如,检索文件中的记录、插入记录、删除记录等。常用的文件操作如下: • 1.创建文件 • 当用户需要把一批信息作为文件保存时,要通过系统调用命令向系统提出请求。系统首先要为新文件分配必要的外存空间,并且在文件系统的相应的目录中,为之建立一个目录项,其中记录了该文件的文件名及其在外存中的地址等文件属性信息。
2.打开文件 • 当用户要访问外存文件时,应先打开文件,在用户和文件之间建立起联系。将文件属性信息装入内存,在内存建立起相应的文件对象。一旦文件被打开就可以多次使用,直到文件被关闭为止。 • 3.读文件 • 读文件就是把文件中的数据从外存读入内存的用户区。在读文件的系统调用中要给出文件路径名和存放读出内容的内存地址。系统首先根据用户提供的文件路径名查找目录,找到指定文件的目录项,从中得到该文件在外存的地址。在目录项中,还有一个指针用于对文件的读写。通过读指针,将位于外存上的数据读入指定的内存区域。
4.写文件 • 当用户需要在文件中添加信息或修改文件时,可通过写文件系统调用向系统提出请求。 • 5.关闭文件 • 关闭文件是指撤销该文件在主存中的目录项(属性)信息,切断用户与该文件的联系;若在文件打开期间,该文件做过某些修改,则应将其写回辅存。 关闭文件不但为了释放内存空间,而且也因为许多系统常常限制可以同时打开的文件数。 • 6.删除文件 • 当用户提出删除文件的请求后,系统先从目录中找到要删除文件的目录项,使之成为空项,然后回收该文件占用的存储空间。
§6.1.7 文件的共享与保护 • 文件共享是指不同的用户可以通过共享使用同一文件。文件的共享可以节省大量的辅存空间和主存空间,减少输入/输出操作,为用户间的合作提供便利条件。文件的共享应该是有条件的,是要加以控制的。因此,文件的共享要解决两个问题,一个是如何实现文件共享,二是对各类需共享文件的用户进行存取控制。 • 实现文件共享有两种方法。一种方法是由系统实现对文件的共享,即当用户知道要共享文件的路径时,可以通过提供从根目录出发的路径名来共享访问这些文件。另一种方法是对需要共享的文件进行链接,即一个目录中的目录项直接指向另一个目录的目录项。
用户 文件 Joan Alice Tom FILE1 RW RWX R FILE2 R X R FILE3 W X RW • 文件保护是指避免文件拥有者或其他用户因有意或无意的错误操作而使文件遭到破坏。文件保密是指文件本身不得被未授权的用户访问。这两个问题都涉及到用户对文件的访问权限,即文件的存取控制。存取控制矩阵如下所示:
UNIX系统为每个文件的三类用户:拥有者、拥有者的小组成员及其它用户都规定了访问权限。UNIX系统为每个文件的三类用户:拥有者、拥有者的小组成员及其它用户都规定了访问权限。 每类用户有一个由三个二进制位组成的存取控制表。这三位用来指示该类用户对文件是否有读、写、执行的存取权。若相应位被设置,则允许执行相应操作,否则拒绝执行。 例如,当一个文件的访问权限为111 101 001时,表示该文件允许文件主读、写、执行,小组成员读和执行,其它用户则只能执行。此外,允许文件主通过chmod命令修改文件的存取权限。
NTFS卷上的每个文件和目录在创建时创建人就被指定为拥有者。拥有者控制着文件或目录权限设置, 并能赋予其他用户访问权限。NTFS的权限设置规则如下: • (1)当用户被赋予权限或是属于拥有这种权限的组时,才可以访问相应的文件或目录。 • (2)当用户在相应权限的目录中创建新的文件或子目录时,创建的文件或子目录继承该目录的权限。 • (3)创建文件或目录的拥有者,可以随时更改对文件或目录的权限设置来控制其他用户对该文件或目录的访问。
(4)权限是累积的。若组A用户对一个文件拥有“写入”权限,组B用户对该文件只有“读取”权限,而用户C同属于两个组,则C将获得“写入”权限。(4)权限是累积的。若组A用户对一个文件拥有“写入”权限,组B用户对该文件只有“读取”权限,而用户C同属于两个组,则C将获得“写入”权限。 • (5)文件权限优先级高于目录权限。 • (6)“拒绝访问”权限优先级高于其他所有权限。 • 通过对文件和目录的权限设置,用户不仅可以实现对文件的保护,还可以实现对相应权限的文件数据的共享。
§6.1.8 文件的存储设备 • 1.文件存储设备 • 保存文件的设备主要有磁盘、磁带、光盘等等。通常,存储在不同设备上的文件,其存取方法也不同。这里以磁盘和磁带为例介绍一下文件存储设备。 • 磁带是一种典型的顺序存取设备。为了存取方便,磁带被划分成若干物理块,由于磁带机的启动和停止都要花费一定的时间,因此在磁带相邻物理块之间设计有一段间隙将它们隔开。
磁带的存取速度与其上的信息密度、磁带带速以及块间间隙有关。若磁带带速较高,信息密度较大并且所需的块间间隙较小,则磁带的存取速度就高。反之,磁带的存取速度就低。在读写磁带时,如果要访问的数据所在的物理块离磁头当前位置较近,则读写数据较快。反之,则较慢。磁带的存取速度与其上的信息密度、磁带带速以及块间间隙有关。若磁带带速较高,信息密度较大并且所需的块间间隙较小,则磁带的存取速度就高。反之,磁带的存取速度就低。在读写磁带时,如果要访问的数据所在的物理块离磁头当前位置较近,则读写数据较快。反之,则较慢。 • 磁盘是一种典型的随机存取(直接存取)设备,即磁盘允许文件系统直接存取磁盘上的任意物理块。磁盘上的物理块可以用柱面号、磁道号和扇区号表示。
读写臂 • 磁盘组结构: • 访问磁盘时,首先需要寻道,将磁头从当前位置移动到指定磁道上,称之为寻道时间;接着将指定扇区移动到磁头下面叫旋转延迟时间;然后将扇区上的数据读出或向该扇区写入数据,称为传输时间。 0号磁头 5号磁头 转速为r=7200/分,转一圈1/r
柱面号 扇区 因此访问磁盘的时间由寻道时间、旋转延迟时间和传输时间组成。即 访问磁盘的时间=寻道时间+旋转延迟时间+传输时间