考研408《操作系统》复习笔记,第四章(1)《文件管理概念》

应网友催稿,主包最近也是很多事很疲惫,所以笔记以最简洁形式来了,可能不适合初学者抠细节,但是复习框架是够的

一、文件系统基础概念

我直接思维导图(放大来看)

【文件基础概念术语】

  • 定义了解一下:【文件】就是一组有意义的数据/信息的【集合】
    • 一般【文件】是存储在【磁盘】的(因为是要长期保存的数据)
  • 文件的【属性(也叫"访问类型")】(只记重要的常用的):
    • 文件名:"四级学习资料.pdf" 的这个 "四级学习资料" 就是给用户辨别的文件名
      • 注:同一目录下不可有同名文件(比如不能有2个"test.txt")
    • 类型:.mp3、.txt、.java、.pdf......这些文件类型
    • 位置:特指用户看的懂的文件路径,比如"D:/data"
      • 而非物理的磁盘实际地址
    • 大小:就是这个文件的实际大小
    • 保护:就是【安全】那限制"组"、"拥有者"、"其他用户"的"写、改、读..."等权限,经常做开发的应该会接触

其中思维导图里的【文件结构】只是简单提一下其【逻辑结构】,下面第二大点会重点讲

二、文件结构

1、文件的【逻辑结构】

直接思维导图,记得放大看

(1)无结构文件

  • 又称【流式文件】,就是一串【字符流】,长度单位是【字节】,没有结构所以也没甚好探讨的

(2)有结构文件

  • 又称【记录式文件】
    • 由多个【记录】构成
      • 记录里由【数据项】构成
      • 每个记录里可以【定一个数据项】作为【关键字】
    • 而【记录】的类型又分为**【不定长 (可变长) 记录】** 和**【定长记录】**
      • 【定长记录】:每个记录的【数据线个数一样】、【对应的数据项大小一样】

        • 重点:**【定长记录】**可以【随机存储(随机查找)】!!!
          • 就像访问数组第3个元素直接访问 a[2]!!只要知道了第1个记录的起始地址 + 2个记录的大小就找到 a[2]了
      • 【不定长 (可变长) 记录】:每个记录的【数据线个数不一样】或者【对应数据项的大小不一样】

        • 重点:【不定长 (可变长) 记录】 不可以【随机存储(随机查找)】!!!

          • 你都不知道每个记录的大小规律,怎么计算第i个元素在哪

【"有结构(记录式文件)文件"】的【文件类型】

复制代码
##### 1、《顺序文件》:

* 顾名思义,就是文件一个一个按顺序排列
  * 其实就是数据结构第一章说得【逻辑结构之:线性结构】,那么回忆一下可知,线性结构有:线性表、串、数组、队列、栈
  * 而其中【逻辑结构:线性表】还对应了【物理结构:顺序存储 、链式存储】,所以按理来说,顺序文件同样也包含了"顺序存储"+"链式存储"
  * 但是考试不考【顺序文件:链式存储】,所以考试中**【顺序文件】=【逻辑、物理都是顺序存储】**!!!!!
