目录
- 一、文件系统基础
-
- (一)基本概念
- (二)文件的逻辑结构
- (三)⭐文件目录⭐
- (四)文件的物理结构
-
- (五)文件存储空间管理
-
- 空闲表法
- 空闲链表法
- ⭐位示图法⭐
- ⭐成组链接法⭐
- 小节回顾
- (六)文件共享
- (七)文件保护
- 二、文件系统
-
- (一)文件系统的层次结构(408不考)
- (二)文件系统的全局结构(新考点)
- (三)虚拟文件系统&文件系统挂载(新考点)
一、文件系统基础
(一)基本概念
- 文件的属性
文件名:由用户决定,同一目录下不允许有重名文件。
标识符:一个系统内的各文件标识符唯一,用于区分各个文件。
类型:指明文件的类型
位置:文件的存放路径(文件可见)、在外存中的地址(操作系统可见,用户不可见)
大小:指明文件大小
保护信息:对文件进行保护的访问控制信息
创建时间、上次修改时间、文件所有者信息
- 文件的逻辑结构
有结构文件(记录式文件)、无结构文件(流式文件)
![操作系统知识点总结——第四章文件管理_第1张图片](http://img.e-com-net.com/image/info8/f7bdf283ff4b4b72b082de4f2a48e19d.jpg)
- 文件的基本操作
创建文件:create系统调用
读文件:read系统调用
写文件:write系统调用
删除文件:delete系统调用
![操作系统知识点总结——第四章文件管理_第2张图片](http://img.e-com-net.com/image/info8/e3eb388fec4c4f3a846c81a581e4d6ac.jpg)
多个基本功能组合就能完成复制等复杂的功能。
- 文件的物理结构
操作系统以块为单位为为文件分配存储空间。当文件大时文件连续或者离散占用多个磁盘块。
![操作系统知识点总结——第四章文件管理_第3张图片](http://img.e-com-net.com/image/info8/0dcbfa37c17c4369af71a9f0f9e46e66.jpg)
- 其他需要实现的功能
文件共享:使多个用户可以共享使用一个文件
文件保护:如何保证不同的用户对文件有不同的操作权限
小节回顾
![操作系统知识点总结——第四章文件管理_第4张图片](http://img.e-com-net.com/image/info8/38bd77ff18c348f9944ec4021e8ac192.jpg)
(二)文件的逻辑结构
指用户看来文件内部的数据应该使如何组织起来的。
无结构文件:文件内部的数据就是一系列二进制流或字符流组成。又称“流式文件”。如txt文件。
有结构文件:由一组相似的记录组成,又称“记录式文件”。每条记录又若干个数据项组成。如:数据库表文件。一般来说,每条记录有一个数据项可作为关键字。根据各条记录的长度(占用的存储空间)是否相等,又可分为定长记录和可变长记录两种。
有结构文件
- 顺序文件
文件中的记录一个接一个地顺序排序(逻辑上),记录可以是定长的或可变长的。各个记录在物理上可以顺序存储或链式存储。
![操作系统知识点总结——第四章文件管理_第5张图片](http://img.e-com-net.com/image/info8/8671458a19c447f485aca4dc49554508.jpg)
⭐一般来说,考题中所说的“顺序文件”指的是物理上顺序存储的顺序文件⭐。
⭐顺序文件的缺点使增加/删除一个记录比较困难⭐。
- 索引文件
每个文件建立索引表,以加快文件检索速度。每条记录对应一个索引项。
索引表本身使定长记录的顺序文件。
![操作系统知识点总结——第四章文件管理_第6张图片](http://img.e-com-net.com/image/info8/1f6f04acbea949fc9a30538dac3dc6ed.jpg)
- 索引顺序文件
就是套娃
索引顺序文件是索引文件和顺序文件思想的结合。索引顺序文件中,同样会为文件建立一张索引表,但不同的是:并不是每个记录对应一个索引表项,而是一组记录对应一个索引表项。
![操作系统知识点总结——第四章文件管理_第7张图片](http://img.e-com-net.com/image/info8/79ba49664f2d4a40b57a6e52bfac01d6.jpg)
小节回顾
![操作系统知识点总结——第四章文件管理_第8张图片](http://img.e-com-net.com/image/info8/3709459c119846f6b36575b2cb3198d4.jpg)
(三)⭐文件目录⭐
文件控制块
FCB的有序集合称为“文件目录”,一个FCB就是一个文件目录项。
FCB中包含了文件的基本信息,最重要最基本的是文件名、文件存放的物理地址。
目录结构
- 单级目录结构
早期操作系统并不支持多级目录,整个系统中之间里一张目录表,每个文件占一个目录项。
![操作系统知识点总结——第四章文件管理_第9张图片](http://img.e-com-net.com/image/info8/1347eb22a0dc42f4bbdac6b634e4834a.jpg)
单级目录结构实现了“按名存取”,但是不允许文件重名,单级目录结构不适用于多用户操作系统。
- 两级目录结构
早期的多用户操作系统,采用两级目录结构。分为主文件目录和用户文件目录
![操作系统知识点总结——第四章文件管理_第10张图片](http://img.e-com-net.com/image/info8/4a8648d0069d41ce8822eb5e88ea110b.jpg)
允许不同用户的文件重名,但是缺乏灵活性,用户不能对自己的文件进行分类,就是不能创建文件夹。
- 多级目录结构(树形目录结构)
![操作系统知识点总结——第四章文件管理_第11张图片](http://img.e-com-net.com/image/info8/b1dbfb0b33bb40bcbd52d763b5b9ce5e.jpg)
用户(或用户进程)要访问某个文件时要用文件路径标识文件,文件路径名是各字符串。各级目录之间用“/”隔开。从根目录出发的路径称为绝对路径。
树形目录结构可以很方便地对文件进行分类,层次结构清晰,也能够更有效地进行文件的管理和保护但是,树形结构不便于实现文件的共享。
- 无环图目录结构
可以用不同的文件名指向同一个文件,甚至可以指向同一个目录(共享同一目录下的所有内容)
![操作系统知识点总结——第四章文件管理_第12张图片](http://img.e-com-net.com/image/info8/cc324ba5d7ab4cdaa9dd8265621fa218.jpg)
需要为每个共享结点设置一个共享计数器,用于记录此时有多少个地方在共享该结点。用户提出删除结点的请求时,只是删除该用户的FCB、并使共享计数器减1,并不会直接删除共享结点。只有共享计数器减为0时,才删除结点。
⭐注意⭐:共享文件不同于复制文件。在共享文件中,由于各用户指向的是同一个文件,因此只要其中一个用户修改了文件数据,那么所有用户都可以看到文件数据的变化。
索引节点
![操作系统知识点总结——第四章文件管理_第13张图片](http://img.e-com-net.com/image/info8/9d899b6977c14e4e97d1ef50fc1ebcad.jpg)
当找到文件名对应的目录项时,才需要将索引结点调入内存,索引结点中记录了文件的各种信息,包括文件在外存中的存放位置,根据“存放位置”即可找到文件。
存放在外存中的索引结点称为“磁盘索引结点”,当索引结点放入内存后称为“内存索引结点”。
相比之下内存索引结点中需要增加一些信息,比如:文件是否被修改、此时有几个进程正在改问该文件等。
小节回顾
![操作系统知识点总结——第四章文件管理_第14张图片](http://img.e-com-net.com/image/info8/3fd7ad6702b7412aa89a6e2ef7f352ad.jpg)
(四)文件的物理结构
磁盘中存储单元也会被分为一个个“磁盘块”,而磁盘块会分成与内存页面大小相等的页面。
在外存管理中,为了方便对文件数据管理,文件的逻辑地址空间也被分为了一个一个的文件“块”。
文件的逻辑地址可以表示为(逻辑块号,块内地址)的形式。
连续分配
要求每个文件在磁盘上占有一组连续的块。
![操作系统知识点总结——第四章文件管理_第15张图片](http://img.e-com-net.com/image/info8/c1c80047ff8b47e2aa05cff4ab3fc293.jpg)
目录表中应当由**“起始块号”与“长度”字段。用户给出要访问的逻辑块号,则物理块号=起始块号+逻辑块号**。
![操作系统知识点总结——第四章文件管理_第16张图片](http://img.e-com-net.com/image/info8/5cbd40fd8f854accbf113d14a86c0acb.jpg)
优点:
1、连续分配方式支持随机访问和顺序访问。
2、连续分配的文件在读写时速度最快。
缺点:
1、物理上采用连续分配的文件拓展不方便
2、物理上采用连续分配,存储空间利用率低,会产生难以利用的磁盘碎片。可以采用紧凑方式处理磁盘碎片。
链接分配
⭐若题目中未指明是什么链接,则一律以隐式链接为准。⭐
1、隐式链接
![操作系统知识点总结——第四章文件管理_第17张图片](http://img.e-com-net.com/image/info8/fa94030d9c0f4c56acba0ac8155493d9.jpg)
缺点:只支持顺序访问,不支持随机访问,查找效率低。
优点:很方便文件拓展,不会有碎片问题,外存利用率高
2、显示链接
用于链接文件各物理块的指针显式地存放在一张表中。即文件分配表FAT。
![操作系统知识点总结——第四章文件管理_第18张图片](http://img.e-com-net.com/image/info8/b1140573c3a748b28c1494172174648e.jpg)
注:一个磁盘仅设置一张FAT。开机时,将FAT读入内存,并常驻内存。FAT各个表项在物理上连续存储,每个表项长度相同,所以物理块号可以隐含。
优点:很方便文件拓展,不会有碎片问题,外存利用率高,并且支持随机访问。相比于隐式链接来说,地址转换时不需要访问磁盘,因此文件的访问效率更高。
缺点:文件分配表的需要占用一定的存储空间。
⭐索引分配⭐
索引分配允许文件离散地分配在各个磁盘块中,系统会为每个文件建立一张索引表,索引表中记录了文件的各个逻辑块对应的物理块(索引表的功能类似于内存管理中的页表――建立逻辑页面到物理页之间的映射关系)。索引表存放的磁盘块称为索引块。文件数据存放的磁盘块称为数据块。
![操作系统知识点总结——第四章文件管理_第19张图片](http://img.e-com-net.com/image/info8/0c68e31de6904196ad011d9faee4f4f1.jpg)
- 链接方案:如果索引表太大,一个索引块装不下,那么可以将多个索引块链接起来存放。
- 多层索引:建立多层索引(原理类似于多级页表)。使第一层索引块指向第二层索引块。这可根据文件大小的要求再建立第三层、第四层索引块。
⭐若采用多层索引,则各层索引表大小不能超过一个磁盘块⭐。
- ⭐混合索引⭐:多种索引分配方式的结合。例如,一个文件的顶级索引表中,既包含直接地址索引(直接指向数据块),又包含一级间接索引(指向单层索引表)、还包含两级间接索引(指向两层索引表)
![操作系统知识点总结——第四章文件管理_第20张图片](http://img.e-com-net.com/image/info8/51e12d1e52ed4734b2cf280112cfa4bf.jpg)
优点:对于小文件来说,访问一个数据块所需的读磁盘次数更少。
⭐⭐超级超级超级重要考点⭐⭐
①要会根据多层索引、混合索引的结构计算出文件的最大长度(Key:各级索引表最大不能超过一个块)
②要能自己分析访问某个数据块所需要的读磁盘次数(Key:FCB中会存有指向顶级索引块的指针,因此可以根据FCB读入顶级索引块。每次读入下一级的索引块都需要一次读磁盘操作。另外,要注意题目条件——顶级索引块是否已调入内存)
小节回顾
![操作系统知识点总结——第四章文件管理_第21张图片](http://img.e-com-net.com/image/info8/9f966e1392484a4a8750cf55c5367bf6.jpg)
(五)文件存储空间管理
存储空间的划分与初始化
![操作系统知识点总结——第四章文件管理_第22张图片](http://img.e-com-net.com/image/info8/a6dc5b594feb4c2ba19cf370b3ec4f7c.jpg)
空闲表法
记录每一个空闲区间的起始块号和区间大小(空闲盘块数)
![操作系统知识点总结——第四章文件管理_第23张图片](http://img.e-com-net.com/image/info8/597637f3602b424da7515ebdd464f351.jpg)
与内存管理中的动态分区分配类似,可以采用首次适应、最佳适应、最坏适应等算法来决定要为文件分配哪个区间。
在回收时也与内存管理类似,进行表项的合并。
空闲链表法
空闲盘块链:以单个空闲块为单位
空闲盘区链:以连续的空闲盘区为单位。
![操作系统知识点总结——第四章文件管理_第24张图片](http://img.e-com-net.com/image/info8/17cf41329720448eb92e0997540b0af8.jpg)
空闲盘块链
![操作系统知识点总结——第四章文件管理_第25张图片](http://img.e-com-net.com/image/info8/223a18ebc9e84a4d913e7af1d75f72aa.jpg)
空闲盘区链
![操作系统知识点总结——第四章文件管理_第26张图片](http://img.e-com-net.com/image/info8/6a6afa2b7e7c4273ac3c7834d81c9cd7.jpg)
⭐位示图法⭐
连续分配与离散分配都适用。
![操作系统知识点总结——第四章文件管理_第27张图片](http://img.e-com-net.com/image/info8/7626307def19449b9aa9f9e810deb4ad.jpg)
⭐⭐重要:要能自己推出盘块号与(字号,位号)相互转换的公式⭐⭐。
⭐成组链接法⭐
![操作系统知识点总结——第四章文件管理_第28张图片](http://img.e-com-net.com/image/info8/09899db31d7246308e9496bace0d54c8.jpg)
第一个为超级块,标明了下一组空闲盘块数和空闲块号。当第一个盘块号为-1时标明已经没有分组了,下一组无分组。
回收与分配都要讲超级块当成链头来看待,进行回收与分配。
小节回顾
![操作系统知识点总结——第四章文件管理_第29张图片](http://img.e-com-net.com/image/info8/dc6629701f8a453fb96105b8e056121e.jpg)
(六)文件共享
操作系统为用户提供文件共享功能,可以让多个用户共享地使用同一个文件。(系统中只有一份数据,一个用户修改其他用户也看得到修改)
- 基于索引节点的共享方式(硬链接)
让不同用户的目录项指向同一个索引节点。
删除一个文件只是删除了对应用户的目录项,并且索引节点-1。当索引节点数量等于0时文件才进行删除。
![操作系统知识点总结——第四章文件管理_第30张图片](http://img.e-com-net.com/image/info8/15973d3207db434faf677cc476a1d845.jpg)
- 基于符号链的共享方式(软链接)
![操作系统知识点总结——第四章文件管理_第31张图片](http://img.e-com-net.com/image/info8/6e859022175049739df5c29a1ad7d41a.jpg)
linux系统的.lnk文件
小节回顾
![操作系统知识点总结——第四章文件管理_第32张图片](http://img.e-com-net.com/image/info8/d3013d57e0ca4049bb285970ea734fbd.jpg)
(七)文件保护
保护文件数据的安全
- 口令保护
为文件设置口令,当用户请求访问该文件的时候必须给出相应口令,操作系统会根据输入口令和FCB中的口令进行比较,相同才可以访问。
优点:保存口令的空间开销不多,验证口令的时间开销也很小
缺点:正确的“口令”存放在系统内部,不够安全。
- 加密保护
使用某个密码对文件进行加密,访问文件时需要提供正确的密码才能进行正确的访问。
优点:保密性强,不需要在系统中存储“密码”
缺点:编码/译码,或者说加密/解密要花费一定时间。
- 访问控制
在每个文件的FCB中增加一个访问控制列表,该表中记录了各个用户可以对该文件执行哪些操作。
![操作系统知识点总结——第四章文件管理_第33张图片](http://img.e-com-net.com/image/info8/a2cb4f2150994a25b0356763a1e73d22.jpg)
精简访问列表,就是windows的用户组方式,将用户分别放入各个组中,然后通过组来进行分配访问权限,文件这一个章节要是自己尝试写一个文件管理系统,会理解的很快。
小节回顾
![操作系统知识点总结——第四章文件管理_第34张图片](http://img.e-com-net.com/image/info8/29ec1cac43294912adb361c569a0876e.jpg)
二、文件系统
(一)文件系统的层次结构(408不考)
![操作系统知识点总结——第四章文件管理_第35张图片](http://img.e-com-net.com/image/info8/1ff250ca9f914919aa32a4e6f3a1ad65.jpg)
(二)文件系统的全局结构(新考点)
磁盘分区
- 磁盘刚出场还没有分区。
- 首先先进性物理格式化。
物理格式化,即低级格式化——划分扇区,检测坏扇区,并用备用扇区替换坏扇区。
- 进行逻辑格式化
逻辑格式化后,磁盘分区(分卷),完成各分区的文件系统初始化。
![操作系统知识点总结——第四章文件管理_第36张图片](http://img.e-com-net.com/image/info8/abc76c6b43f647d4a82b268c0ae76fb9.jpg)
open系统调用打开文件
![操作系统知识点总结——第四章文件管理_第37张图片](http://img.e-com-net.com/image/info8/92ebc1ee8df74ebe941783c619007160.jpg)
近期访问过的目录项都会放入目录缓存中。
(三)虚拟文件系统&文件系统挂载(新考点)
虚拟文件系统
![操作系统知识点总结——第四章文件管理_第38张图片](http://img.e-com-net.com/image/info8/567b98935f364576a777c09f90fc4a64.jpg)
①向上层用户进程提供统一标准的系统调用接口,屏蔽底层具体文件系统的实现差异
②VFS要求下层的文件系统必须实现某些规定的函数功能,如:open/read/write。一个新的文件系统想要在某操作系统上被使用,就必须满足该操作系统VFS的要求
③每打开一个文件,VFS就在主存中新建一个vnode,用统一的数据结构表示文件,无论该文件存储在哪个文件系统。
文件系统挂载
即文件系统安装/装载——如何将一个系统挂载到操作系统中。
①在VFS中注册新挂载的文件系统。内存中的挂载表( mount table)包含每个文件系统的相关信息,包括文件系统类型、容量大小等。
②新挂载的文件系统,要向VFS提供一个函数地址列表
③将新文件系统加到挂载点(mount point) ,也就是将新文件系统挂载在某个父目录下
由于我的书是王道2022,跟这2023的有偏差,所以这里会有一些缺。但也问题不大。