操作系统L16
File Allocation 文件的实现 续
链表分配 Linked List Allocation
- 保持磁盘块的链表
- 缺点
- 随机存取速度慢
- 一个块中的数据量不是2的幂

由于指针占去了一些字节,每个磁盘块存储数据的字节数不再是2的整数次幂
采用内存中的表进行链表分配 Linked List Allocation using an index
- 从每个块中取出表指针字并将它们放入内存中的索引表FAT(File Allocation Table 文件分配表)中。
- 好处
- 整个块可用于数据
- 存储在内存中,速度快
- 缺点
- 占用大量内存。需要将整个表放在内存中
- 对于 200-GB 磁盘,该表将占用 600M 或 800M 内存。

I-node (index-node)
是一种数据结构,给每个文件赋予一个i节点
列出文件块的属性和磁盘地址
给定i节点,就能找到文件的所有块

这种机制有很大的优势,即只有在对应文件打开时,其i节点才在内存中
占用空间比FAT小

- i节点的问题


Directories 目录的实现
- 打开文件时,文件系统使用路径名来定位目录条目(directory entry)。
- 目录:提供查找磁盘块所需的信息。
- 整个文件的磁盘地址(连续块)
- 第一个块的数量(链表)
- I-node的数量(I-node)
- 在哪里存储属性? 在目录中还是在 I 节点中?
两种存储属性的方法
- 目录条目中的固定大小条目、磁盘地址和属性 (MS-DOS/Windows)
- 每个条目仅引用一个 I 节点的目录 (UNIX)
处理目录中的长文件名
- Fixed-length names 定长名称(浪费空间)
- In-line 行(删除文件时,会引入一个可变大小的间隙(a))

- Heap 堆(堆管理需要额外的努力(b))



如何搜索每个目录中的文件?
- Linearly 线性(慢)
- Hash table 哈希表(更快的查找但更复杂的管理)
- Cache the results of searches 缓存搜索结果
Shared files 共享文件
- 共享文件用于允许文件出现在多个目录中。
- 目录和共享文件之间的连接称为链接(link)。 文件系统是有向无环图 (DAG)。

- 问题:
- 如果目录包含磁盘地址,则必须在目录 B 中制作C目录中的磁盘地址的副本。如果 C 或 B 往文件中添加内容,新的数据块将仅出现在添加工作的用户的目录中。
- 解决方案:
- 不要在目录中列出磁盘块地址,而是在一个小的数据结构中,目录指向这个数据结构。例如,索引节点、i节点
- 创建一个类型为 link 的新文件,其中包含链接到的文件的路径名 → 符号链接(symbolic linking)
- 两种方法的缺点
数据结构


符号链接

Virtual File Systems 虚拟文件系统
定义:虚拟文件系统(或虚拟文件系统交换机)是内核中的软件层,为用户空间程序提供文件系统接口。
- 从“the”文件系统到许多文件系统类型
- 示例 – Ext2、UFS(Solaris)、NFS、Ext3、Veritas、ReiserFS、XFS、ISO9660 (CD)、UDF (DVD) 等。



不同类型文件系统的相同 API
- 将文件系统通用操作与实现细节分开
- 系统调用程序到 VFS API 而不是特定的 FS 接口

非常灵活的用例:
- 远程用户文件和本地系统文件?
- 从 USB 启动? 网络?


问题



文件如果很大,i节点块的大小需要变大,可能还需要指向另一块包含额外块地址的块的地址,所以B、C、D有关





Check Points
Please describe the advantages and disadvantages of contiguous allocation.
- 随机读取速度快,实现简单,性能好(无需寻道)
- 需要提前知道文件大小,文件删除后留下碎片
Please describe the advantages and disadvantages of linked listed allocation.
- 文件大小可拓展,充分利用磁盘空间
- 随机存储慢,数据大小不是2的幂次
Please describe the advantages and disadvantages of FAT.
- 随机存储速度快,文件大小可拓展
- 占用内存大量空间,
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Yeの博客!