* **然后记住【顺序文件】对应的【可变长记录】、【定长记录】的 "能否随机存取"的区别!!!!**
  * **很明显【不定长(可变长)记录】是不适合【随机存取】的,因为各个记录大小不一样,没法根据a\[0\]的地址算出第i个记录在哪**
  * **【定长记录】** 里还有**【串结构】、【顺序结构】**的 **"能否按关键字排序"的区别**!!!!![](https://i-blog.csdnimg.cn/direct/505a80391fa54ff58423425612b06f1d.png)
复制代码
##### 2、《索引文件》:

* 我直接思维导图解释,要记住的重点就是:
  * 添加【索引表】,每个【索引记录】是【变长记录】的长度、地址位置
  * 【索引表】必须是顺序、记录是定长的;【变长记录】是乱序的、记录是不定长的
  * 可以实现【快速查找 "不定长记录"】,但却额外增加了【索引表空间】![](https://i-blog.csdnimg.cn/direct/4573df27bd0e4008a832afc1b206c618.png)
复制代码
##### 3、《索引顺序文件》

* 我直接思维导图解释,要记住的重点就是:
  * 解决【索引表】空间大问题:把 "多个变长记录" 归为【一组】,索引表每个记录指向的是【一组里的 "第1个记录" 的信息】
  * 【索引表】必须是顺序、记录是定长的,但不需按关键字排序;
  * 【变长记录组与组】之间是【乱序的】;【一组里的记录】是【按顺序的】
  * 不仅减小了【索引表空间】、还提高了【查找效率】![](https://i-blog.csdnimg.cn/direct/926173db25ca4f23bbdcc6da81929463.png)![](https://i-blog.csdnimg.cn/direct/5c3e7bd0437f4c2e9fe581e423918448.png)
  • 这还多一个【多级索引表】,效率更高,原理就是"不断套娃",【高级索引表】记录【低级索引表】的表项位置、【最低级索引表】才记录【各组变长记录】

2、文件目录

【目录文件】概念(简称"目录")

当我们双击"照片"后,操作系统会在这个目录表中找到【关键字 "照片"】对应的【目录项(也就是记录)】,然后从外存中将"照片"目录的信息读入内存,于是,"照片"目录中的内容就可以显示出来了。

【文件控制块:FCB】

  • 那么一个【目录文件】里记录了很多条【目录项】,这每一条【目录项】也叫【文件目录】也叫【文件控制块:FCB】
    • (进程有【PCB】、文件有【FCB】)
    • 再次强调FCB的多个名字:【目录项】【文件目录】【文件控制块】
    • 他记录的就是一个文件的各种属性,其中最重要的是【文件名】、【文件物理存放地址】
    • FCB会涉及的一些操作(不用记,大家用电脑都有这些常识)

【目录结构分类】

记一下这个思维导图这几个关键字就够了

  • 非要研究是啥的话就看这几个图:
    • 【单级目录结构】

    • 【双级目录结构】

    • 【多级目录结构(树形目录)】:就是我们现在的文件夹形式

      • 拓展:其中,做多开发的朋友都知道Window和Linux有不同的【根目录】表达符号
      • 而【当前目录】都一样是【.】
      • 那么【绝对路径 】会导致访问很多次磁盘,效率较低 而**【相对路径】** 则是在已经在内存中打开的【当前目录文件】下接着往下找,会比绝对路径少访问很多次磁盘,效率较高(做开发的都有经验)
    • 【无环图目录结构】

'

【索引节点】(对FCB的改进)

思维导图

  • 因为在目录表查找文件时其实只用到了【文件名】,所以FCB太多冗余属性信息了
  • 因此【索引节点】的改进结构如下:
    • 【索引表】:只记录【文件名】+【该文件索引节点的位置指针】
    • 【索引节点】:除了【文件名】之外的文件其他属性信息
      • 另外,放在外存的索引节点叫【磁盘索引节点】;放在内存后的索引节点叫【内存索引节点】,放在内存后因为文件会被改动,所以会额外添加一些内容(比如:几个进程在访问这个节点?这个节点被改写了吗?.....等,了解即可)

'

【注意!!!】

【目录文件】和【文件目录】的区别

  • 这几个知识点可能很多人会混淆,下图直观解释了
    • 【文件目录】和【目录文件】
    • 【目录项】和【记录】抱歉这里应该一个文件目录应该对应的是【文件】而不是【文件夹】的,我截图时忽略这点,急了。。。

3、文件的【物理结构】

前提提示(不是知识点,只是方便加深计组的知识点):

这一块概念有点像《计算机组成原理------第3章磁盘和固态硬盘》、《计算机组成原理------第3章Cache和主存映射》的内容,像复习的可以去看看(可看可不看,非必要):

《磁盘和固态硬盘》https://blog.csdn.net/m0_73991249/article/details/149423765

《Cache和主存映射》https://blog.csdn.net/m0_73991249/article/details/149573251?spm=1001.2014.3001.5501

1、【文件块】和【磁盘块】理解

四句话:

  • 1、内存和外存(磁盘)以【块】传输
    • (【块】就是把多个存储单元分为一组,块之间存储单元都一样)
  • 2、用户操作的是【逻辑块号 + 块内地址】
    • (这里不理解需要补习计组内容,块内地址其实就是一块里的存储单元的相对地址)
  • 3、实际磁盘里用的是【物理块号 + 块内地址】
  • 4、用户的【逻辑块号 + 块内地址】对应 映射 磁盘的【物理块号 + 块内地址】

2、三种分配方式(映射方式)

【思维导图】

【①连续分配】

  • 就是要求【每个文件】在磁盘占有【一组连续块】
  • 重点
    • 文件【目录项】记录:该文件【第一个磁盘块号 】+【所占用块数
    • 映射关系:【物理块号 = 起始块号 + 逻辑块号
      • (比如图中给出【逻辑块号0】,那么对应的【物理块号**= 起始块4 + 逻辑块0 =** 4】)
    • 优点:
      • 【可以随机访问(因为连续块方便计算块位置)】
      • 【方便磁盘访问(磁盘、磁头原理)】
    • 缺点:
      • 【为了保持文件整体有序,增、删块要整体迁移,不方便】
      • 【不灵活,只要连续空间,那就会产生很多外部碎片】

【②链式分配】

  • 就是文件在【物理上】是【离散分散存放的】
【隐式链接】
  • 重点
    • 文件【目录项】:记录文件的**【起始块号】+【结束块号】**
      • (因为每个盘块都有指向下一个盘块的指针,所以中间信息不用记)
    • 缺点:(就是链表的特点)
      • 不能随机存取,只能顺序访问!!!
      • 其中一个盘块有问题,整个文件完蛋
      • 指针也占空间
    • 优点:插入删除方便 (链表特点,改链尾节点的指针指向即可)
【显式链接】
  • 重点:
    • 就是在隐式链接基础上加了个【FAT(File Allocation Table)文件分配表
    • 文件【目录】项:只有**【起始块号】** !!!!
      • 然后每个盘块的下一块的指针由【FAT表】来记录!!!!
      • 注意:【FAT表】之有一张,一开机就读入【内存】,所以显式链接查找文件时无需访问磁盘!!!!
    • 优点:
      • 可以随机存取!!!(FAT表帮忙直接找到)
      • 比【隐式】快得多(因为不访问磁盘)

【③索引分配】

未完待续。。。。。

4、【逻辑结构】和【物理结构】区分

未完待续。。。。。

三、文件的操作

未完待续。。。。。

例题

未完待续。。。。。

相关推荐
。。。9042 小时前
mit6s081 lab8 locks
操作系统·c
sealaugh325 小时前
AI(学习笔记第十二课) 使用langsmith的agents
人工智能·笔记·学习
QZ_orz_freedom5 小时前
学习笔记--事务管理
笔记·学习
程序员大雄学编程6 小时前
「机器学习笔记14」集成学习全面解析:从Bagging到Boosting的Python实战指南
笔记·机器学习·集成学习
im_AMBER6 小时前
Web 开发 30
前端·笔记·后端·学习·web
试试勇气6 小时前
Linux学习笔记(八)--环境变量与进程地址空间
linux·笔记·学习
蒙奇D索大7 小时前
【数据结构】考研数据结构核心考点:平衡二叉树(AVL树)详解——平衡因子与4大旋转操作入门指南
数据结构·笔记·学习·考研·改行学it
郭庆汝7 小时前
自然语言处理笔记
笔记·自然语言处理·easyui
二进制怪兽7 小时前
[笔记] 驱动开发:Virtual-Display-Driver编译过程
笔记
ouliten8 小时前
cuda编程笔记(28)-- cudaMemcpyPeer 与 P2P 访问机制
笔记·cuda