文件管理

Q: 索引节点文件系统与普通文件系统结构上的的区别
A: 索引节点: 文件名与文件描述分离. 每个文件描述都是一个索引结点
文件名|索引结点—文件描述
普通文件系统: 文件名与文件描述并没有分离
文件名|文件描述

Q: 对文件进行操作的系统调用, 都需要获得文件名这个参数吗?
A: 并不是
只要完成了 open () 系统调用, 文件未被关闭, 所有文件操作都是通过使用文件描述符 (Unix)/文件句柄 (windows) 来进行
而不是文件名

Q: 随机访问的定义
A: 一种可以在与总数据量 无关或关系极小 的时间内, 访问到任意一条 (“随机一条”) 记录的能力, 而无需扫描其前面的数据

连续分配

Q: 文件连续分配为什么会产生大量的外部碎片?
A: 连续分配与文件动态变化之间的矛盾
当文件被删除后, 释放出的空闲空间就像一个个”空洞”, 将原本完整的大块空闲区分割开来. 久而久之, 磁盘上便充满了这些无法有效利用的小块空间, 即外部碎片.

链接分配

Q: 隐式链接分配的目录项中的内容是?
A: 文件名, 磁盘块链表的开始盘块号, 文件的大小, (其他元数据)

Q: 为什么隐式链接分配稳定性不佳?
A: 单向链表, 一但某个磁盘块上的指针出问题, 整个文件的数据都会出错

Q: 隐式链接分配可以实现随机访问吗?
A: 不可以
单向链表的形式组织磁盘块, 不支持随机访问

Q: 簇是如何改善隐式链接分配的性能?
A: 隐式链接将磁盘块链接起来. 磁盘块容量小, 一个文件对应的磁盘块过多, 导致性能低下
簇由多个磁盘块组成, 对簇进行隐式链接, 提升性能

Q: 隐式链接会有外部碎片或者内部碎片吗? 大小如何?
A: 不会有外部碎片, 但是会有内部碎片
内部碎片平均大小为

Q: 簇的隐式链接与磁盘块的隐式链接, 在内部碎片大小上有什么区别?
A: 分配磁盘空间的最小单位发生变化, 导致簇的平均内部碎片变大
簇的隐式链接: 内部碎片平均大小为
磁盘块的隐式链接: 内部碎片平均大小为

Q: 显式链接与隐式链接的不同 (指针的保存)?
A: 隐式链接的指针保存在磁盘块中或者簇中
显式链接的指针显式得保存在 FAT 表中

Q: 显式链接为什么支持顺序访问与随机访问?
A: 支持顺序访问是所有”链接”形式的数据结构的共同特点
支持随机访问则是因为, 可以通过读取 FAT 表, 再顺序访问, 找到想要的盘块号, 不用读取磁盘块的内容
虽然像是顺序访问, 但速度块, 也没有真正读取中间磁盘块的内容, 被近似看作是随机访问
而隐式链接, 需要不断地读取磁盘中的内容, 才能获得新指针, 自然不是随机访问

索引分配

Q: 索引分配方式, 索引目录项与索引块中的内容
A: 索引目录项: 文件名|文件元数据|对应的索引块磁盘块号
索引块: 该文件所有的磁盘块号

Q: 索引分配支持随机访问吗?
A: 支持

Q: 文件索引分配的随机访问与显式链接的随机访问有区别吗?
A: 有
索引分配的随机访问, 时间复杂度为
显式链接的随机访问本质是顺序访问, 实际上的时间复杂度为 . 要定位到第 块, 需要在 FAT 表中进行 次指针查找. 但并没有读取第 块之前的数据块, 只是读取了它们对应的 FAT 表格. 所以将此顺序访问近似为随机访问

文件共享

硬链接与软链接本质上的不同
硬链接就是多个指针指向一个索引节点, 保证只要还有一个指针指向索引节点, 索引节点就不能删除
软链接就是将到达共享文件的路径保存下来, 当要访问文件时, 根据路径寻找文件. 可见, 硬链接的查找速度要比软链接的快.

硬链接是一种基于索引结点的共享方式
文件索引结点与内存中

软链接是一种

Q: 被共享的文件 F 索引节点已经在内存中
M 个用户硬链接共享 F
N 个用户软链接共享 F
则有几个指针指向 F 的索引节点? 为什么?
A: m 个
例如 A 用户硬链接共享F.B 用户软链接共享 F
A 用户的目录项中会增加一个表项,F (文件名)|指针, 指针F 索引结点磁盘块
B 用户的目录项中会增加一个表项,F (文件名)|指针, 指针某个磁盘块 ,磁盘块中有文件 F 的路径

Q: 为什么只有硬链接的创造与删除可以改变 Count 值,
软链接的创造与删除对 Count 无影响? (Count 记录的对象)
A: Count 记录的对象是指向该地址索引的指针数
只有硬链接才会创造或删除指针, 软链接不会

Q: 软链接的 Count 值是如何得到的?
A: 创建软链接的时候, 会复制此时索引节点的 Count 值到软链接的表项中

Q: 硬链接与软链接, 那个速度更快?
A: 硬链接
硬链接一次就到
软链接要经过多次跳转