导图社区 408操作系统---第4章 文件管理
408操作系统---第4章 文件管理,文件是以硬盘为载体,存储在计算机上的信息集合,用户进行输入输出时以文件为基本单位。
编辑于2023-08-29 21:48:00文件管理
文件
定义:以硬盘为载体,存储在计算机上的信息集合
举例:文本文档、图片、程序
用户进行输入输出时以文件为基本单位
文件共享
使多个用户共享同一文件,系统中只需要保留该文件的一个副本
共享方式
基于索引结点的共享方式(硬链接)
在索引结点中设置一个链接计数变量count:用于记录链接到本索引结点的用户目录项数
用户目录指向同一个索引结点
只有当count=0时,才能删除共享文件
利用符号链实现文件共享(软链接)
系统创建LINK型文件,文件中保存共享文件的地址-路径名(类似于快捷方式)
文件主保留该共享文件的索引指针,其他用户只有该路径的路径名
其他用户根据文件路径名逐个查找
文件保护
口令保护
为文件设置一个口令,用户访问文件时必须提供口令
口令一般放在对应的FCB或索引结点中
优点:保存口令空间开销小,验证口令时间开销也小
缺点:口令存放在系统内部不安全(入侵系统获得口令)
加密保护
使用密码对文件加密,整个文件都被加密
例如:异或加密
安全性高,加密/解密需要消耗时间
访问控制
在每个文件的FCB中增加访问控制列表(ACL)
访问控制列表:记录各个用户可以对文件进行哪些操作
精简的访问列表:分组,标记各组用户可以进行哪些操作
通过访问控制表检查用户可对文件进行哪些操作
文件特征
文件属性
文件名:同一目录下不允许重复
标识符:操作系统用于区分文件的内部名称
类型:文件的类型
位置:文件存放位置
大小:文件大小
创建时间、上次修改时间、
保护信息:对文件进行保护的访问控制信息
子主题
文件的操作
文件基本操作
创建文件
外存中找到文件所需空间
找到对应目录文件,增加目录项(FCB)
create系统调用
删除文件
Delete系统调用
参数
文件存放路径
文件名
操作
从对应的目录文件目录表中删除目录项
回收文件占用磁盘块
写文件
write系统调用
指明是那个文件(打开文件表索引号)
将指定数据写回内存
读文件
Read系统调用
指明文件和读入多少数据
打开文件
Open系统调用
参数
文件存放路径
文件名
要对文件进行的操作(r/w)
打开文件表
系统的打开文件表
有多少个进程打开了该文件
进程的打开文件表
读写指针、访问权限
操作
找到文件的目录项
将目录项复制到打开文件表中
进程打开文件表
系统打开文件表
含计数器(多少个进程调用次文件)
关闭文件
删除进程的打开文件表表项
回收内存空间
系统打开文件表,计数器-1
文件的结构
逻辑结构
子主题
分类(逻辑文件)
无结构文件(流式文件)
文件内部数据就是一系列二进制流或字符流
举例:“.txt”文件
有结构文件(记录式文件)
一组相似的记录组成
分类(各条记录的长度是否相等)
定长记录
可变长记录
按逻辑结构分类(用户视角)
顺序文件
串结构
记录之间的顺序与关键字无关
顺序结构
记录之间的顺序按照关键字顺序排列
链式存储
无论是定长/不定长,都无法实现随机存取
顺序存储
可变长记录
无法实现随机存取,每次只能从第一个记录依次往后查找
定长记录
可实现随机存取。记录长度为L,第i个记录位置为:i*L
串结构
无法快速找到关键字
顺序结构
可以快速找到某关键字对应的记录
索引文件
索引表
索引表项(对应一个记录)
索引号
长度
指针
指向记录内容
索引表是定长记录顺序文件
逻辑文件
缺点:每个记录都对应一个索引项,索引表可能会很大
索引顺序文件
索引表
键
地址
对应一组记录
多级索引顺序文件
物理结构(操作系统)
文件在存储设备上是怎么分布和组织的
物理块与逻辑块
连续分配
定义:每个文件在磁盘上占用一组连续的块
文件目录的每一条记录上→起始块号、长度
起始块号+逻辑块号=物理块号(起始块号、逻辑块号存在于FCB中)
优点
支持顺序访问和直接访问(随机访问)
读写速度最快(磁盘磁头移动)
缺点
不方便拓展(新增内容只能放在与原先磁盘相邻空间)
存储空间利用率低,存在难以利用的小磁盘块,外部碎片
链接分配
隐式链接(默认)
链接各个物理块的指针存放与物理块中,只有读完上一个物理块才能得到下一个物理块
文件目录记录→起始块号、结束块号
优点
方便文件拓展
不易产生外部碎片
缺点
只支持顺序访问,不支持随机访问
显示链接
使用文件分配表(FAT表),记录各物理块的指针
常驻内存
一个磁盘一张
FCB记录,起始块号
文件分配表
物理块号
下一块号
优点
既支持顺序访问,又支持随机访问
地址转换不需要访问磁盘(文件分配表常驻内存)
不会产生外部碎片
缺点
文件分配表占用存储空间
索引分配
每个文件建立一张索引表
索引块→索引表(索引表存放磁盘叫索引块)
索引表
逻辑块号
物理块号
文件目录记录(FCB)→索引块
若索引表过大,一块放不下
链接方案
多个索引表,链接
只需要记录第一个索引块的地址(上一个索引块保存下一个索引块的地址)
问题:只能顺序查找
多层索引
建立多层索引
一级索引指向二级索引
文件最大长度可以达:256*256*1KB(一个磁盘块为1KB,索引项占4B,采用两层索引)
1026/256=4···2
多层索引访存次数:n+1(访问索引表+访问目标数据块)
缺点:即使是小文件也需要多次索引查找
混合索引
多重索引方式的结合
FCB→地址→顶级索引块
包含直接地址索引、一级间接索引、二级间接索引
优点:计算机中小文件多,对于小文件只需要较少的访存次数
文件目录
文件控制块(FCB)
用来存放控制文件需要的各种信息
FCB是一个文件目录项,多个FCB组成一个文件目录
最关键信息
文件名
文件存放位置
目录文件 and 文件目录
目录文件
一种文件格式,里面存放有文件目录
文件目录
有下一级文件的FCB组成的目录
索引结点
简化的FCB
文件目录
文件名
指向索引结点的指针
索引结点:包含FCB中所有其他文件描述信息
提高文件检索速度
对目录的操作
搜索目录
创建目录
删除目录
显示目录
修改目录
目录结构
单级目录结构
整个文件系统只建立一张目录,每个文件占一个目录项
不允许文件重名
不适用多用户操作系统
两级目录结构
主文件目录
用户名、用户文件存放位置
用户文件目录
由该用户的FCB组成
用户无法对自己的文件进行分类
树形目录结构(多级目录结构)
绝对路径:由根目录出发到文件通路上所有目录名
/照片/自拍.jpg
需要多次访存
相对路径:从“当前目录”到文件通路的目录名
不便于实现文件的共享
无环图目录结构
可以用不同的文件名指向同一文件
共享计数器
共享计数器=0,才删除文件
文件存储空间管理
存储空间的划分与初始化
为磁盘分区(C盘、D盘、E盘)
子主题
存储空间管理
空闲表法(连续的空闲块)
空闲盘块表
第一个空闲盘块号(起始空闲块号)
空闲盘块数(连续的盘块个数)
分配
首次适应算法、最佳适应算法、最坏适应算法等
回收
注意表项合并问题
四种情况
回收区前后都没有相邻空闲区
前后都有
前有后没有
前无后有
空闲链表法
空闲盘块链
操作系统保持链头和链尾的指针
分配
需要K个磁盘块,从链头依次取K个盘块分配,修改空闲链的链头指针
回收
回收的盘块依次挂到链尾
空闲盘区链(一个盘区多个盘块)
分配
首次适应算法、最佳适应算法、最坏适应算法等
若没有合适的连续空闲块,将不同盘区的盘块分配给一个文件
回收
合并问题:前后有相邻,合并进盘块
回收区前后都没有相邻空闲区
挂到链队尾
位示图法
每个二进制位代表一个盘块,例如:“0”代表空闲,“1”代表已分配
分配
连续分配:扫描位示图,找到K个相邻的空闲块“0”
离散分配:扫描位示图,也可找K个不相邻的空闲块
根据字号和位号计算出盘块号
将被分配的位 置为“1”
回收
根据回收盘号计算出对应的字号、位号
将相应的二进制位置为“0”
成组链接法
超级块
下一组空闲盘块数
空闲块号
分配
从超级块下一层开始分配
回收
从超级块以及第一层开始回收
三
文件系统的层次结构
用户接口
处理用户发出的系统调用请求,如:Read、Write、Open等
文件目录系统
根据用户给的文件路径,找到对应的FCB或索引结点
存取控制模块
验证用户是否有访问权限,主要完成文件保护等功能
逻辑文件系统与文件信息缓冲区
将用户想要访问的文件记录号,转换为对应的逻辑地址
物理文件系统
把文件的逻辑地址转换为实际的物理地址
设备管理模块
直接与硬件交互,负责与硬件直接相关的管理工作
如:分配设备、分配设备缓冲区、磁盘调度、启动设备
辅助分配模块
负责文件存储空间的管理,分配和回收存储空间
文件系统布局(全局结构)
文件系统在外存(磁盘)中的结构
文件系统在内存中的结构
物理格式化
划分扇区
检测坏扇区
备用扇区替换损坏扇区
逻辑格式化
完成各分区文件系统的初始化
虚拟文件系统(VFS)
向上层提供标准的系统调用接口,屏蔽底层具体文件系统的实现差异
不同的文件系统表示文件的数据结构不同inode
每打开一个文件就建立一个vnode结点,用统一的数据结构表示文件