操作系统(thuOS)笔记(十四) 第二十一讲 文件系统

21.1 文件系统和文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
文件系统的功能
p.s.在空闲空间里不需要顺序
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
文件的属性
在这里插入图片描述
在这里插入图片描述

21.2 文件描述符

打开的文件,在内存当中所维护的相关信息
在这里插入图片描述
内核会跟踪进程打开的所有文件。不给每个文件搞一个表示是因为,打开的文件相比于所有文件,是有数量级的差距的。
在这里插入图片描述
文件描述符
文件指针,最后一次读写的位置
在这里插入图片描述
记录打开次数,最后一个进程关闭文件时,将其移除
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
文件的用户视图和系统视图
在这里插入图片描述
在这里插入图片描述
用户视图到系统视图的转换
在这里插入图片描述
在这里插入图片描述
读写是以块为单位,即使要读的只有很小的一部分数据,也需要把一整块读进来
在这里插入图片描述
访问模式
可以认为操作系统的文件系统是一个小型的数据库
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
索引文件示例
在这里插入图片描述
文件内部结构
在这里插入图片描述
在这里插入图片描述
文件的共享和访问控制
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
语义一致性
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

21.3 目录、文件别名和文件系统种类

文件分层系统
在这里插入图片描述
目录和文件呈树形结构
在这里插入图片描述
目录操作
在这里插入图片描述
用户想要修改目录,就要通过系统调用来实现
在这里插入图片描述
目录实现
在这里插入图片描述
利用哈希,可以减少搜索的时间。存在的问题是,两个文件名哈希的结果可能是一样的。
在这里插入图片描述
文件别名
在这里插入图片描述
快捷方式就存了个完整的路径。硬链接的问题是,删到最后一个文件才能把这个文件删除掉,而软连接删除文件后其他快捷方式就不存在了
在这里插入图片描述
文件中的目录循环
在这里插入图片描述
如何避免文件循环?
在这里插入图片描述
检测方法和死锁检测差不多,但是开销会比较大
在这里插入图片描述
太长不检索
在这里插入图片描述
名字解析
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当前工作目录
每一个进程有一个缺省的根目录,它的文件解析就从这个目录开始解析。这样的好处就是,不用每次都从根目录往下找了。(好像MATLAB的读取方式啊)
在这里插入图片描述
在这里插入图片描述
文件系统挂载
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
文件系统的种类
不同的文件系统,由于存的数据不同,会做不同的优化,它使用场景的不同,也会做不同的优化。比如光盘,它是一次性写入多次读出,而正常的文件系统是多次读写
在这里插入图片描述
数据库文件系统,
在这里插入图片描述
日志文件系统
对文件系统的修改必须以原子的形式来进行,因为数据很关键,比如说银行里的记录的修改,对所有的操作都有记录,以避免文件系统损坏导致的数据丢失
在这里插入图片描述
通过网络储存到远端的计算机
在这里插入图片描述
NFS、CIFS
在这里插入图片描述
对于分布式文件系统,有个麻烦,在本地只需要标识这个用户是谁,而在网络上识别一个用户是复杂的。因此NFS是不安全的
在这里插入图片描述

前面说的管道就是一类特殊的文件系统
在这里插入图片描述

21.4 虚拟文件系统

在这里插入图片描述
虚拟文件系统(VFS)
在这里插入图片描述
文件系统的基本数据结构
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
文件系统的组织视图
由文件卷控制块vol,到每一个目录项,目录项组织成一个树状结构,再往下是每一个文件的文件控制块,文件控制块知道实际文件中的数据块

在这里插入图片描述
文件系统的存储结构
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

21.5 文件缓存和打开文件

多种磁盘缓存位置
在这里插入图片描述

数据块缓存
在这里插入图片描述
在这里插入图片描述

文件系统中打开文件的数据结构
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
打开文件锁
在这里插入图片描述

21.6 文件分配

文件大小
大多数文件都很小,块空间如果太大,存储效率会比较低。文件小时相对的,随时间和应用的变化而不同。
在这里插入图片描述
描述数据块数量,确定一个能存放的最大的文件大小
在这里插入图片描述
文件分配
如何表示分配给一个文件数据块的位置和顺序
在这里插入图片描述
在这里插入图片描述
连续分配,分配一个起点,然后用连续的数据块来存文件
链式分配,告诉你第一块一直到最后一块的位置
专门有个地方存索引,根据索引找到位置

在这里插入图片描述
连续算法有外部碎片问题,链式分配需要遍历列表读写性能较差

连续分配:

在这里插入图片描述
分配策略 最先匹配、最佳匹配
在这里插入图片描述
在这里插入图片描述
长度增加时,后面块被其他文件占用了,这时比较棘手

链式分配:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

缺点也很明显,有一个链损坏了,后面的就都找不到了,并且要找到某一块只能按顺序一块一块地找过去
在这里插入图片描述
索引分配:
文件头里有索引块,索引块里有每一个块的位置
在这里插入图片描述
缺点是文件很小时,一块数据块就够了,但是还要创建一个索引块,存储开销比较大;如果不支持增加多个索引块,那么对于大个的数据块,就不好新分配空间了
在这里插入图片描述
在这里插入图片描述
UFS(Unix File System)多级索引分配
在一个文件数据块里,前面10个是直接索引,如果存的比较少,就索引直接到文件对应的数据块
在这里插入图片描述
如果不够,第十一个指针指向一级间接索引,这里有N个数据块
在这里插入图片描述
还不够,就采用二级间接索引
在这里插入图片描述
还不够,继续加
在这里插入图片描述
总计
在这里插入图片描述
在这里插入图片描述

21.7 空闲空间管理和冗余磁盘阵列RAID

空闲空间管理

在这里插入图片描述
位图:
在这里插入图片描述
在这里插入图片描述
链表:
在这里插入图片描述

冗余磁盘阵列RAID

在A、B两个分区上切换时,性能是很差的
在这里插入图片描述
一个典型的磁盘文件系统组织
在这里插入图片描述
在这里插入图片描述
多磁盘管理
在这里插入图片描述
在这里插入图片描述
RAID-0:磁盘条带化
在这里插入图片描述
读写速度变为之前的三倍,但是对于小数据来说,并不需要一次读三个
在这里插入图片描述
RAID-1:磁盘镜像

在这里插入图片描述
提高了可靠性
在这里插入图片描述
在这里插入图片描述
RAID-4:带校验的磁盘条带化
在这里插入图片描述
任何一个有错,都能从最后一个校验磁盘把正确的数据恢复出来
在这里插入图片描述
RAID-5:带分布式校验的磁盘条带化
在这里插入图片描述
和RAID-4相比,是把校验和的存放位置做了一个分布,不是把校验和固定地存放在某个磁盘上,这种做法可以把校验磁盘的访问瓶颈分摊开,提高性能
在这里插入图片描述
基于位和基于块的磁盘条带化
在这里插入图片描述
在这里插入图片描述
RAID0+1条带化+磁盘镜像
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值