持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第6天,点击查看活动详情
文件管理:
文件控制块(FCB),类似进程管理的PCB,存放控制文件需要的各种信息的数据结构。
- 基本信息:包括文件物理位置
- 存取控制信息
- 使用信息
- 索引结点
一个文件对应一个FCB,而一个文件目录项就是一个FCB。
打开文件操作是讲该文件的FCB存入内存的活跃文件目录表,而不是将文件内容负责到主存,找到指定文件目录是打开文件之前的操作。
文件系统基础:
逻辑结构:
-
无结构文件(流式文件):将数据按顺序组织成记录并积累保存,(流式文件)则被看成是一个字符流,以字节(Byte)为单位;
-
有结构文件:
-
顺序文件:
- 串结构:记录之间的顺序与关键字无关
- 顺序结构:记录之间的顺序与关键字有关
-
索引文件:为变长文件建立索引表,提高查找速度
-
索引顺序文件:顺序文件和索引文件的结合,将顺序文件中的所有记录分为若干组,为顺序文件建立一张索引表,在索引中为每组的第一个记录建立一个索引项,其中含有该记录的关键字值和指向该记录的指针
-
直接文件(查找文件)Hash File:通过哈希函数直接决定记录地址
-
目录结构:
- 单级:全部文件都放在一个目录下
- 两级:在目录下分出用户目录
- 多级:将两级结构加以推广,采用树形结构
- 无环图:在树形结构上加入一些有向边,便于共享
文件共享:
- 基于索引结点(硬链接):共享文件指向同一个索引节点;链接计数count;
- 基于符号链(软链接):有文件拥有者才拥有指向其索引结点的指针,共享该文件的其他用户则只有该文件的路径;
文件保护:
- 口令保护:通过口令访问文件
- 加密保护:对文件进行加密处理
- 访问控制:根据访问者的身份进行限制
文件系统实现:
目录实现:
-
线性列表:
- 无序:查找文件较慢,新建文件较快
- 有序:查找文件较快,新建文件较慢
-
哈希表:查找、新建文件都较快,要处理冲突
文件实现:
-
连续分配:在磁盘上连续存放文件
-
链接分配:
- 隐式:采用类似链表的结构
- 显示:把隐式文件中的指针单独抽离出来
-
索引分配:每个文件所有的盘块号都集中存放,建立索引表
存储空间管理:
- 空闲表:把所有空闲块组织成表
- 空闲链表法:把所有空闲块组织成链表
- 位示图:利用二进制的每位记录空闲块
- 成组链接:空闲表和空闲链表的结合,适合大的文件系统