持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情
1、文件系统布局
2、文件的实现
- ①
连续分配把每一个文件作为一连串连续数据块储存在磁盘上。
- 优点: 实现简单,每个文件记住两个数字即可。读操作性能好,单个读操作就可以读出整个文件。
- 缺点: 随时间推移,磁盘会变得零碎。则可以通过压缩磁盘、从新使用空闲空间来解决,但都不是很好的解决方案。
- ②
链表分配为每一个文件构建磁盘块链表。
- 优点:充分利用每一个磁盘块,不会产生磁盘碎片,顺序读取很方便。
- 缺点:随机访问非常缓慢,因为每次访问都要从头开始。
- ③
采用内存中的表进行链表分配取出每个磁盘块的指针放进内存中的表。
- 优点:解决链表分配的随机访问慢的缺点。
- 缺点:当文件数量很大时,维护表的内存会很大,所以这并不实用。
- ④
i 结点每一文件赋予一个 i 结点,i 结点包括文件属性和文件块地址。
- 相对于内存表,在内存占用方面具有很大优势,若每个 i 结点有 n 字节,当打开 k 个文件时,只需要 kn 字节。
3、目录的实现
- 目录系统的主要功能是把文件名映射成定位文件数据所需的信息。
- 文件属性可以放在目录里或在文件的i节点里面。
- 文件名储存:①限制最长长度。②固定一个结束符。③文件名放在堆中。通过储存文件名散列值加速查询。