【操作系统】24王道考研笔记——第四章 文件管理

第四章 文件管理

一、文件系统基础

1.基本概念

2.文件的逻辑结构

顺序文件:

索引文件:

索引顺序文件:

效率分析:

多级索引顺序文件:

总结:

3.文件目录

文件控制块(FCB)

目录的基本操作:

目录结构:

树形目录结构可以很方便地对文件进行分类,层次结构清晰,也能够更有效地进行文件的管理和保护。但是,树形结构不便于实现文件的共享。为此,提出了"无环图目录结构"。

索引结点:

总结:

4.文件的物理结构

(文件分配方式)

文件块、磁盘块:

连续分配:

  • 优点:支持顺序访问和直接访问(即随机访问);连续分配的文件在顺序访问时速度最快
  • 缺点:不方便文件拓展;存储空间利用率低,会产生磁盘碎片

链接分配:

链接分配采取离散分配的方式,可以为文件分配离散的磁盘块。分为隐式链接和显式链接两种。

隐式分配:

隐式链接------除文件的最后一个盘块之外,每个盘块中都存有指向下一个盘块的指针。文件目录包括文件第一块的指针和最后一块的指针。

  • 优点:很方便文件拓展,不会有碎片问题,外存利用率高。
  • 缺点:只支持顺序访问,不支持随机访问,查找效率低,指向下一个盘块的指针也需要耗费少量的存储空间

显式分配:

显式链接------把用于链接文件各物理块的指针显式地存放在一张表中,即 文件分配表(FAT,FileAllocation Table)。一个磁盘只会建立一张文件分配表。开机时文件分配表放入内存,并常驻内存。

  • 优点:很方便文件拓展,不会有碎片问题,外存利用率高,并且支持随机访问。相比于隐式链接来说,地址转换时不需要访问磁盘,因此文件的访问效率更高。
  • 缺点:文件分配表的需要占用一定的存储空间。

逻辑结构与物理结构对比总结:

5.文件存储空间管理

存储空间的划分:

空闲表法:

空闲链表法:

分为空闲盘块链以及空闲盘区链

位示图法:

  • 如何分配:若文件需要K个块,①顺序扫描位示图,找到K个相邻或不相邻的"0";②根据字号、位号算出对应的盘块号,将相应盘块分配给文件;③将相应位设置为"1"。
  • 如何回收:①根据回收的盘块号计算出对应的字号、位号;②将相应二进制位设为"0"

成组链接法:

空闲表法、空闲链表法不适用于大型文件系统,因为空闲表或空闲链表可能过大。UNIX系统中采用了成组链接法对磁盘空闲块进行管理。

文件卷的目录区中专门用一个磁盘块作为"超级块",当系统启动时需要将超级块读入内存。并且要保证内存与外存中的"超级块"数据一致

如何分配?

Eg :需要1个空闲块

①检查第一个分组的块数是否足够。1<100,因此是足够的。

②分配第一个分组中的1个空闲块,并修改相应数据

总结:

6.文件的基本操作

7.文件共享

注意:多个用户共享同一个文件,意味着系统中只有"一份"文件数据。并且只要某个用户修改了该文件的数据,其他用户也可以看到文件数据的变化。

如果是多个用户都"复制"了同一个文件,那么系统中会有"好几份"文件数据。其中一个用户修改了自己的那份文件数据,对其他用户的文件数据并没有影响。

硬链接:

软链接:

总结:

8.文件保护

口令保护:

加密保护:

访问控制:

总结:

二、文件系统

1.文件系统结构

2.文件系统布局

逻辑格式化

在外存中

在内存中

用open系统打开文件的过程

3.虚拟文件系统

普通的文件系统

虚拟文件系统

特点:

  • ①向上层用户进程提供统一标准的系统调用接口,屏蔽底层具体文件系统的实现差异
  • ②VFS要求下层的文件系统必须实现某些规定的函数功能,如:open/read/write。一个新的文件系统想要在某操作系统上被使用,就必须满足该操作系统VFS的要求
  • ③每打开一个文件,VFS就在主存中新建一个 vnode,用统一的 数据结构表示文件,无论该文件存储在哪个文件系统。
  • 注意:vnode 只存在于主存中,而 inode(索引结点) 既会被调入主存,也会在外存中存储

存在的问题:

实现函数的过程:

文件系统挂载

主要参考:王道考研课程

后续会持续更新考研408部分的学习笔记,欢迎关注。

github仓库(含所有相关源码):408数据结构笔记

相关推荐
ASKED_20195 小时前
Langchain学习笔记一 -基础模块以及架构概览
笔记·学习·langchain
Lois_Luo6 小时前
Obsidian + Picgo + Aliyun OSS 实现笔记图片自动上传图床
笔记·oss·图床
(❁´◡`❁)Jimmy(❁´◡`❁)6 小时前
Exgcd 学习笔记
笔记·学习·算法
傻小胖6 小时前
21.ETH-权益证明-北大肖臻老师客堂笔记
笔记·区块链
CS创新实验室6 小时前
《计算机网络》深入学:从自治系统内部到全球互联
计算机网络·考研·智能路由器·协议·408
一只小小的芙厨9 小时前
寒假集训笔记·树上背包
c++·笔记·算法·动态规划
深蓝海拓10 小时前
PySide6从0开始学习的笔记(二十七) 日志管理
笔记·python·学习·pyqt
xqqxqxxq10 小时前
Java Thread 类核心技术笔记
java·笔记
老师用之于民10 小时前
【DAY21】Linux软件编程基础&Shell 命令、脚本及系统管理实操
linux·运维·chrome·经验分享·笔记·ubuntu
iFeng的小屋11 小时前
【2026年新版】Python根据小红书关键词爬取所有笔记数据
笔记·爬虫·python