目录
[多级目录结构 (树形目录结构)](#多级目录结构 (树形目录结构))
文件管理
文件的逻辑结构
按文件是否有结构分类,可以分为无结构文件、有结构文件两种
无结构文件
文件内部的数据就是一系列二进制流或字符流组成。又称"流式文件。如;Windows 操作系统中的 .txt 文件。
有结构文件
由一组相似的记录组成,又称"记录式文件"。每条记录又若千个数据项组成。如:数据库表文件。一般来说,每条记录有一个数据项可作为关键字(作为识别不同记录的ID)
根据各条记录的长度(占用的存储空间) 是否相等,又可分为定长记录 和可变长记录两种
顺序文件
索引文件
索引顺序文件
为了进一步提高检索效率,可以为顺序文件建立多级索引表。例如,对于一个含 106个记录的文件,可先为该文件建立一张低级索引表,每 100 个记录为一组,故低级索引表中共有 10000个表项(即10000个定长记录),再把这 10000 个定长记录分组,每组100个,为其建立顶级索引表,故顶级索引表中共有 100 个表项。
文件目录
文件控制块(FCB)
一个FCB就是一个文件目录项
FCB 的有序集合称为"文件目录"FCB 中包含了文件的基本信息 (文件名、物理地址、逻辑结构、物理结构等),存取控制信息(是否可读/可写、禁止访问的用户名单等),使用信息(如文件的建立时间、修改时间等)。
FCB 实现了文件名和文件之间的映射。使可用户(用户程序)以实现"按名存取"
目录结构分类
单级目录结构
早期操作系统并不支持多级目录,整个系统中只建立一张目录表,每个文件占一个目录项
两级目录结构
早期的多用户操作系统,采用两级目录结构。分为主文件目录 (MFD,Master File Directory) 和用户文件目录(UFD,User Flie Directory)
多级目录结构 (树形目录结构)
树形目录结构可以很方便地对文件进行分类,层次结构清晰,也能够更有效地进行文件的管理和保护。但是,树形结构不便于实现文件的共享。为此,提出了"无环图目录结构"
无环图目录结构
索引节点
其实在查找各级目录的过程中只需要用到"文件名"这个信息,只有文件名匹配时,才需要读出文件的其他信息。因此可以考虑让目录表"瘦身"来提升效率
文件的物理结构(文件分配方式)
文件块、磁盘块
文件分配方式
连续分配
优点:
读取某个磁盘块时,需要移动磁头。访问的两个磁盘块相隔越远,移动磁头所需时间就越长
结论:连续分配的文件在顺序读/写时速度最快
缺点:
结论:物理上采用连续分配的文件不方便拓展
链接分配
隐式链接
显示链接
索引分配
链接方案:如果索引表太大,一个索引块装不下,那么可以将多个索引块链接起来存放。
多层索引:建立多层索引(原理类似于多级页表)。使第一层索引块指向第二层的索引块。还可根据文件大小的要求再建立第三层、第四层索引块。
采用 K 层索引结构,且顶级索引表未调入内存,则访问一个数据块只需要 K + 1 次读磁盘操作
混合索引:多种索引分配方式的结合。例如,一个文件的顶级索引表中,既包含直接地址索引(直接指向数据块),又包含一级间接索引(指向单层索引表)、还包含两级间接索引(指向两层索引表) 。
文件存储空间管理
存储空间的划分与初始化
存储空间管理
空闲表法
空闲链表法
位示图法
成组链接法
空闲表法、空闲链表法不适用于大型文件系统,因为空闲表或空闲链表可能过大。UNIX系统中采用了成组链接法对磁盘空闲块进行管理
文件的基本操作
创建文件
删除文件
打开文件
关闭文件
读取文件
写文件
文件共享
注意:
多个用户共享同一个文件,意味着系统中只有"一份"文件数据。并且只要某个用户修改了该文件的数据,其他用户也可以看到文件数据的变化。
如果是多个用户都"复制"了同一个文件,那么系统中会有"好几份"文件数据。其中一个用户修改了自己的那份文件数据,对其他用户的文件数据并没有影响。
基于索引结点的共享方式(硬链接)
知识回顾:索引结点,是一种文件目录瘦身策略。由于检索文件时只需用到文件名,因此可以将除了文件名之外的其他信息放到索引结点中。这样目录项就只需要包含文件名、索引结点指针。
基于符号链的共享方式(软链接)
文件保护
口令保护
加密保护
访问控制
文件系统的层次结构
文件系统的全局结构
物理格式化
物理格式化,即低级格式化------划分扇区,检测坏扇区,并用备用扇区替换坏扇区
逻辑格式化
逻辑格式化后,磁盘分区(分卷 Volume),完成各分区的文件系统初始化注:逻辑格式化后,灰色部分就有实际数据了,白色部分还没有数据
文件系统在内存中的结构
注:近期访问过的目录文件会缓存在内存中,不用每次都从磁盘读入,这样可以加快目录检索速度