1、第 七 章文 件 管 理,计算机系统是对信息进行处理的机构。 在计算机系统中处理的信息是二进制的数据。 数据是以文件的形式保存在外存储器中。,1 文件与文件系统一文件 一个文件由两个基本部分组成: 数据 文件的本体 存储介质文件的存放载体 每个文件都有一个文件名 文件是具有符号名的在逻辑上具有一定完整意义的信息集合。,二文件的种类 从文件的创建角度可以分成: 系统文件 用户文件 库文件 从文件操作和保护可以分成:只读文件 读写文件可执行文件 不保护文件:,从文件的信息流向可以分成:输入文件 输出文件输入输出文件 从文件的逻辑结构可以分成:流式文件 记录式文件 从文件内容的信息类型可以分成:文本
2、文件 二进制文件,三文件系统 计算机系统把信息以文件形式存放在外存后,设置一个统一的公共信息管理机构负责管理外存的文件存储空间、提供文件在外存中的组织方式,以及控制对文件的存取等。 这样的机构就是操作系统中的文件管理系统,文件系统(File System)。,文件系统是操作系统中对文件进行管理的各种程序和数据结构,此外包括对文件进行存储的组织结构。 有时把后者称为物理文件系统。,文件系统记录与文件管理有关的各种信息,这些信息称为文件说明。 文件说明以一定的数据结构形式与文件一起存放在外存介质上,它可以纳入文件的目录中,或以独立的信息块形式存在,称为文件控制块(File Control Bloc
3、k)。 文件系统通过文件说明实现对文件的管理。,文件说明中一般包括以下信息: 文件名 文件在外存的物理地址 文件所有者及其存取权限 文件授权使用者及其存取权限 文件的建立日期和访问日期 记录数及记录长度 文件属性,从文件的组织形态上看,一个文件 是两部分组成: 保存文件信息的文件体 管理信息组成的文件说明 文件系统设置了外存使用情况表,用来记录外存使用情况,以便在建立文件时能找到合适的外存空间存放文件。,四文件系统的功能 文件系统对用户,可以按自己的需要和文件系统的规则来定义文件结构和使用文件。 面对系统,则应将用户的要求转换成对文件的操作控制和管理。,文件系统的功能:文件组织 提供了文件信息
4、的组织结构 流式文件 记录式文件 文件的目录组织结构,文件存取 提供对文件的存取方法 顺序存取 随机存取 直接存取 文件使用 对用户提供文件操作的统一接口 打开和关闭文件, 读取、写入、检索、修改等操作,文件控制 控制对文件的存取,实现文件的保护和共享 逻辑控制:提供对文件的访问权限。 物理控制:设置文件的保护级别及检查和保护机制,2 文件结构与存取方法 在计算机系统中,直接面向用户与用户打交道最频繁的就是文件系统。 文件系统面对用户对文件的使用请求,又要面向系统有效地管理文件。 文件系统提供了两种文件的组织结构,面向用户的逻辑结构和面向系统的物理结构。,一文件的逻辑结构 从用户观点来组织信息
5、形成的文件是一个抽象概念的文件,称为逻辑文件,又称虚拟文件。 用户是按照逻辑文件的组织结构去存储、检索和加工处理文件的信息。,文件系统一般面向用户提供两种文件的逻辑结构: 流式文件 记录式文件,1流式文件 又称无结构文件。 在逻辑上看做是一系列有意义的字符或字节按照一定顺序集合在一起。 字符或字节是构造文件的基本元素,这些字节数据不再组成任何结构。 在输入输出时可以看做是一系列有顺序的字符或字节在外存和内存之间流动,所以称为流式文件。,2记录式文件 在逻辑上可看成是由若干相关联的记录组成,称为逻辑记录。 记录是一个由一定意义的信息集合 逻辑记录在文件中只有顺序的关系, 逻辑记录按先后顺序编号,
6、称为逻辑记录号。,记录式文件中,按其记录长度是否相同可分成: 定长记录文件 变长记录文件,二文件的物理结构 按照一定的组织结构存放在外存的文件称为物理文件。 系统按照文件的物理结构形式与文件存储设备打交道。 文件的物理结构对文件的存取方法有直接的影响,在外存中,把文件的存储空间分成大小相同的物理块。 物理块是物理文件的基本管理单位 存储空间是以物理块为单位进行分配的 文件以物理块为单位在外存与内存之间进行传输,物理块中存放的信息称为物理记录。 物理文件可以看做是相关物理记录的集合。 物理记录与逻辑记录的含义完全不同,物理记录仅是进行存储分配和信息传输的单位并不考虑信息本身包含的意义。,逻辑记录
7、的大小与物理记录的大小之间不存在固定的对应关系。 有时一个物理块可以存放几个逻辑记录,而有时一个逻辑记录要占用几个物理块。 操作系统提供了文件的多种物理组织方式。,1连续文件 文件中的信息连续地依次存放在存储设备上若干个相邻的物理块中。 例文件A,1980字节,若磁盘块的大小512字节,则文件A需占用4个物理块,它们分别被分配到30、31、32和33四个相邻的物理块中。其中第33块中实际使用了444字节,剩余的68字节形成“内碎片”。,连续文件的主要优点:组织方法简单 存取速度快 主要缺点:要求使用连续的外存空间文件的长度必须是固定不变的文件放入外存后就不能动态增长。存在“碎片”。,2链接文件
8、 又称串联文件。 文件占用的存储空间可以不连续,各个物理块也不必按顺序排列。 一个文件的物理块形成了一个链表结构。指向链表中第一个物理块的指针存放在文件说明中。,链接文件的优点:可以适应文件长度的动态变化。可以采用动态存储分配为文件分配存储空间。物理块的增加、删除和插入操作十分简单 链接文件的缺点:只适合于顺序存取存取速度比较慢。,3索引文件 采用非连续性存储方案, 使用不连续的物理块。 为每个文件建立一张索引表,它的每一表项中记录着文件所在的物理块号。 在文件说明中存放着索引表指针。 索引表存放在存储介质的指定区域,具备链接文件的所有优点,克服只能顺序存取的缺点。 索引文件可以方便地对文件进
9、行随机存取,具有直接访问文件中任何部分内容的能力。 索引文件的缺点:索引表增加了存储空间的开销。存取文件需要两次访问存储设备,,三存取方法 存取方法指如何存取文件中的信息。 根据存取的顺序关系把文件存取方法分成: 顺序存取 随机存取,1顺序存取 按照文件的逻辑地址顺序依次存取。 在记录式文件中,按逻辑记录的排列顺序依次存取每个记录。 在无结构的流式文件中,按照文件中字符的排列顺序依次存取指定字节长度的信息。,2随机存取 从任意指定的位置开始存取文件的信息。 在记录式文件中,允许根据记录的编号来存取文件的任一个记录。 在流式文件中,可以从任意指定的字节位置存取任意字节长度的信息。,文件存储设备一
10、般分为: 顺序存取设备(如磁带) 直接存取设备(如磁盘)。 在顺序存取设备上文件是按照顺序依次存放在连续的物理记录中。 顺序存取设备上的文件只适宜顺序存取方法。,直接存取设备可以按照物理地址访问它的任意位置, 如磁盘可以通过给出磁柱、磁道和扇区来指定存取位置。 直接存取设备可以顺序存取,更适宜随机存取。,3 文件目录结构 为了便于对文件进行存取和管理,文件系统设置了称为文件目录的数据结构,用以标识和管理系统中的所有文件。 目录是由目录项组成的线性表,每个文件占用一个目录项。,一一级目录结构 一级目录结构把系统中的所有文件都建立在一张目录表中,整个目录组织是个线性表,结构比较简单。 创建一个新文
11、件时,在目录表中增加个新的表项(目录项)。 撤消一个文件时,就从目录中将此文件对应目录项中的信息清除,然后把它置为空闲表项。,当系统中文件的数量很大时,文件目录将很大。当从目录表中查找一个文件,需要扫描整个目录表,使得查找目录时间增加。 文件目录中的文件不能重名。,二二级目录结构 每个用户使用一个相对独立的目录,在所有用户的目录上层再建一层目录来管理各个用户目录。 二级目录结构把文件目录分成二级,第一级称为主目录,第二级称为子目录或次目录。 系统允许每个用户有一个子目录。也称为用户目录。,二级目录结构有效地解决文件重名的问题,不同用户的文件,使用相同名字也不会导致混乱。 每个用户可以通过在目录
12、项中设置密码来避免了用户之间的交叉访问,有利于文件保护。 但是,不便有合作关系的几个用户访问其他用户目录下的文件。,三树型目录结构 又称为多级目录结构,它是二级目录结构的扩充。 这种多层次的目录结构如同一棵倒置的树,主目录就是树根,称为根目录 每一个树枝结点就是一个子目录,每一片树叶描述的一个文件。,从根目录开始到一个文件所在位置途中经过的所有子目录名称为路径。 要访问一个文件,必须指出文件的路径和文件名。ROOTU2U21U211U2112XYU211/U2112/XY,树型目录结构对文件的查找比较费时间。因为访问任何一个文件都要从根目录出发,逐层搜索。 “当前目录”就是指系统最近一次访问过
13、的目录或正在访问的目录。 把从根目录开始所指定的路径称为绝对路径 当前目录开始的路径称为相对路径。,主要优点: 能够确切地反映文件系统中所有文件的逻辑关系 系统或用户可以把某些具有相同性质或相同用途的文件组织在某一级子目录中。 便于系统对文件的保密和保护。,为了便于对文件目录的管理,把所有的文件目录组织成一个专门的、独立的文件,称为目录文件。 在主存中专门开辟一个存放文件目录的缓冲区。任何时候,仅把当前目录放在主存缓冲区中,这样既不占用太多的主存空间,又减少了查找目录的时间。,4文件存储空间的管理 文件文件存储空间一般指存放文件的外存空间。 文件系统主要任务是合理高效地为文件分配和回收存储空间
14、。 外存空间的分配与回收是以物理块为单位,一空闲块表 把外存空间中所有的空闲块的块号登记在一个表格中形成了空闲块表。 每个空闲块对应一个表项。 在分配文件空间时,根据文件的大小从空闲块表中得到足够的空闲块的块号,把空闲块分配给该文件使用。,分配后修改空闲块表,把分配出去的空闲块占用的表项删除。 文件撤消后,把回收的物理块的块号登记在空闲块表中,以待分配。 使用空闲块表管理外存空间的方法很简单,但是它占用的外存空间较大,只适用于文件较少的小型系统,二空闲区表 外存空间中的空闲块形成了若干连续的空闲区域,把空闲区域集中登记在一张表中就形成了空闲区表 空闲区表与内存管理中可变分区的FBT类似,它记载
15、着存储空间空闲区域的开始块号和块数,,分配文件的存储空间时,可以采用 最先适应算法 最佳适应算法 最差适应算法 分配后空闲区仍有剩余,把它们做为一个新的空闲区,修改并登记在空闲区表中。,文件撤消时回收的物理块则做为空闲块登记在空闲区表中,若存在相邻的空闲区,形成一个更大的空闲区。,把外存中的每个连续的空闲区看成是一个文件,并把它登记在文件目录中,称为空闲文件项。 在分配时系统依次查找文件目录中的空闲文件项,按照上述的某一算法,选择合适的空闲区分配给文件,然后修改文件目录。,使用空闲区表和空闲文件项管理外存空间时,分配给文件的是由连续的物理块组成的存储区域,所以这种方法只适用于连续文件。,三空闲
16、块链 把外存空间中的空闲块利用指针链接在一起就形成了空闲块链。 系统设置一个指向空闲块链的链首的指针,在每一个空闲块中保持一个指针指向下一个空闲块,链尾的最后一个空闲块中的指针为空。,在分配文件存储空间时,从空闲块链链首开始分配所需的空闲块。每分配出一个空闲块后,链首指针依次后移,指向下一个空闲块。 撤消文件时,把回收的物理块挂到空闲块链的链尾上。,空闲块链方法的优点是能够迅速地找到大量的空闲块。 这种管理方法适合于链接文件。,四位示图 一个物理块总是处于占用和空闲两种状态之一,可以用一个二进制位(bit)的值来表示它的两种状态,如0表示空闲,1表示占用。 把文件存储空间的全部物理块所对应的二
17、进制位集合在一起,就形成了存储空间的位示图,又称字位映像图(Bit Map),设外存空间中物理块的总数为M,计算机字长为n,位示图长m个字,M=mn。 位示图定义为二维的位数组map:var map:array0.m-1,0.n-1,当分配一个物理块时,从位示图中找出一个值为0的二进制位,若它在map数组的第i行第j列, 对应的物理块号B由下列公式求出:B=n*i+j 分配后使mapi,j=1,表示其对应的物理块已占用。,当回收一个物理块时,将回收的块号B转换成map数组的行号i和列号j:i=Bn取整 j=Bn其中为取余运算符。 使mapi,j=0,表示其对应的物理块已空闲。,字长为16位机器
18、,在分配物理块时找到map3,7的值为0,则它对应的物理块的块号:B=16*3+7 ,结果为55 该块分配后,使map3,7=1。 若回收的物理块号为87,则i=8716取整 结果为5j=8716 结果为7 map5,7 = 0。,能够用尺寸很小的位示图来表示整个存储空间的使用情况。 位示图的尺寸与存储空间的大小是对应的,即它的尺寸是固定的。 可以把位示图全部调入内存中。这样有利于实现文件存储空间的快速分配,并且处理过程也很简单。,5 文件的共享和保护 文件存取控制的目的是实现文件的共享、保护和保密。 文件共享就是允许不同用户之间共同使用某些文件。 文件共享不仅是完成共同的任务的多个用户所必需
19、的,更重要的是避免了同一个文件保存多个副本所造成的外存空间的浪费。,文件保密是指未经文件所有者许可,任何其他用户不得访问该文件。 文件保护是指避免文件所有者或他人对文件造成的破坏。,系统和用户在创建文件时,可以设置本人和其它用户对本文件的使用权限,这些权限和限制条件一起被记录在文件说明中 例如,通常规定以下使用权限:可读; 可写; 可执行; 不允许访问;,文件存取控制应该做到: (1) 对于拥有权限的用户,系统应允许其对文件进行相应的操作。 (2)对于没有权限的用户,系统必须禁止对文件进行相应的操作。 (3)应防止一个用户假借其他用户的名义对文件进行存取。 (4)防止拥有存取权限的用户误用文件
20、。,存取控制验证模块(程序): (1) 审核用户对文件的存取权限。 (2) 比较用户权限与被访问文件的保密性要求是否一致。,一文件存取控制 通过存取权限控制既可以保护文件不被无权限的用户访问,又允许具有权限的用户共享文件。 验证和控制对文件的存取操作通常采用的方法有四种:,1存取控制矩阵 记载着用户对文件的存取权限的二维矩阵,一维列出该计算机的全部用户,另一维列出系统中的全部文件。 矩阵元素的值表明某用户对某文件的存取权限:000 禁止访问 001 可读010 可写 100 可执行。,当文件系统中的文件数量很大且用户很多的情况下,存取控制矩阵的尺寸将很大,这样一方面要占用较多的存储空间,另一方
21、面查找会很费时间,给系统造成较大的开销。,2存取控制表 每个用户不可能访问所有的文件,往往是一些相关的用户使用同一批文件。把相关的用户组成用户组。 对一个文件而言,可以针对文件所有者及其所在的各个用户组规定不同的存取权限,这就形成了该文件的存取控制表。 存取控制表比存取控制矩阵小得多。,系统每个文件都有一张存取控制表。该表一般放在文件说明中。 文件打开时,存取控制表与文件说明一起被复制到内存。从而可以高效进行文件的存取控制验证。,3口令 用户在建立文件时,对文件规定一个口令,把它记录在文件说明中,并且告之允许使用该文件的用户。 口令可以由文件所有者修改。 当用户访问一个文件时必须向系统提供文件
22、的口令。系统验证口令正确后,才允许访问该文件。,使用口令方式既可以做到文件保护,又可以做到文件共享。 口令短小简单,它占用的存储间以及验证口令所费时间都将非常少。 使用口令只能限制文件是否能够访问,而不能设置存取权限,所以获得口令的用户具有与文件所有者完全相同的使用权限。因此有失密的可能。,口令一旦被他人掌握,就可以获得与文件所有者同样的权限,使得文件失窃和破坏的可能性大大增加。 若文件所有者修改口令后因通知迟缓或失误将造成相关用户无法访问的麻烦。,4密码 将文件中的所有信息以密码形式重新编码存储。在读文件时再进行译码解密。 当用户向外存写入一个文件时,通过一个加密程序对文件的信息进行变换处理
23、。 在读取文件时,通过一个解密程序把文件信息变换恢复原貌。,采用密码的方法,文件的输入和输出是经过用户的专门加密程序和解密程序进行处理,而且编码规则可以由用户随时改变。这些对系统操作员和其他用户是保密的,所以用密码加密文件的方法是比较可靠的。 其缺点是增加了文件编码和译码的开销,降低了文件访问速度。,二文件共享的实现方法 对于能够共享的文件而言,一方面要使用户知道文件的位置,另一方面要在文件中设置共享用户的存取权限。 前者可以通过文件的目录结构实现,后者则按照存取控制矩阵或存取控制表的方法来实现。,三文件的备份转储 计算机在运行过程中可能会遇到意想不到的事故,或者操作人员由于误操作等,都会造成
24、硬件的损坏而致使文件系统被破坏。 硬件的损坏可以修复或更换,但系统中的文件一旦损坏或丢失,则很难恢复。,为了在发生故障或事故后能将损失减到最小,通常采用文件转储技术,定期地将全部或部分文件转存到磁带、磁鼓上做为备份。 系统旦受到损坏,就可以使用转储的备份信息恢复文件的原有状态,使损失控制在最近一次转储到故障出现的区间内。,1全量转储 把文件存储器中所有文件,定期复制到磁带上 缺点: 转储时必须停止用户使用文件系统; 时间开销较大,转储可能要数小时; 只能恢复上次转储的信息而丢失了从上次转储以来变化和增加的信息。,2增量转储 每隔一定时间,仅把被修改过的文件和新建立的文件转储到磁带上。 通常由系
25、统对这些修改过和新建立的文件做上标志。 当用户退出时,将列有这些文件名的表传送给系统进程,由它转储这些文件。,6文件的使用 为了使用户能够方便、有效地使用文件,文件系统对用户提供了一个使用文件的统一接口,或用户界面。 用户通过这个接口向系统发出各种使用文件的请求,系统接受用户的请求后,通过内部的程序和数据结构完成用户指定的操作。,文件系统对用户的接口有两种形式: 操作命令 系统调用 操作命令是文件系统的命令级接口,用户可以使用键盘键入操作命令来操作和管理文件。执行查看文件目录、复制文件和删除文件等操作。,系统调用是文件系统的程序级接口,它又称为广义指令。 用户可以在程序中使用这些系统调用对文件
26、实施各种操作。建立文件 打开文件关闭文件 撤消文件读文件 写文件,1建立文件CREAT(文件名,文件属性) 文件名:包括文件所在目录的路径 文件属性:主要指文件长度、记录长度、操作属性、存取权限等。 功能:在文件系统的指定目录中按照指定的文件名建立一个具有指定属性的文件,(1) 按给定的路径查文件目录 (2) 在目录中空表项写入文件名。 (3) 确定文件存储所需物理块数。 (4) 存储分配程序为文件分配存储空间。 (5) 在文件说明部分中写入文件属性、物理块首地址等。,2打开文件OPEN(文件名) 建立起用户和文件在使用上的联系。把该文件的目录项由外存调到内存的活动文件表中。 活动文件表中保存
27、这当前正在使用的文件的目录项,包括文件说明在内。,(1) 按路径和文件名查找文件目录 (2)查看内存活动文件表中,若存在,说明该文件已被其他用户打开,则把文件的“共享计数”加一。 (3) 若活动文件表中无此文件,则为该文件分配一个空表项。从外存文件目录中把该文件的目录项中的有关信息复制到活动文件表中。,3读文件READ(文件名,M,N,L) M:存放读入信息的内存首址 N:记录式文件中是起始逻辑记录号流式文件中是起始字节位置 L:记录式文件中要读取的记录数流式文件中是要读取的字节长度。 功能:把外存中文件的信息读入到内存指定的区域,(1) 按文件名查内存的活动文件表。 (2) 得到该文件的文件
28、说明。 (3) 验证文件的存取权限。 (4) 确定信息在存储设备上的物理地址。 (5) 将文件信息从外存读入到指出的内存地址中。,4写文件WRITE(文件名,M,N,L)功能:把内存中的一段信息写到指定的文件中,(1) 按文件名查内存的活动文件表。 (2) 得到该文件的文件说明。 (3) 验证文件的存取权限。 (4) 在外存空间分配空闲物理块。 (5) 将文件信息从参数M指定的内存区域写入到外存中去。,5关闭文件CLOSE(文件名)功能:切断用户与该文件的联系。,(1) 在内存活动文件表中找到该文件占用的表项。 (2) 把文件的“共享计数”减一。(3) 若“共享计数”减一后为0,若该文件在活动文件表中的表项内容修改过,则把此表项内容写外存中文件目录的相应表项中去。然后把该文件占用的活动文件表表项置为空表项,6撤消文件DELETE(文件名) 功能:把文件从文件系统中撤消(删除)。,