文件管理,逻辑结构,物理结构等内容讲解
树图思维导图提供 文件系统基础思维脑图 在线思维导图免费制作,点击“编辑”按钮,可对 文件系统基础思维脑图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:59922014f68d7dff7c9f65ffc2f9bb80
文件系统基础思维导图模板大纲
属性
文件名、标识符、类型、位置、大小、保护信息。。。
文件内部记录组织
逻辑结构
文件之间组织
目录结构
文件如何放入外存(文件记录如何占用外存)
外部组织
操作系统管理内存空闲块
存储空间管理
对用户来说,文件的记录如何存储(逻辑地址)
无结构文件(流式文件)
一系列二进制流或字符流组成
有结构文件(记录式文件)
由记录组成,分为定长、可变长记录
顺序文件(记录在逻辑上顺序存储)
串结构/顺序结构
记录顺序与关键字顺序无关/按关键字顺序排列
可变长记录顺序文件无法实现随机存取,定长记录可以
定长记录、顺序结构的顺序文件可按关键字快速检索(比索引文件检索快)
缺点
不方便增加、删除记录
索引文件
建立一张索引表,每个记录对应一个表项。各记录不用保持顺序,方便增删
索引表本身就是定长记录的文件,一个索引表项就是一条定长记录,故支持随机存取
若索引表按关键字排列,则可支持快速检索
解决了增删问题,不定长记录也实现了随机存取,但是索引表占空间
索引顺序文件
将记录分组,每组对应一个索引表项
检索记录时先顺序查索引表,找到分组,再顺序查分组
记录过多建立多级索引
要为N个记录建立k级索引,最优分组是每组N的1/(k+1)次幂个记录,平均查找次数为这个数/2再×(k+1)
一个文件对应一个FCB(文件控制块)
一个FCB = 一个目录项
包括文件名、物理地址、逻辑结构、物理结构、存取控制信息、使用信息
目录文件即文件夹:有多个目录项的文件
目录结构
单级目录结构
一个系统只有一张目录表,不允许文件重名
两级目录结构
不同目录文件可以重名,但不能对文件分类
多级(树形)目录
不同目录下的文件可以重名,可以对文件分类,不方便文件共享
系统根据文件路径找到目标文件
从根目录出发是绝对路径
从当前目录出发是相对路径 ./
无环图目录结构
树形目录基础上增加指向同一结点的有向边,目录成为DAG
共享结点设置一个共享计数器,计数器为0才删除该结点(文件)
和文件共享一起看
索引结点
将除了文件名之外的所有信息都放入索引节点中
当查找到FCB时,才将其索引节点inode调入内存,
索引节点中记录了文件各种信息,包括文件在外存的存放位置,从而在外存找到文件数据
具体例子联系混合索引和打开文件,见笔记的图解操作
目录项只包含文件名、索引节点指针,每个目录项长度大幅减少
因而每个磁盘块可以容纳更多目录项,检索文件时磁盘I/O次数减少
顺序分配
为文件分配连续的磁盘块
FCB目录项内容:起始块号、文件长度
优点
顺序存取速度快,支持随机访问
缺点
产生碎片、不利于文件拓展
链接分配-隐式链接(默认)
每个盘块中存有指向下一盘块的指针
FCB目录项内容:起始块号,结束块号
优点:解决碎片问题,外存利用率高,文件拓展实现方便
缺点:只能顺序访问
易错点
计算文件最大长度时,应计算每一块的数据部分大小,即每一块中不包括索引指针的大小
这里复习笔记的插入记录问题!
链接分配-显式链接
建立1张FAT表(整个系统1张),显式记录盘块先后关系,FAT常驻内存(开机后)
优点
隐式链接优点 + 可以随机访问
缺点
FAT占内存
FAT兼职空闲盘块管理
一定要结合目录文件和FCB、打开文件操作看笔记上例图!
索引分配
为文件数据块建立索引表,每个文件1张
混合索引
见书上例图,结合FCB、打开文件操作
k层索引,且顶级索引表未调入内存,访问一个数据块读磁盘k+1次
优点
支持随机访问,易拓展
缺点
索引节点、索引表占空间
空闲表法
空闲表中记录连续空闲区的起始盘块号,盘块数
分配时采用首次适应等算法,类似连续内存管理那一节
空闲链表法
空闲盘块链
以盘块为单位组成一条空闲链
分配时从链头依次取出空闲块,回收时空闲块插到链尾
空闲盘区链
以盘区为单位组成一条空闲链
盘区:连续的空闲盘块
空闲盘区的第一个盘块记录了盘区的长度,下一个盘区的指针
位示图法
1个二进制比特位对应一个盘块(字号/位号)(行号/列号)
一个字长为n,说明位号是0~n-1
0代表空闲,1代表已分配
盘块号、字号、位号都从0开始
盘块号b = ni+j,其中n为字长,(行号i,列号j)
字号i = b/n,位号j = b%n
从1开始也要会:b = (i - 1) * n + j
i = (b - 1)/n + 1
j = (b - 1)%n + 1
成组链接法
UNIX采用的策略,用于大型文件系统,目录区有一个超级块
创建文件
create系统调用
在外存中找到文件所需空间
根据文件存放路径信息找到该目录对应的目录文件,创建目录项FCB
删除文件
delete系统调用
找到目录项,回收磁盘块,删除
打开文件
open系统调用
将目录项的信息复制到内存的打开文件表中,给用户返回索引号/文件描述符,之后用户使用打开文件表的编号来访问文件
每个进程有1个打开文件表,系统中有1个总的打开文件表
这里看笔记打开文件表
FAT和Inode的open操作不相同,见笔记!
打开文件时不会把文件数据直接读入内存
关闭文件
close系统调用
删除进程打开文件表表项
回收分配给该文件的内存
系统的打开文件表计数器-1,若为0则删除系统表表项
读写文件
read/write系统调用
用索引号指明文件,将文件从外存读入内存/从内存写出外存
这里也见笔记,通过FAT读和Inde读结果不一样
读文件的第i块时,FAT用来查,不必把起始块读入内存
Inde中可能是混合索引
不同用户的目录项指向同一个索引节点
见笔记的图!
口令保护
为文件设置一个口令,存在FCB中,可能不安全
加密保护
用密码加密,安全性最高
访问控制
用一个访问控制表ACL记录各组用户对文件的访问权限
用户数量m,访问权限n,需要一个m×n的表,用二进制0、1标识是否可以访问
实现灵活,必须由系统实现
文件访问由用户访问权限和文件属性共同限制
树图思维导图提供 Linux 网络基础知识 在线思维导图免费制作,点击“编辑”按钮,可对 Linux 网络基础知识 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:199680f0e48eac8a1aeaadb90447d4f4
树图思维导图提供 1107文家市玉萍思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 1107文家市玉萍思维导图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:ed943ef641f6dc874860eb6095857ed6