我在看课和看书本的时候也是懵了,这傻鸟王道课程到底怎么分的,【文件目录】其实我们在《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】
  • 这里的例题:

【例题】

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