考研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、【逻辑结构】和【物理结构】区分

未完待续。。。。。

三、文件的操作

未完待续。。。。。

例题

未完待续。。。。。

相关推荐
njxiejing7 小时前
考研408计算机网络第47题(2024年)
计算机网络·考研
Olrookie5 天前
ruoyi-vue(十五)——布局设置,导航栏,侧边栏,顶部栏
前端·vue.js·笔记
使一颗心免于哀伤6 天前
《设计模式之禅》笔记摘录 - 21.状态模式
笔记·设计模式
Thexhy3237 天前
Linux学习,CentOS虚拟机网络存在问题,主网络接口 ens33没有分配到 IP 地址,按照这个流程,99% 的虚拟机无网络访问问题都能得到解决。请从第一
操作系统
CYRUS_STUDIO8 天前
Android 反调试攻防实战:多重检测手段解析与内核级绕过方案
android·操作系统·逆向
_落纸8 天前
三大基础无源电子元件——电阻(R)、电感(L)、电容(C)
笔记
Alice-YUE8 天前
【CSS学习笔记3】css特性
前端·css·笔记·html
2303_Alpha8 天前
SpringBoot
笔记·学习
Hello_Embed9 天前
STM32HAL 快速入门(二十):UART 中断改进 —— 环形缓冲区解决数据丢失
笔记·stm32·单片机·学习·嵌入式软件