导图社区 操作系统文件管理
操作系统中文件的管理,包含了文件和文件系统、文件的逻辑结构、文件的目录、文件的共享、文件的保护等内容。
编辑于2021-08-23 19:35:17文件管理
文件和文件系统
文件
具有文件名(文件按名字存储)的一组相关元素的集合
管理的目标
方便用户存取效率高,保证数据安全性与一致性提高外存磁盘空间的利用率
文件系统接口
命令图形界面化用户程序
文件的属性
文件类型文件长度文件的物理位置文件的存取控制文件的建立时间
文件系统
管理的对象
文件、目录、磁盘空间
层次
文件的逻辑结构
文件组织的两种观点
用户观点(逻辑结构)实现观点(物理机构)
逻辑结构的分类
有结构的文件:由记录所构成的文件。(顺序文件、索引文件、索引顺序文件)无结构的文件:流式文件。(源程序文件、可执行文件、库函数)
顺序文件
排列方式(2种)
按记录录入的时间排:串结构按关键字排序:顺序结构(有利于提高查询速度)
优点
批处理时存取效率在所逻辑文件中最高可存储在磁带上
缺点
顺序查找速度慢增删改比较麻烦
记录寻址
通过读指针和写指针来获取位置。分为定长和不定长两种:不定长的记录文件需要一个索引表
索引文件
为变长记录文件建立一张索引表(关键字字有序,定常记录的顺序文件)有索引号所以可以使用折半查找法,提高了速度,增加了存储的开销增、删、改的时候对索引表做出修改
索引顺序文件
由于即使是非常小的一个文件在索引文件中都需要在索引表中占一个位置,就浪费了空间。所以将多个文件分为一个组,一个组里的第一个文件记录在索引顺序文件中。 对比索引文件:10000条记录:索引文件采用折半查找:需要根号10000次,约为5000次找到。索引顺序文件,假设100个1组,则需要根号100找到组号,然后再根号100找到组里的那个文件。则越需要50.5+50.5=101次。随着记录的增多,两者效率的差距还会拉更大
直接文件
记录键值,通过键值对直接获取到制定记录的物理地址。键值对:物理地址与逻辑地址的映射
哈希文件
在实时操作的文件中使用。通过Hash函数将键值与目录表中的值作映射。
文件的目录
目的
利用目录实现对大批文件的有效管理将文件名——通过map——外存物理位置
文件控制块和索引结点
文件控制块FCB
用于描述和控制文件的数据结构文件与文件控制块一一对应文件管理程序借助FCB的信息,对文件进行操作。一个FCB也就是一个文件的目录项
FCB上面的信息
基本信息文件名文件的物理位置文件的逻辑结构文件的物理结构存取控制信息(安全性)文件主和用户的权限使用信息打开文件的进程数进程是否被锁住文件的内存是否被修改,但是尚未拷贝到文件
索引结点(i结点)
引入的原因
检索目录时只是用到了文件名,而文件描述信息并未使用,但仍被调入内存所以将文件名与文件描述信息分离于是将文件描述信息单独构成一数据结构——索引结点
含有的信息
存放文件的 基本信息 控制信息 使用信息
存储的内容
磁盘索引结点:存放在磁盘。存储了:文件拥有者标识、文件类型、文件存取权限、文件长度、文件存取时间、文件13个物理地址、文件连接计数(用于文件共享)等内存索引结点:存储在内存。将磁盘索引结点拷贝在内存的索引结点。并且还要增加:索引结点编号状态(是否被上锁或被修改)访问计数(有一个进程访问则计数+1,访问完则-1)文件所属文件系统的逻辑设备号(与外存建立联系)链接指针(指向空闲链表和散列队列的指针)
单极目录
整个文件系统只建立一张目录表,每个文件占一个目录项
结构
新建文件——有无重名——加入目录表删除文件——回收块——清除占用目录项
特点
简单且能按名存取查找速度慢/不允许重名/不便于文件共享
两级目录
为每一个用户建立一个单独的文件目录
目录结构
结构
新建文件:只需要保证每个用户的UFD里面没有重名。若有,则需重命名。若无则新增一个目录项,并将文件的状态为设置为1删除文件:找到UFD里文件所在目录项,将其删除
优点
提高了查找速度(n个用户,每个用户m个文件则最坏查找速度为n+m)可重名(不同用户间)可共享文件
多级目录
目录文件中的目录项,既可以做为目录文件的FCB,也可以作为数据文件的FCB。
目录结构
文件查询技术
基本访问过程
用户提交文件名对文件目录进行查询找到FCB或i结点根据对应的物理盘块号换算物理地址启动磁盘驱动将文件读入内存
线性检索技术
文件名是多个文件分量组成的路径例如:/usr/ast/mbox
hash算法
将用户提供的文件名变化为文件目录的索引值,利用索引值到目录中寻找。解决冲突:将hash值再加上一个常数(该常数应与目录的长度值互质),形成新的索引值,在返回第一步重新查找。
文件的共享
多用户(进程)共享同一份文件,从而在外存中只需保存该共享文件的一个副本。在需要共享文件的用户,都不必各自备有此文件的副本。提高空间利用率。
实现的方法
基于有向无循环图
有向无环图
特点
FCB在不同目录文件中,将共享文件的物理地址链拷贝。拷贝到多个共享它的用户/进程的父目录里。如:F8拷贝到了D5、D6、D3
缺点
共享文件新增或改变的东西,用户不知道。(添加数据的时候,就会增加新的盘块,这些添加盘块只会出现在执行了操作的目录中)
利用索引结点
共享的是文件的索引结点(文件的物理地址)。任何用户对文件的修改,索引结点内容改变,其他用户都能看见。当count>1(使用文件的人)时,文件拥有者也不能删除文件,否则指针悬空。
利用符号连接
当B要共享C的文件F由系统创建一个link类型的新文件F,并将F写入B的目录。F中只包含被连接文件F的路径名(符号链)可用于链接网络中任何地方计算机中的文件
原理
允许一个文件或目录可以有多个父目录。但只有一个作为主父目录(文件主),其他作为链接父目录。通过符号链接来链接起来
优点
文件主拥有文件索引结点的指针,其他用户只拥有文件路径文件主删除共享文件后不会产生悬空指针,只链接失败。
缺点
访问文件开销大,启动磁盘的频率较高符号链索引结点及文件空间开销大。
文件的保护
影响文件安全的因素(3个)
人为因素(eg:不该访问的访问了)系统因素(eg:磁盘控制器坏了)自然因素(eg:地震等)
措施(3个)
给文件制定访问控制权采用系统容错技术(主要冗余技术),防止系统部分故障造成文件不安全性。建立后备系统,防止由自然因素所造成的不安全性。
保护域
系统只允许进程访问他们具有访问权的对象。系统只允许每个进程仅能在保护域中执行操作。每个域都有进程对一组对象的访问权的集合。一个域规定了进程所能访问的对象和能执行的操作。 访问权和域利用一个访问矩阵来记录
进程与域之间的联系(2种)
静态的:一个进程对应一个域动态的:一个进程联接着多个域,不同的阶段,进程对一个的域会切换。在一个阶段内只能拥有一个域.
访问矩阵
记录该进程在不同域对不同文件的访问权。一个进程对应一个访问矩阵
基本访问矩阵
包括对象、域以及对象在不同域下的不同权限。 R为可读、W为可写,E为可执行
具有域切换的访问矩阵
在一定的时间之后又切换到另外的域
访问矩阵的修改
拷贝权
将某个域的所有访问权扩展到同一列的其它域中。特点是权限的右上角又一个*号。
所有权
O即为所有权,可以改变某些访问权,或者删除某种访问权
控制权
可以删除/改变在域中运行的进程对个对象的任何访问权(包括拥有权)。这是一个最高的权限。
实现/改进
由于每个用户的访问权限有限,所以这是一个比较大的稀疏矩阵,空间利用率不高。
访问控制表
访问矩阵按列(对象)划分,然后删除空项,每一列建立一个访问控制表ACL,就像一个链表。减少了空间,提高查找速度。 可用于定义缺省的访问权集。该表中列出了各个域中对某对象的缺省访问权集。
访问权限表
把访问矩阵按行(域)划分,每一行构成一个访问权限表。
前两种方法的结合
文件的实现、文件目录的实现
https://www.cnblogs.com/albertrui/p/8867103.html