考研408《操作系统》复习笔记,第四章《4.2.1 文件目录结构》
我在看课和看书本的时候也是懵了,这傻鸟王道课程到底怎么分的,【文件目录】其实我们在《4.1》章节已经学了,但是课后题里只有【文件目录的概念题】,没有【文件目录的结构题】,4.2突然书本又冒出来【文件目录的结构题】。。。。。。没招了
一、文件目录概念(简称“目录”)
看过我《4.1》章节笔记的,这里可以跳过,没学过的可以看一下这里,衔接一下过渡概念。
1、【目录文件】概念
当我们双击“照片”后,操作系统会从一个“目录表文件”中找到【关键字 “照片”】对应的【目录项(也就是记录)】,然后根据这个信息从外存中将“照片”目录的信息读入内存,于是“照片”目录中的内容就可以显示出来了。
而这个“目录表文件”就是【目录文件】,它本身是存磁盘上的结构化文件,记录当前路径下所有文件 / 子文件夹的元数据(名字、权限、物理块号)。永久存放于外存磁盘,在运行时从外存调入到内存方便操作系统随时查找文件时用到它
【文件控制块:FCB】
- 那么一个【目录文件】里记录了很多条【目录项】,这每一条【目录项】也叫【文件控制块:FCB】
- 再次强调FCB的多个名字:【目录项】、【文件控制块】
- 他记录的就是一个文件的各种属性,其中最重要的是【文件名】、【文件物理存放地址】
- 另外:(进程有【PCB】、文件有【FCB】,别记混了!!!)
2、【索引节点】(对FCB的改进)
- 因为在目录表查找文件时其实只用到了【文件名】,所以FCB太多冗余属性信息了。因此【索引节点】的改进结构如下:
![]()
- 【索引表】:只记录【文件名】+【该文件索引节点的位置指针】
- 【索引节点】:除了【文件名】之外的文件其他属性信息
- 另外,放在外存的索引节点叫【磁盘索引节点】;
- 放在内存后的索引节点叫【内存索引节点】,放在内存后因为文件会被改动,所以会额外添加一些内容(比如:几个进程在访问这个节点?这个节点被改写了吗?.....等,了解即可)
3、【目录文件】和【文件目录】的区别
这几个知识点可能很多人会混淆,下图直观解释了
- 【文件目录】和【目录文件】
![]()
- 文件目录 = 目录 = 文件夹
- 目录文件 = 记录这个文件夹存了哪些 [子目录] 和 [文件] 的信息
- (是【描述这些文件、文件夹的信息】,不是【它们里面的数据信息】)
- 【目录项】和【记录】
- 【记录】:是一个【普通文件】的“一行数据信息”
- 【目录项】:是【目录文件】里的“一行数据”,目录文件是特指“记录文件目录信息的文件”
抱歉这里应该一个文件目录应该对应的是【文件】而不是【文件夹】的,我截图时忽略这点,急了。。。
二、【目录结构】分类
记一下这个思维导图这几个关键字就够了
1、单级目录结构
2、双级目录结构
- 主要目的:解决【单机目录】下不允许【存在2个同名文件】问题
3、多级目录结构(树形目录)
就是我们现在的文件夹形式
- 记住按文件路径找到文件过程中,【除了该文件本身】没有目录文件,它前面的路径【每一层都有一个目录文件】
- 因此【每一层都要进行一次磁盘I/O操作】
- 最后找到【该文件目录项】后,去【外存取数据——最后1次磁盘I/O】
- 【优点】
【绝对路径】和【相对路径】
- 【绝对路径】会导致访问很多次磁盘,效率较低
- 而【相对路径】则是在已经在内存中打开的【当前目录文件】下接着往下找,会比绝对路径少访问很多次磁盘,效率较高(做开发的都有经验)
![]()
Window和Linux有不同的【根目录】表达符号(windows一般是【C:\】 ;而Linux是【/】);
window和Linux系统的【当前目录】都一样是【.】开头
4、无环图目录结构
用于【共享!!!!】:不同用户可以使用【不同的文件名】指向【同一个文件】
![]()
- 【树形目录:不适合共享】:你想一想你可以在【文件夹1】路径下打开【文件夹2里的文件】吗?
- 【无环图目录:可以共享】:注意是【有向无环图】,有指向的、但不循环成环
三、【目录】的操作
(没用知识点,可看可不看)
- 前四个你甚至可以一眼都不要看,看一秒都是浪费时间:
检索目录,可以稍微花10秒扫一眼
- 【线索检索法】:还有个名字叫【顺序检索法】,说白了就是按文件名一层一层查呗,没啥好说的
![]()
- 可以【从根目录:绝对路径】往下找;
- 也可以【从当前目录:相对路径】往下找
- 【Hash方法】:记住他还叫【散列法】,然后他就等于索引表,就完事了
![]()
- 比【顺序检索法】快!!!
【唯一重点】:其实算是前面【文件物理结构】学过的知识点
顺序的【平均查找次数】:全网最透彻,没有之一
- 1个含有【n个记录】的顺序文件,【查找一个记录的平均次数】就是【(1+n)/2】
- 然而有的题目会隐含了 “粗略的”【平均查找次数公式】,我们就不需要上面这个公式了
- 例如这题,题目规定了计算【平均查找次数的公式】=【总记录数 / 2】
- 这里的例题:
【例题】
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐




抱歉这里应该一个文件目录应该对应的是【文件】而不是【文件夹】的,我截图时忽略这点,急了。。。
































所有评论(0)