操作系统-文件系统

在这里插入图片描述

基本概念

在这里插入图片描述

文件系统和文件

文件系统:硬盘,持久性存储的系统抽象。
文件:系统内的一个单元。

  • 文件系统功能
    在这里插入图片描述
    文件属性:名称、类型、创建者、时间。。
    文件头:存储元数据信息、文件属性、跟踪哪一块存储块、属于逻辑上文件结构的哪个偏移。

文件描述符

在这里插入图片描述
在这里插入图片描述
操作系统内部视角

  1. 块的集合(块是逻辑转换单元,而扇区是物理转换单元)
  2. 块大小、扇区大小;unix中,块大小是4KB

在这里插入图片描述
用户看到和操作系统看到不同,操作系统看到的是一个个磁盘块,用户看到的是一维的线性空间。

用户对文件的访问

  1. 顺序访问
  2. 随机访问
  3. 基于内容的访问(基于索引访问)如下图

在这里插入图片描述
文件结构
在这里插入图片描述
访问控制
在这里插入图片描述

在这里插入图片描述

目录

目录也是文件,特殊的文件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

文件别名

一个文件多个名字,存在多个系统中便于分类查找。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

文件系统类别

在这里插入图片描述
分布式文件系统
在这里插入图片描述

虚拟文件系统

存在意义:由于文件系统类型众多,便于管理。屏蔽具体文件系统差异性,给上层提供统一接口,可以提供查询、创建、读写打开关闭。
在这里插入图片描述
文件系统包括:
在这里插入图片描述
文件系统抽象图:
在这里插入图片描述
disk扇区,第一部分存储superblock,然后一层层找到vnode,最后找到具体的datablock。
在这里插入图片描述

数据块缓存

cpu缓存一些经常访问的数据,使得磁盘访问效率更高。
cpu数据缓冲

缓存方式:
在这里插入图片描述
基于分页的缓存机制
在这里插入图片描述
在这里插入图片描述

打开文件的数据结构

所谓打开,就是先查找,然后将硬盘里面存在的文件控制块的内容都到内存中,将相关信息放入打开文件表里面,设置为文件表里面一个item,再把这个项返回给应用程序。所以会有一个fd=open()。。。fd就是返回的index(记录在硬盘中的位置),接下来应用程序根据这个index进行读写。
在这里插入图片描述
在这里插入图片描述
如图:根据index找到文件。找到扇区中对应的文件后,读取到内存中来进行读写后,返回给应用程序。
在这里插入图片描述

文件分配

在这里插入图片描述

连续分配

在这里插入图片描述
扩展比较麻烦。类似数组的操作。

链式分配

数据块是链表的形式组织起来的
在这里插入图片描述
不能高效访问,从第一个开始找

索引分配

索引块指出了磁盘块的位置,放入文件头
在这里插入图片描述
索引块能表示的文件个数有限,大文件索引太多,索引块处理如下:
在这里插入图片描述
多级索引
在这里插入图片描述
1级索引 2级索引 3级索引

空闲列表

目的:快速找到空闲块位置。
在这里插入图片描述
紧凑空间代表磁盘块的空闲程度。
在这里插入图片描述
确保一致性问题:(已经分配了block,位没置1)
解决办法:先设置bit=1,在分配block。
在这里插入图片描述
链表可以快速找到空闲块的位置,而位图需要扫描。

多磁盘管理-RAID

在这里插入图片描述
在这里插入图片描述
如何管理:
在这里插入图片描述

RAID0
把数据分配在各个独立的磁盘中,访问数据可以实现并行
在这里插入图片描述

RAID1
提高可靠性,第一个和第二个硬盘完全一样。镜像作用。
在这里插入图片描述
RAID4
既能增加性能,又能提高可靠性。
在这里插入图片描述
disk1-disk4 类似raid0,把数据均匀分布到各个盘上。实现并行访问。
如果任何一块儿坏了,parity disk完成容错,通过奇偶校验反推出错误。恢复一个故障。

RAID5
奇偶校验均匀分布到每个disk,使得每个块开销是类似的。
在这里插入图片描述
校验开销均匀,且访问是并行的。综合了raid0和raid1的好处。保证了高可靠和效率。

奇偶校验单位
在这里插入图片描述
raid0 4 5 是block
raid 3 是bit 粒度太细
在这里插入图片描述
分层组织方式
在这里插入图片描述

磁盘调度

RAID:提高了磁盘访问的效率
磁盘调度:在os的层面,通过重新组织IO请求的顺序,来减少磁盘访问开销。

磁盘结构
在这里插入图片描述
旋转来寻道,磁头的前后移动来找到位置,读相应的扇区来完成读取工作。每个硬盘,有多个盘片,有正反面两个磁头来完成数据读取。
所有操作,旋转、前后移动都是机械操作。

磁盘访问效率图
在这里插入图片描述
在这里插入图片描述
磁盘IO开销:

  1. b/rN = 大致数据访问时间
  2. 寻道时间
  3. 旋转延迟时间

在这里插入图片描述
通过旋转来寻道,寻道时间是有很大差别的。

减少寻道时间方法:

  1. 先进先出
    在这里插入图片描述
    在这里插入图片描述
    如图:来回折线,总的磁头移动距离很长。简单不高效。

  2. 最短服务优先
    将来要访问的IO请求是离当前请求最短位置。
    在这里插入图片描述
    如果频繁出现在当前访问位置附近,远距离访问请求持续的饥饿。不均匀性很大。

  3. 电梯IO请求调度算法 C-SCAN
    在这里插入图片描述

  4. C-LOOP
    在这里插入图片描述
    最后一个后,直接从另一个磁道0开始访问了。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    真实情况,目前都使用SSD了,不需要软件去控制,硬盘有自己的控制器,这些原理算法只需要理解即可。将来遇到类似问题可以有思路。

总结

虚拟文件系统:屏蔽底层多种文件系统的差异性,提供给上层一个更简洁的访问接口。
数据块缓存:提高访问效率,减少IO次数,提高系统整体效率。
打开文件数据结构:打开文件后,通过FD(标号)就可以对文件进行读写。
文件分配:文件里的内容怎么去分配。不同分配方式应对顺序读、随机读、扩展、删除。
空闲空间:它的表示基于位图、链式、管理空闲空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值