第四章part1

操作系统(四-part1)文件管理

文件管理提要

文件的信息,文件内部信息的组织形式,文件之间的组织形式

OS提供的功能

文件如何存放在磁盘上

文件属性

文件名:同一目录下不能相同

标识符:一个系统内文件标识符唯一

类型:指定文件类型

位置:文件存放的路径(用户),外存中的地址(OS)

保护信息:操作权限

文件内部的组织形式

无结构文件:由一系列二进制或字符流组成,如.txt

有结构文件:由记录 - 数据项结构组成,如.xls

文件之间的组织:文件由目录有序的组织起来,目录本身也是一种文件

OS操作文件:使用createreadwritedeleteopenclose等系统调用

文件在外存中

外存同上节所属的内存,其中被分为一个个的存储单元(磁盘块)

文件的逻辑地址:逻辑块号 + 块内地址

文件的物理地址:物理块号 + 块内地址

OS需要将逻辑地址转换为物理地址

文件的逻辑结构

无结构文件:流式文件,无明显结构特征

有结构文件:每条记录有一个数据项作为关键字,根据各项目的记录长度是否相等可以分为定长记录和变长记录

顺序文件:文件中记录的内容依次顺序排列,记录可以定长或变长。顺序或链式存储

结构

串结构:索引与记录二者的顺序无关

顺序结构:记录的顺序按照索引的顺序排列

能否实现随机存取

链式存储

无论为定长/可变长记录,均无法实现链式存储

顺序存储

可变长记录

无法实现随机存取,只能由第一个记录开始向后查找

定长记录

可实现随机存取,记录长度为L,则第i个记录的位置是 i × L i \times L i×L

采用串结构,无法找到关键字对应记录

顺序结构,可以快速找到关键字对应记录

顺序文件即物理上顺序存储文件,导致增、删文件比较困难

索引文件

建立索引表,索引表中的每个项目对应一条记录

索引表自身是定长记录的顺序索引文件

便于在快速响应的场景下使用

索引顺序文件:缩小索引的规模

给记录分组,每个分组建立一个索引表项

各分组之间由索引组织,各分组内部顺序存储

多级索引顺序文件:参考多级页表和索引顺序文件

顶级索引表索引分组索引表

分组索引表索引分组

各分组顺序存储

文件目录

可以理解为”文件夹“

文件控制块(FCB):实现文件目录的关键结构

实现”按名存取“,实现文件名与文件之间的映射

包含文件名,物理地址,逻辑结构等基本信息

需要目录进行的操作

搜索:根据文件名搜索目录

创建文件:创建文件的同时增加一个目录项

删除文件:删除一个文件的同时删除响应的目录项

显示目录:显示目录文件的内容

修改目录:文件改变时修改目录项

目录结构

单级目录结构:单用户操作系统

两级目录结构:早期多用户操作系统

主文件目录:记录用户名以及相对应的用户文件信息

用户文件目录:由该用户的文件FCB组成

缺点:无法对文件进行分类

多级目录结构(树型目录结构)

绝对路径

由根目录向下查找,由外存读入目录表一级级向下查找 - 读取

几层目录就需要几次磁盘I/O操作

当前目录:由当前文件夹出发的相对位置

缺点:不便于实现文件的共享

无环图目录结构

可以使用不同的文件名指向同一个文件

逻辑上等价于增加了一些指向同一个节点的有向边,使得整个目录形成一个有向无环图

需要为每个共享节点设置一个共享计数器,用于记录有多少目录项在共享该节点

用户提出删除节点时,只是删除该用户的FCB,并将共享计数器-1(不直接删除此节点)

索引节点:对文件控制块FCB的优化

简化FCB,只留下文件名和索引节点指针

将其他的文件描述信息放在索引节点中

存放在外存的索引节点称为磁盘索引节点,放入内存后称为内存索引节点

内存索引节点中加入一些额外信息,如文件是否被修改、此时有多少进程正在访问此文件等

文件的物理结构

对于文件的的存储空间的管理

操作系统需要对磁盘进行那些管理

对非空闲磁盘块

对空闲磁盘块

文件的物理结构:类似内存管理,文件的逻辑地址空间同样也被分为一个个文件块,标识为(逻辑块号,块内地址)的形式

连续分配

每个文件在磁盘上占有一组连续的块

记录文件的起始块号和长度,查找文件中的某部分时,物理块号 = 起始块号 + 逻辑块号

连续分配的优点

连续分配支持顺序访问和直接访问(随机访问)

有利于磁盘上的文件读取(磁头移动距离较短),顺序访问速度快

缺点:不利于文件的拓展,存储空间利用率低,产生难以利用的磁盘碎片

链接分配:离散分配,使用指针链接的方式进行串联

隐式链接(链式分配)

记录方式

在FCB中记录文件的起始块号和结束块号,以及指向下一块的链接指针

逻辑块号到物理块号的转变

系统给出要访问的逻辑块号 -> 找到起始块号 -> (递归的)一块块寻找对应块号

访问i号块需要i+1次操作

只支持顺序访问,不支持随机访问

便于文件拓展,没有碎片空间利用率高

显式链接

目录中只记录起始块号

