图源:文心一格
考研笔记整理,纯复习向,思维导图基本就是全部内容了,不会涉及较深的知识点~~
编辑: 梅头脑
参考用书:王道考研《2024年 操作系统考研复习指导》
参考视频:4.1_1_初识文件管理_哔哩哔哩_bilibili
前言
思维导图
目录
文件管理
文件系统基础
文件逻辑结构
文件物理结构
文件存储空间管理【空闲块】
目录
文件系统
计算
混合索引分配
读页访盘次数
减少访盘次数
结语
基本概念
- 概念:文件是以硬件为载体的存储在计算机上的信息集合
- 计算机在实现资源的分配和调度时,以进程为基本单位
- 计算机在用户进行的输入、输出中,以文件为基本单位
- 组成
- 数据项:文件系统中最低级的数据组织形式
- 记录:一组相关的数据项的集合,用于描述一个对象在某方面的属性
- 文件:创建者所定义的、具有文件名的一组相关元素的集合
文件控制块【FCB】
- 信息
- 基本信息:如文件名、文件的物理位置、文件的逻辑结构、文件的物理结构
- 存取控制信息:如文件主的存取权限、核准用户的存取权限以及一般用户的存取权限
- 使用信息:如文件的创建时间、上次修改时间等
- 目录文件
- 目录项:创建文件时,系统将分配一个文件控制块【FCB】并存放在文件目录中,成为目录项
- 目录文件存放的信息:子目录文件、数据文件的目录项
图源:操作系统&文件管理之FCB_文件fcb-CSDN博客
文件索引节点【inode】
- 描述:有的系统【如UNIX】采用了文件名和文件描述信息分开的方法,使文件描述信息单独形成一个成为索引节点的结构
- 目录:在文件目录中的每个目录仅由文件名和指向该文件所对应的i节点的指针构成
- 磁盘索引节点:存放在磁盘上的索引结点,每个文件有一个唯一的磁盘索引结点
- 内存索引节点:存放在内存中的索引结点,当文件被打开时,将相应的索引节点从磁盘复制到内存中
图源:文件系统 | 文件的物理结构 - 知乎
文件的操作 | 用户接口
- 文件的基本操作:创建文件、写文件、读文件、重新定位文件、删除文件、截断文件
- 文件的打开与关闭
- 打开
- 单个文件打开:调用open根据文件名搜索目录,将指明文件的属性从外存复制到内存打开文件表的一个表目中,并将该表目的编号返回给用户
- 多个文件打开:通常采用两级表,整个系统表【包含FCB的副本和其他信息】和每个进程表【打开的所有文件,包含指向系统表中适当条目的指针】
- 关闭
- 系统打开表为每个文件关联一个打开计数器【open count】,每次关闭使count递减,计数器为0时,可从系统打开文件表删除相应条目
- 打开文件关联信息:文件指针、文件打开计数、文件磁盘位置、访问权限
文件的保护
- 口令保护【防止文件被窃取】:用户在建立一个文件时提供一个口令,系统建立FCB时附上相应口令
- 加密保护【防止文件被窃取】:用户对文件进行加密,文件被访问时需要使用秘钥
- 访问控制【对文件的访问方式】:使用精简访问控制列表【拥有者、组、其它】,根据用户类型进行控制,灵活性很高,必须由系统实现
概念:从用户观点出发看到的文件的组织形式,与存储介质特性无关
- 概念:一系列二进制或字符流组成
- 访问:穷举搜索
- 适用:基本信息单位操作不多的文件【例,txt、源程序文件】
- 顺序文件
- 概念:记录一个接一个地顺序排列,可以顺序存储或以链表形式存储
- 适用:读或写大批记录的效率较高、对于顺序存储设备【如磁带】只有顺序文件才能被存储
- 索引文件
- 定长记录文件:可按 “记录地址=首地址+记录长度x条数”
- 非定长记录文件:必须顺序查找前i-1条记录
- 特点:提高了存取速度,但配置索引表增加了存储空间
- 索引顺序文件
- 概念:为顺序文件建立一张索引表,查找记录时,通过索引表找到所在的组,然后在组内顺序查找
- 特点:提高了存取速度,但配置索引表增加了存储空间
- 查找次数
- 最理想状态:N条记录的顺序文件,记录分为组,每组 条记录
- 查找次数:近似,或严格
- 散列文件
- 概念:通过散列函数转换的键值直接决定记录的物理地址
- 特点:有很高的存取速度,但是会引起冲突,即不同关键字的散列函数值相同
图源:文件的逻辑结构_蜗牛_Chenpangzi的博客-CSDN博客
- 描述:每个文件在磁盘上占有一组连续的块
- 插入记录访问磁盘次数 = 移动块次数x2(读写访存2次) + 1(写入块访存1次)
- 优点:支持顺序访问与随机访问,实现简单、存取速度快
- 缺点:插入、删除较为复杂,且经常存取会增加外部碎片;文件不宜动态增加
- 适用:存储长度固定或者是较大的文件,例如视频文件
图源:2021-10-24 文件的物理结构-CSDN博客
- 描述:离散分配,笑出了磁盘的外部碎片,提高了磁盘的利用率
- 隐式链接
- 描述:目录项中含有文件第一块和最后一块的指针,每个文件对应一个磁盘块的链表,每个盘块含有指向下一个盘块的指针
- 插入记录访问磁盘次数 = 移动块次数x1(读访存2次) + 2(写入块并修改指针访存2次)
- 文件最大访问长度 = 地址最大长度 x 单位地址大小 = 2^(指针大小 bit) x (文件块大小 - 指针大小)
- 缺点:只适合顺序访问,不适合直接【随机】存取,稳定性很差
- 改善:将几个盘块构成簇,减少查询时间
- 显示链接
- 描述:把用于链接文件各物理块的指针,从每个物理块的末尾提取出来,显式地存放在内存的文件分配表【FAT】中
- 特点:系统启动时就会读入内存,显著提高了检索速度,减少了访问磁盘的次数
图源:4.1.4 OS之文件的物理结构。-CSDN博客
- 描述:把每个文件所有的盘块号都集中在一起构成索引块(表)
- 优点:支持直接访问,且没有外部碎片的问题
- 缺点:由于索引块的分配,增加了系统存储空间的开销
- 索引块大小
- 链接方案:为了支持大文件,可以将多个索引块连接起来
- 多层索引:通过第一级的索引块指向一组第二级的索引块,第二级索引块再指向文件块
- 混合索引:系统既采用直接地址,又采用单级索引分配或两级索引分配方式
图源:一口气搞懂「文件系统」,就靠这 25 张图了 - 知乎
- 描述:属于连续分配方式,为每个文件分配一块连续的存储空间
- 分配:首次适应算法、最佳适应算法等
图源:4.1.5 OS之文件管理空闲磁盘块的几种算法-CSDN博客
- 空闲盘块链
- 描述:将磁盘上的所有空闲空间以盘块为单位拉成一条链
- 特点:分配和回收一个盘块的过程非常简单,但是需要重复多次,效率较低
- 空闲盘区链
- 描述:将磁盘上的所有空闲盘区【每个盘区可能包含若干盘块】拉成一条链
- 特点:分配和回收的过程比较复杂,但效率通常较高,且空闲盘区链较短
图源:4.1.5 OS之文件管理空闲磁盘块的几种算法-CSDN博客
- 描述:利用二进制的一位来表示磁盘中一个盘块的使用情况【1bit 管理 1个盘块】,是最省空间的管理方法
- 备注:若题意无特殊说明,位示图法中的行和列都从1开始编号
图源:操作系统总结之磁盘管理-CSDN博客
- 描述:把顺序的n个空闲盘块号保存在第一个成组链块中,其最后一个空闲盘块则用于保存另一组空闲盘块号
图源:操作系统原理之成组链接法_成组链接法基本原理-CSDN博客
- 单用户:在用户所需要的文件名和文件之间提供一种映射,时间“按名存取”
- 多用户:允许多个用户共享一个文件
- 单级目录结构
- 描述:整个文件系统中只建立一张目录表,每个文件占一个目录项
- 特点:实现了案名存取,但存在查找速度慢、文件不允许重名、不便于文件共享等缺点,不适合多用户的操作系统
- 两级目录结构
- 描述:将文件目录分成主文件目录和用户文件目录
- 特点:提高了检索速度,解决了多用户之间的文件重名文集,但是两级目录缺乏灵活性,不能对文件分类
- 树形目录结构
- 描述:两级目录加以推广
- 特点:方便分类、层次清晰,主流操作系统采用的分配方式
- 无环图目录结构
- 描述:在树形目录结构的基础上增加了一些指向统一结点的有向边
- 特点:便于文件共享,但是系统管理变得复杂
图源:Linux树状目录结构简介
- 搜索
- 创建文件、删除文件
- 创建目录、删除目录、移动目录、显示目录、修改目录
- 线性列表 | 线性查找:实现简单,从当前目录查找,只要路径的一个分量名未找到,就停止查找;查找的结果是目录项
- 哈希表 | 散列查找:查找迅速,插入与删除简单,但需要措施避免冲突
- 基于索引结点的共享方式【硬链接】
- 前置:链接共享同一个内存索引结点,文件描述符分别指向各自的用户打开文件表的一项
- 链接:链接计数count,用于表示链接到内存索引的节点(即文件)上的用户目录项的个数
- 删除:当count=0时,表示没有用户使用该文件,才会删除该文件
- 利用符号链实现文件共享【软链接】
- 前置:系统创建一个LINK类型的新文件【记录文件路径】
- 链接:只有文件主才拥有指向其索引链接的指针
- 删除:当文件主把一个共享文件删除后,Link链接依然可以存在,但访问文件会失败
图源:linux文件系统(四)——软连接与硬连接-CSDN博客
- 用户/应用程序
- 用户接口
- 用户存取控制模块
- 逻辑文件系统与文件信息缓冲区
- 物理文件系统
- 辅助分配模块
- 设备管理模块
- 设备
图源:4.3_1_文件系统的层次结构_哔哩哔哩_bilibili
- 主引导记录MBR:位于磁盘的0号扇区,用来引导计算机
- 分区表:每个分区的起始和结束地址
- 分区
- 活动分区
- 引导块:MBR执行引导块中的程序后,该程序负责启动该分区中的操作系统
- 超级块:包含文件系统的所有关键信息,其典型信息包括分区的块的数量、块的大小、空闲块的数量和指针,空闲的FCB数量和FCB指针等
- 空闲空间管理:文件中空闲块的信息,可以使用位示图或指针链接的形式给出
- i 结点:每个文件对应1个i 结点,说明了文件的方方面面
- 根目录:存放文件系统树的根部
- 文件和目录
- 其它分区
- 备注:这个仅仅是unix系统的分区,可能会在磁盘管理也提到~
- 计组+系统02:30min导图复习 存储系统_梅头脑_的博客-CSDN博客
图源:4.3_2_文件系统的全局结构(布局)_哔哩哔哩_bilibili
- 安装表:包含每个已安装文件系统的有关信息
- 目录结构的缓存:最近访问目录的信息;对安装分区的目录,它可以包括一个指向分区表的指针
- 整个系统的打开文件表:包含打开文件的FCB副本及其他信息
- 每个进程的打开文件表:包含一个指向整个系统的打开文件表中的适当条目的指针,以及其它信息
虚拟文件系统
- 用途:为用户程序提供了文件系统的统一接口,屏蔽了不同文件系统的差异和操作细节
图源:Linux虚拟文件系统(VFS) (baidu.com)
- 最大索引表项大小 = log 磁盘地址数 bit= log (系统空间的最大容量 / 磁盘块大小) bit
- 最大索引表项数目 = 索引表区大小 / 索引表项大小
- 单个文件最大长度1【地址空间】 = (直接索引地址+一级间接地址索引x单张页表地址项数+二级间接地址索引x单张页表地址项数)x 磁盘块大小
- 单个文件最大长度2【地址标识】 = 磁盘地址数 x 磁盘块大小 = 2^(磁盘地址大小x8 bit) x 磁盘块大小
- 根目录调入内存,至少0次【假设根目录常驻内存】
- 路径的每个文件夹调入内存,每个文件至少1次【目标文件位于文件夹的第1个物理块】
- 文件存储结构
- 索引
- 目标文件控制块FCB调入内存,1次
- 文件FCB查找调入索引表地址,直接地址0次,间接地址根据索引表的存储结构不同次数不同,至少1次
- 页面调入内存,1次
- 链式:访盘次数 = 文件记录 / 单个物理块包含的记录,至少1次,即所查询物理块在文件记录首页
- 顺序:访盘次数 = 1次,按照起始地址与偏移量可直接推算
- FCB分解法描述
- 描述:分解为文件名+inode指针【UNIX系统】,减少每个目录项的大小
- 适用:但读入inode也需要一次磁盘I/O,因此每级适合目录较多的情况
- 设置“当前目录”
️博文到此结束,写得模糊或者有误之处,欢迎小伙伴留言讨论与批评,督促博主优化内容~
博文若有帮助,欢迎小伙伴动动可爱的小手默默给个赞支持一下,博主肝文的动力++~
博主可能会佛系更新思维导图,在这里:
计算机组成原理_梅头脑_的博客-CSDN博客https://blog.csdn.net/weixin_42789937/category_12434026.html?spm=1001.2014.3001.5482操作系统_梅头脑_的博客-CSDN博客https://blog.csdn.net/weixin_42789937/category_12434025.html博主也有整理数据结构学习笔记,在这里:
数据结构_梅头脑_的博客-CSDN博客https://blog.csdn.net/weixin_42789937/category_12262100.html?spm=1001.2014.3001.5482