第七章 文 件 管 理 7.1 文件和文件系统 7.2 文件的逻辑结构 7.3 文件目录 7.4 文件共享 7.5 文件保护
7.1 文件和文件系统 7.1.1 数据项、记录和文件 (1) 基本数据项:用于描述一个对象的某种属性 最小逻辑数据单位,即原子数据 7.1 文件和文件系统 7.1.1 数据项、记录和文件 1.数据项——最低级的数据组织形式 (1) 基本数据项:用于描述一个对象的某种属性 最小逻辑数据单位,即原子数据 又称为数据元素或字段 例如,用于描述一个学生的基本数据项有学号、姓名、年龄、所在班级等。 具有数据名,数据类型 数据项的“型”:数据项的名字和类型 “值”:个实体在数据项上的数据
记录:一组相关数据项的集合,用于描述一个对象在某方面的属性。 (2) 组合数据项:由若干个基本数据项组成简称组项。例如,工资可由基本工资、工龄工资和奖励工资等基本项所组成 2.记录 记录:一组相关数据项的集合,用于描述一个对象在某方面的属性。 关键字:惟一能标识一个记录的数据项。一般一个数据项作为KEY,有时需多个数据项合起来作为关键字。
文件:由创建者定义的、具有文件名的一组相关元素的集合。描述了一个对象集。 有结构文件和无结构文件。 有结构的文件:文件由若干个相关记录组成; 3.文件:是文件系统中一个最大的数据单位 文件:由创建者定义的、具有文件名的一组相关元素的集合。描述了一个对象集。 有结构文件和无结构文件。 有结构的文件:文件由若干个相关记录组成; 无结构文件:字符流。 文件必须要有一个文件名,通常是由一串ASCII码或(和)汉字构成的,名字的长度因系统不同而异。 用户利用文件名来访问文件。
(1)文件类型:如源文件、目标文件及可执行文件。 (2)文件长度:若干字节、字或块。 (3)文件的物理位置。 文件属性: (1)文件类型:如源文件、目标文件及可执行文件。 (2)文件长度:若干字节、字或块。 (3)文件的物理位置。 (4)文件的时间:建立时间或最后一次修改时间。 (5)文件的拥有者。 文件、记录和数据项之间的层次关系
7.1.2 文件类型和文件系统模型 2.文件类型 1)按用途分类 7.1.2 文件类型和文件系统模型 1.文件名和扩展名:文件名和扩展名之间用“.”号隔开。 2.文件类型 1)按用途分类 (1)系统文件:由系统软件构成的文件。只允许用户调用,但不允许用户去读,更不允许修改;有的系统文件不直接对用户开放。 (2)用户文件:由用户的源代码、目标文件、可执行文件或数据等所构成的文件。 (3)库文件:由标准函数或过程等所构成的文件。允许用户调用,但不允许修改。
(1)源文件:由源程序和数据构成的文件。通常是由ASCII码或汉字所组成的。 2)按文件中数据的形式分类 (1)源文件:由源程序和数据构成的文件。通常是由ASCII码或汉字所组成的。 (2)目标文件:把源程序经过相应语言的编译程序编译过,但尚未链接的目标代码所构成的文件。它属于二进制文件。通常,目标文件所使用的后缀名是“.obj”。 (3)可执行文件:把编译后所产生的目标代码再经过链接后所形成的文件。
3)按存取控制属性分类 (1)只执行文件。该类文件只允许被核准的用户调用执行,既不允许读,更不允许写。 (2)只读文件。该类文件只允许文件主及被核准的用户去读,但不允许写。 (3) 读写文件。这是指允许文件主和被核准的用户去读或写的文件。
(1)普通文件:由ASCII码或二进制码组成的字符文件。 4) 按组织形式和处理方式分类 (1)普通文件:由ASCII码或二进制码组成的字符文件。 如:源程序文件、数据文件、目标代码文件及操作系统自身代码文件、库文件、实用程序文件等都是普通文件,它们通常存储在外存储设备上。 (2)目录文件:由文件目录组成用于对其它文件进行检索。 (3)特殊文件:特指系统中的各类I/O设备。 系统将所有的输入/输出设备都视为文件,按文件方式提供给用户使用。 特殊文件又可分为块设备文件和字符设备文件。
7.1.3 文件系统的层次结构 文件系统模型三个层次: 最底层:文件系统对象及其属性; 中间层:对对象进行操纵和管理的软件集合; 文件系统模型三个层次: 最底层:文件系统对象及其属性; 中间层:对对象进行操纵和管理的软件集合; 最高层:文件系统提供给用户的接口。 文件系统模型
1. 对象及其属性: 对象:① 文件。 ② 目录:方便用户对文件的存取和检索,目录项中文件名及该文件所在的物理地址(或指针)。 ③ 磁盘(磁带)存储空间。 2.对对象操纵和管理的软件集合文件管理系统的核心 文件系统的功能(1)对文件存储空间的管理;(2)对文件目录的管理;(3)将文件的逻辑地址转换为物理地址的机制;(4)对文件读和写的管理;(5)对文件的共享与保护等功能。
(1)命令接口。 用户与文件系统交互的接口。 用户可通过键盘终端键入命令,取得文件系统的服务。 (2)程序接口。用户程序与文件系统的接口。 与文件系统有关的软件分为四个层次(了) 1)I/O控制层 2)基本文件系统层 3)基本I/O管理程序 4)逻辑文件系统 3)文件系统的接口 (1)命令接口。 用户与文件系统交互的接口。 用户可通过键盘终端键入命令,取得文件系统的服务。 (2)程序接口。用户程序与文件系统的接口。 用户程序可通过系统调用来取得文件系统的服务。
7.1.4 文件操作 (1)创建文件: 为新文件分配必要的外存空间,为之建立一个目录项(记录文件名外存地址) (2) 删除文件: 7.1.4 文件操作 1.最基本的文件操作 (1)创建文件: 为新文件分配必要的外存空间,为之建立一个目录项(记录文件名外存地址) (2) 删除文件: 从目录中找到要删除文件的目录项,使之成为空项 回收该文件所占用的存储空间 (3)读文件: 查找目录得到被读文件在外存中的位置 利用目录中的读指针将文件读入内存指定存储单元
查找目录,找到指定文件的目录项,再利用目录中的写指针将内存指定空间的数据写入磁盘。 (5) 设置文件的读/写位置: (4) 写文件: 查找目录,找到指定文件的目录项,再利用目录中的写指针将内存指定空间的数据写入磁盘。 (5) 设置文件的读/写位置: 即设置文件读/写指针的位置,每次读/写文件时从所设置的位置开始操作。从而改顺序存取为随机存取。
1)检索文件目录来找到指定文件的属性及其在外存上的位置; 2)对文件实施相应的操作。 2.文件的“打开”和“关闭”操作 没有打开调用之前: 1)检索文件目录来找到指定文件的属性及其在外存上的位置; 2)对文件实施相应的操作。 当对一个文件实施多次读/写操作时,为了避免多次重复地检索目录,引入了“打开”(open)这一文件系统调用。
用户再要求对该文件进行相应的操作时,便利用索引号向系统提出操作请求。系统利用索引号到打开文件表中去查找,从而避免了对该文件的再次检索。 “打开”:指系统将指名文件的属性(包括该文件在外存上的物理位置)从外存拷贝到内存打开文件表的一个表目中,并将该表目的编号(或称为索引)返回给用户。 用户再要求对该文件进行相应的操作时,便利用索引号向系统提出操作请求。系统利用索引号到打开文件表中去查找,从而避免了对该文件的再次检索。 “关闭”:当用户不再需要对该文件实施相应的操作时关闭此文件,OS调用“关闭系统调用”把该文件从打开文件表中的表目上删除掉,从而关闭文件。
最常用的一类:有关对文件属性进行操作的如改变文件名、改变文件主、改变对文件的访问权等; 3.其它文件操作 OS都提供若干有关文件操作的系统调用: 最常用的一类:有关对文件属性进行操作的如改变文件名、改变文件主、改变对文件的访问权等; 有关目录类:如创建一个目录,删除一个目录,改变当前目录和工作目录等。
7.2 文件的逻辑结构 7.2.1 文件逻辑结构的类型 (1)定长记录:文件中所有记录的长度都是相同的。 7.2 文件的逻辑结构 7.2.1 文件逻辑结构的类型 1.有结构文件 (1)定长记录:文件中所有记录的长度都是相同的。 优点:处理方便、开销小,是较常用的一种记录格式。 (2)变长记录:指文件中各记录的长度不相同。 产生原因:记录中数据项包含可变内容,如书的著作者、论文中的关键词等; 根据组织记录方式的不同,有结构文件分成: (1) 顺序文件:由若干记录按某种顺序排列形成的文件。 通常是定长记录。
(3)索引顺序文件:上述两种文件构成方式的结合。 (2)索引文件:当记录为可变长度时,通常建立一张索引表为每个记录设置一个表项,以加快对记录检索的速度。 (3)索引顺序文件:上述两种文件构成方式的结合。 先为文件排序,关键字相同排一组,再为文件建立索引表,每一组记录中的第一个记录设置一个索引表项。 2.无结构文件——流式文件 如大量的源程序、可执行文件、库函数等 长度以字节为单位。 访问方式:采用读/写指针指出下一个要访问的字符。
7.2.2 顺序文件 1.顺序文件的排列方式 1)串结构:文件中的记录按其录入时间先后排序。 7.2.2 顺序文件 1.顺序文件的排列方式 1)串结构:文件中的记录按其录入时间先后排序。 查找速度慢,检索串结构文件时,每次都必须从头开始,逐个记录地查找。 2)顺序结构:文件中的记录按关键字(词)排序。 检索可利用某种有效的查找算法,如折半查找法、插值查找法、跳步查找法等。 查找速度快。
顺序文件的优缺点 优点:对记录进行批量存取时,存取效率最高。 缺点: 1)如果要查找或修改单个记录,顺序文件的性能就可能很差:需要逐个查找记录。 尤其是当文件较大时,情况更为严重。 2)增加或删除一个记录都比较困难。 解决方法:配置一个运行记录文件(事务文件) 把需要改变的记录信息记下,每隔一段时间吧运行记录文件和原文件合并生成一个按关键字排序的新文件。
7.2.3 记录寻址 1.隐式寻址:定、变成均设置读写指针 顺序文件中的记录可以是定长的,也可以是变长的。 顺序文件中的记录可以是定长的,也可以是变长的。 定长记录:若记录长L下一个记录的逻辑地址很容易确定。 读指针Rptr,每读完一个记录执行Rptr:=Rptr + L 写指针Wptr,每写完一个记录执行Wptr:=Wptr + L 变长记录:定位下一条记录时较麻烦。
定长和变长记录文件
Ai = i × L 2.显式寻址 1)通过文件中记录的位置 2)利用关键字 定长记录:方便实现顺序存取,方便实现直接存取。 变长记录:用直接存取方法来访问变长记录文件中的一个记录是十分低效的。 解决方法:为变长记录文件建立一张索引表 Ai = i × L
7.2.4 索引文件 索引表按记录键排序,因此索引表本身是一个定长记录的顺序文件,可以方便地实现直接存取。 1.按关键字建立索引
2.具有多个索引表的索引文件 按不同关键字排序,从而为顺序文件建立多个索引表。 索引文件优点:可以实现随机查找,提高查找速度 缺点:除了主文件外,还需存储索引表。
7.2.5 索引顺序文件 1.索引顺序文件的特征 是顺序文件和索引文件相结合的产物。 增加索引文件中的索引表 7.2.5 索引顺序文件 1.索引顺序文件的特征 是顺序文件和索引文件相结合的产物。 增加索引文件中的索引表 增加顺序文件中的溢出文件(运行记录文件) 2.一级索引顺序文件 将顺序文件中的所有记录分为若干个组;为顺序文件建立一张索引表,为每组中的第一个记录建立一个索引项,含有该记录的键值和指向该记录的指针。
当索引文件较大时为索引文件再建立一张索引文件。 一级索引顺序文件 3.两级索引顺序文件 当索引文件较大时为索引文件再建立一张索引文件。
7.2.6 直接文件和哈希文件 1.直接文件 前述几种文件结构对记录进行存取时,都须利用给定的记录键值,先对线性表或链表进行检索,以找到指定记录的物理地址。 直接文件:根据给定的记录键值,直接获得指定记录的物理地址。 记录键值本身就决定了记录的物理地址。 由记录键值到记录物理地址的转换被称为键值转换。
利用Hash函数(或称散列函数),将记录键值转换为相应记录的地址。 目前应用最为广泛的一种直接文件。 利用Hash函数(或称散列函数),将记录键值转换为相应记录的地址。 为了能实现文件存储空间的动态分配,通常由Hash函数所求得的并非是相应记录的地址,而是指向一目录表相应表目的指针,该表目的内容指向相应记录所在的物理块。
Hash文件的逻辑结构
7.3 目 录 管 理 文件目录用于标识系统中的文件及其物理地址,供检索时使用。 对目录管理的要求如下: 7.3 目 录 管 理 文件目录主要目标:对大量的文件实施有效的管理。 文件目录用于标识系统中的文件及其物理地址,供检索时使用。 对目录管理的要求如下: (1)实现“按名存取”:用户只须向系统提供所需访问文件的名字,便能快速准确地找到指定文件在外存上的存储位置。 是目录管理中最基本的功能,也是文件系统向用户提供的最基本的服务。
合理地组织目录结构,可加快对目录的检索速度,从而提高对文件的存取速度。 (3)文件共享。 (4)允许文件重名。 (2)提高对目录的检索速度。 合理地组织目录结构,可加快对目录的检索速度,从而提高对文件的存取速度。 (3)文件共享。 (4)允许文件重名。 系统应允许不同用户对不同文件采用相同的名字,以便于用户按照自己的习惯给文件命名和使用文件。
7.3.1 文件控制块和索引结点 FCB三类信息:基本信息、存取控制信息、使用信息。 1)基本信息 7.3.1 文件控制块和索引结点 1.文件控制块FCB FCB三类信息:基本信息、存取控制信息、使用信息。 1)基本信息 ①文件名:每一个文件都必须有惟一的名字,用户利用该名字进行存取。 ②文件物理位置:文件在外存上的存储位置。 ③文件逻辑结构:流式文件\记录式文件、记录数;定长记录还是变长记录等。 ④文件的物理结构:顺序文件、链接文件、索引文件。
文件主的存取权限、核准用户的存取权限以及一般用户的存取权限。 2)存取控制信息 文件主的存取权限、核准用户的存取权限以及一般用户的存取权限。 3)使用信息 文件的建立日期和时间、文件上一次修改的日期和时间及当前使用信息(当前已打开该文件的进程数、是否被其它进程锁住、文件是否被修改但尚未拷贝到盘上)。 不同OS的文件系统,记录的使用信息不完全相同。
MS-DOS的文件控制块
文件目录存放在磁盘上,当文件很多时目录可能要占用大量的盘块。 2.索引结点 1) 索引结点的引入 文件目录存放在磁盘上,当文件很多时目录可能要占用大量的盘块。 查找目录时,先将第一个盘块中的目录调入内存,然后比较文件名。若未找到指定文件,便再将下一个盘块中的目录项调入内存。
可采用把文件名与文件描述信息分开的办法:使文件描述信息单独形成一个索引结点。 检索目录文件的过程中,只用到了文件名。 其他信息检索目录时不需调入内存。 可采用把文件名与文件描述信息分开的办法:使文件描述信息单独形成一个索引结点。 在文件目录中的每个目录项仅由文件名和指向该文件所对应的i结点的指针所构成。 目录项所占空间大大降低。 在UNIX系统中一个目录仅占16个字节,其中14个字节是文件名,2个字节为i结点指针。
0 13 14 15 UNIX的文件目录
(1)文件主标识符:拥有该文件的个人或组的标识符。 (2)文件类型:正规文件、目录文件或特别文件。 2)磁盘索引结点 包括以下内容: (1)文件主标识符:拥有该文件的个人或组的标识符。 (2)文件类型:正规文件、目录文件或特别文件。 (3)文件存取权限:各类用户对该文件的存取权限。 (4)文件物理地址:每一个索引结点中含有13个地址项,即iaddr(0)~iaddr(12),它们以直接或间接方式给出数据文件所在盘块的编号。
(6)文件连接计数:在本文件系统中所有指向该(文件的)文件名的指针计数。 (5)文件长度:指以字节为单位的文件长度。 (6)文件连接计数:在本文件系统中所有指向该(文件的)文件名的指针计数。 (7)文件存取时间:本文件最近被进程存取的时间、最近被修改的时间及索引结点最近被修改的时间。 3)内存索引结点 当文件被打开时,要将磁盘索引结点拷贝到内存的索引结点中,便于以后使用。
(1)索引结点编号,用于标识内存索引结点。 (2)状态,指示i结点是否上锁或被修改。 在内存索引结点中又增加了以下内容: (1)索引结点编号,用于标识内存索引结点。 (2)状态,指示i结点是否上锁或被修改。 (3)访问计数,每当有一进程要访问此i结点时,将该访问计数加1,访问完再减1。 (4)文件所属文件系统的逻辑设备号。 (5)链接指针。设置有分别指向空闲链表和散列队列的指针。
7.3.2 简单的文件目录 整个文件系统只建一张目录表。 7.3.2 简单的文件目录 1.单级文件目录—最简单的目录结构 整个文件系统只建一张目录表。 每个文件占一个目录项,含文件名、文件扩展名、文件长度、文件类型、文件物理地址以及其它文件属性。 设置一个状态位:表明每个目录项是否空闲。 单级目录
1)先检索所有的目录项,以保证新文件名在目录中是惟一的。 建立新文件时: 1)先检索所有的目录项,以保证新文件名在目录中是惟一的。 2)然后再从目录表中找出一个空白目录项,填入新文件的文件名及其它说明信息,并置状态位为1。 删除文件时: 1)先从目录中找到该文件的目录项,回收该文件所占用的存储空间; 2)再清除该目录项。 单级目录的优点: 简单且能实现目录管理的基本功能——按名存取。
单级目录缺点: (1)查找速度慢。 对于一个具有N个目录项的单级目录,为检索出一个目录项,平均需查找N/2个目录项。 (2)不允许重名。 重名问题在多用户环境下是难以避免的。 (3)不便于实现文件共享。 单级目录只能适用于单用户环境。
为每一个用户建立一个单独的用户文件目录UFD。 每个UFD具有相似的结构,由用户所有文件的FCB组成。 2.两级目录 为每一个用户建立一个单独的用户文件目录UFD。 每个UFD具有相似的结构,由用户所有文件的FCB组成。 系统中建立一个主文件目录MFD,每个用户目录文件都占有一个目录项,其目录项中包括用户名和指向该用户目录文件的指针。 如下图中的主目录中示出了三个用户名,即Wang、Zhang和Gao。
两级目录结构
OS检查该用户的UFD,检索是否已有同名的文件。 若有,为新文件重新命名; 在两级目录结构中创建新文件: OS检查该用户的UFD,检索是否已有同名的文件。 若有,为新文件重新命名; 若无,在UFD中建立一个新目录项,将新文件名及其有关属性填入目录项中,并置其状态位为“1”。 用户要删除一个文件: OS只查找该用户UFD,从中找出指定文件的目录项, 回收该文件所占用的存储空间,再将该目录项删除。
(2)在不同的用户目录中,可以使用相同的文件名。 在用户自己的UFD中,每个文件名都是惟一的。 两级目录结构优点: (1)提高了检索目录的速度。 只需在子目录中进行检索。 (2)在不同的用户目录中,可以使用相同的文件名。 在用户自己的UFD中,每个文件名都是惟一的。 (3)不同用户可使用不同的文件名来访问系统中的同一个共享文件。 缺点:两级目录将多个用户隔离开,当多个用户之间要相互合作,或一用户又需去访问其他用户的文件时,会产生局限性。
7.3.3 树形结构目录 1.树形目录 大型文件系统,通常采用三级或三级以上的目录结构,以提高对目录的检索速度和文件系统的性能。 大型文件系统,通常采用三级或三级以上的目录结构,以提高对目录的检索速度和文件系统的性能。 多级目录结构又称为树型目录结构。 主目录称为根目录,数据文件称为树叶,其它的目录均作为树的结点。
方框代表目录文件,圆圈代表数据文件。 多级目录结构
在树形目录结构中,从根目录到任何数据文件,都只有一条惟一的通路。 2.路径名和当前目录 1)路径名 在树形目录结构中,从根目录到任何数据文件,都只有一条惟一的通路。 在该路径上从树的根(即主目录)开始,把全部目录文件名与数据文件名依次地用“/”连接起来,即构成该数据文件的路径名。 系统中的每一个文件都有惟一的路径名。 例如,用户B为访问文件J,应使用其路径名/B/F/J来访问。
为每个进程设置一个“当前目录”,又称“工作目录”。 进程对各文件的访问都相对于“当前目录”而进行。 2)当前目录(Current Directory) 为每个进程设置一个“当前目录”,又称“工作目录”。 进程对各文件的访问都相对于“当前目录”而进行。 如用户B的当前目录是F,则此时文件J的相对路径名仅是J本身。 相对路径名:从当前目录开始到数据文件为止构成的路径名; 绝对路径名:从树根开始的路径。
查询速度更快,同时层次结构更加清晰,能够更加有效地进行文件的管理和保护。 缺点:查找文件需要按路径名逐级访问中间节点,增加了磁盘访问次数。 多级目录优点: 查询速度更快,同时层次结构更加清晰,能够更加有效地进行文件的管理和保护。 缺点:查找文件需要按路径名逐级访问中间节点,增加了磁盘访问次数。 目前,大多数操作系统如UNIX、Linux和Windows系列都采用了多级目录结构。
在树型目录结构中,用户可为自己建立UFD,并可再创建子目录。 3. 目录操作 1)创建目录 在树型目录结构中,用户可为自己建立UFD,并可再创建子目录。 用户创建新文件时,只需查看在自己的UFD及其子目录中有无与新建文件相同的文件名即可。 2)删除目录,须视情况而定。 若要删除的目录是空的,可直接将该目录项删除,使它在其上一级目录中对应的目录项置空; 若要删除的目录不空,可采用下述两种方法处理:
上述两种方法实现起来都比较容易,第二种方法则更为方便,但比较危险。若是错误命令,后果可能很严重。 (1)不删除非空目录。 在MS-DOS中就是采用这种删除方式。 (2)可删除非空目录。 目录中的所有文件和子目录也同时被删除。 上述两种方法实现起来都比较容易,第二种方法则更为方便,但比较危险。若是错误命令,后果可能很严重。 3)改变当前目录 4)移动目录 5)链接操作:让指定文件有多个父目录,方便文件共享 6)查找
7.3.4 目录查询技术 在单级目录中,利用用户提供的文件名,用顺序查找法直接从文件目录中找到指名文件的目录项。 7.3.4 目录查询技术 1.线性检索法(顺序检索法) 在单级目录中,利用用户提供的文件名,用顺序查找法直接从文件目录中找到指名文件的目录项。 在树型目录中,用户提供的文件名是由多个文件分量名组成的路径名,此时须对多级目录进行查找。 假定用户给定的文件路径名是/usr/ast/mbox,则查找/usr/ast/mbox文件的过程如下图所示。
查找/usr/ast/mbox的步骤
现代操作系统中,通常都提供了模式匹配功能,即在文件名中使用了通配符“*”、“?”等。 2.Hash方法 如果建立一张Hash索引文件目录,便可利用Hash方法进行查询,即系统利用用户提供的文件名并将它变换为文件目录的索引值(哈希值),再利用该索引值到目录中去查找,将显著地提高检索速度。 现代操作系统中,通常都提供了模式匹配功能,即在文件名中使用了通配符“*”、“?”等。 对于使用了通配符的文件名,系统此时便无法利用Hash方法检索目录,因此,这时系统还是需要利用线性查找法查找目录。 “冲突”:不同文件名得到相同Hash值。
7.4 文件共享 7.4.1 基于有向无循环图实现文件共享 当有两个(或多个)用户要共享一个子目录或文件时,必须将共享文件或子目录链接到两个(或多个)用户的目录中,此时该文件系统的目录结构已不再是树型结构,而是个有向非循环图DAG(Directed Acyclic Graph)。
实现方法:将共享文件的盘块号放入需共享的多个目录中。 缺点:用户对共享文件进行修改,对其他用户不可见,从而导致数据不一致。 包含有共享文件的文件系统 实现方法:将共享文件的盘块号放入需共享的多个目录中。 缺点:用户对共享文件进行修改,对其他用户不可见,从而导致数据不一致。
2.利用索引节点 链接计数count:记录链接到本文件上的用户目录数。 基于索引结点的共享方式
2)当用户B要共享此文件时,在B的目录中增加一目录项,并设置一指针指向该文件的索引结点,count=2。 共享结束: 共享过程: 1)文件主创建共享文件时,将count置1。 2)当用户B要共享此文件时,在B的目录中增加一目录项,并设置一指针指向该文件的索引结点,count=2。 共享结束: 若文件主不再需要此共享文件,也不能删除文件,只能等其他共享该文件的用户全部撤离才行。 若删除了该文件,也必然删除了该文件的索引结点,这样便会使B的指针悬空。
进程B链接前后的情况
7.4.2 利用符号链实现文件共享 由系统创建一个名为F的LINK类型的新文件; 将F写入B的目录中,新文件中只包含文件F的路径名。 7.4.2 利用符号链实现文件共享 符号链接;若B要共享C的一个文件F; 由系统创建一个名为F的LINK类型的新文件; 将F写入B的目录中,新文件中只包含文件F的路径名。 新文件中的路径名则只被看作是符号链; 当B要访问文件F时,OS根据新文件中的路径名去读该文件,从而实现用户B对文件F的共享。
若文件主删除共享文件,其他用户通过符号链去访问会因找不到该文件而访问失败,再删除符号链,不会产生任何影响。 优点: 1)文件主删除共享文件不会产生大的影响。 只有文件主才拥有指向其索引结点的指针; 共享用户只有该文件的路径名; 若文件主删除共享文件,其他用户通过符号链去访问会因找不到该文件而访问失败,再删除符号链,不会产生任何影响。 2)能够用于链接(通过计算机网络)世界上任何地方的计算机中的文件,只需提供该文件所在机器的网络地址以及该机器中的文件路径即可。
其他用户读共享文件时,系统根据文件路径名逐个查找目录,直至找到该文件的索引结点。 符号链共享方式的问题: 1)访问共享文件要多次读盘,系统开销大。 其他用户读共享文件时,系统根据文件路径名逐个查找目录,直至找到该文件的索引结点。 2)要为每个共享用户建立一条符号链,即建立一个LINK类型文件,并为它配置一个索引结点,要耗费一定的磁盘空间。 3)每个红想着都对共享文件有自己的名字,将整个目录中的文件进行转存时会多次复制同一个共享文件。
7.5 文件保护 7.5.1 保护域 7.5.2 访问矩阵 7.5.3 访问矩阵的修改 7.5.4访问矩阵的实现 影响文件安全性的因素 7.5 文件保护 影响文件安全性的因素 1.人为因素:通过存取控制机制保护 2.系统因素:通过系统容错技术 3.自然因素:通过建立后备系统 7.5.1 保护域 1.访问权 2.保护域 3.进程和域间的静态联系 4.进程和域间的动态联系 7.5.2 访问矩阵 1.基本访问矩阵 2.具有切换权的访问矩阵 7.5.3 访问矩阵的修改 1.拷贝权 2.所有权 3.控制权 7.5.4访问矩阵的实现