文件分配表FAT,例如依次存放磁盘块 2 -> 5 -> 0 -> 1(此处省略了其他块)

物理块号下一块
01
1-1(标识结尾)
25
50

寻找物理地址

从目录中找到起始块号

利用起始块号,在FAT中找到对应的物理块号

逻辑块号转换物理块号不需要读磁盘操作

优点

支持顺序访问和随机访问

由于不需要遍历,速度块

缺点:文件分配表FAT需要占用一定的存储空间

索引分配:允许文件离散的分配在各磁盘块中

系统为每个文件建立一张索引表,索引表中记录了文件各逻辑块对应的物理块(由于块号的编号所占字节数相同,所以逻辑块号可以是隐含的,由物理块号字段长度进行计算即可)

索引表所在的磁盘块称为索引块(记录在FCB中),存放实际数据的块称为数据块

与显式连接的区别:显示连接的FAT一个磁盘一张,而索引表是一个文件对应一张

如何实现逻辑块号到物理块号的转变

用户给出要访问的逻辑块号i,OS找到对应文件的FCB

FCB中找到索引表位置,进而读出读出索引表内容

查找第i块的位置

索引分配的优点:支持随机访问,易于实现文件拓展

缺点:索引表需要占空间

索引分配PLUS:索引表过大,一个磁盘块装不下,需要解决索引表过大的问题,做题时注意顶级索引块是否已经调入内存

链接方案

将多个索引块链接起来存放

FCB中只需记录第一个索引块的块号

查找一个块号时,需要先逐个的读取之前的块号来找到该块号,I/O次数过多导致效率低下

多层索引

类似多级页表

查找物理块号

根据逻辑块号计算应该查找索引表中的那个表项

n级索引表需要进行n+1次磁盘I/O

小文件进行了多次不必要的I/O导致小文件读写效率低

混合索引

包含直接地址索引、单层索引表、二级间接索引

文件存储空间管理

对于存储空间的总体管理

存储空间的划分与初始化

文件卷(逻辑卷)的概念:即常见的磁盘分区

目录与文件区

目录区:FCB,索引节点等用于管理磁盘空间的信息

文件区:存放普通的文件

几种空闲区的管理方法

空闲表法

使用”空闲盘块表进行记录“

第一个空闲盘块号(从第一个开始累计的)空闲盘块数
--

适用于存储空间连续分配的方式

磁盘块分配:类似内存管理,可以使用的分配算法包括首次适应、最佳适应、最坏适应等

磁盘块回收:注意表项合并的问题

空闲链表法

空闲盘块链

各空闲盘块中存储着指向下一空闲盘块的指针

分配:依次取下若干盘块进行分配,修改链头指针

回收:回收的盘块依次加到链为,并修改链尾指针

空闲盘区链

连续的空闲盘块组成一个空闲盘区

空闲盘曲的第一个盘块记录盘区的长度和指向下一盘区的指针

位视图法

每个二进制对应一个盘块,使用(行号,位号)或(行号,列号)

例如一个有4个块的硬盘

01
001
101

即0,2块未被使用,1,3块已经被使用

分配:若需要K个块

  1. 顺序扫描位视图,找到K个相邻或者不相邻的0
  2. 根据字号、位号计算出对应的盘块号,将响应的盘分配,将响应的位置为1

回收:求出字号、位号,将二进制设置为0

成组链接法

适用于大文件

文件卷的目录区中专门设置一个磁盘块作为“超级块”,系统启动时将其读入内存,并且时刻保持内存外存中的超级块一致

文件的基本操作

创建文件:create系统调用,找到所需空间、创建文件目录项

删除文件:delete系统调用,找到目录项 -> 回收磁盘块 -> 删除对应目录项

打开文件

open系统调用,找到目录项、检查操作权限 -> 将目录项复制到内存的打开文件表 -> 使用打开文件表的编号来指明要操作的文件(加快访问速度)

打开文件表

系统打开文件表:注意打开计数器(有多少个进程打开了文件?)

进程打开文件表:注意读写指针、访问权限

读文件:read系统调用

写文件:write系统调用

文件共享

便于多个用户共享文件

基于索引结点的共享方式(硬链接)

索引节点设置一个链接计数器count,标识链接到本索引节点上的用户目录项数

删除文件时只是产出对应的目录项(count–),只有count == 0的时候才真正删除文件数据和索引节点

基于符号链的共享方式(软链接)

创建一个新文件,记录了被引用文件的存放路径

磁盘I/O次数多

文件保护

口令保护

用户访问文件时需要输入口令,口令一般存储于FCB或索引节点中

保存口令开销小,验证口令时间少

口令存放在系统内部,不够安全

加密保护

使用密码对文件进行加密,访问文件时需要提供正确的密码才能正确的解密

不需要存储密码,保密性强

编码解码存在开销

访问控制

系统在每个文件的FCB或者索引节点中增加一个访问控制列表,记录各用户对该文件执行那些操作

使用精简的访问列表:以组为单位(系统管理员、文件主、文件主伙伴、其他用户)进行分组,用户想访问文件时,检查对应组是否有权限

文件系统层次结构

文件系统层次结构
文件目录系统
存取控制块FCB
逻辑文件系统于文件信息缓冲区
物理文件系统
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值