操作系统原理(十二)之文件系统
操作系统原理
文件系统定义
操作系统管理持久性数据的子系统,提供数据存储与访问功能
文件系统功能
- 分配磁盘空间(位置 大小 策略)
- 管理文件集合(定位 命名 组织结构)
- 保证数据可靠与安全
多层次保护数据安全;可靠:持久性存放数据文件,避免系统崩溃、媒体错误、攻击等
- 保存文件属性(名称 大小 访问时间等等,存在文件头当中metadata)
文件访问模式
特点
- 进程访问所有文件前必须先“打开”文件
- 内核跟踪所有进程打开的文件:操作系统为每一个进程维护一个打开文件的列表文件描述符是打开文件的标识
分类
- 顺序访问:按字节依次读取。大多数
- 随机访问:从中间读写。不常用
- 索引访问:依据数据特征索引。数据库基于简历索引的磁盘上访问
文件内部结构类型
- 无结构: 简单、字节序列
- 简单记录结构:分列 固定长度 可变长度
- 复杂结构:格式化文档(doc,pdf)或可执行文件
文件描述符 打开文件在它所在内存中所维护的信息
- 文件指针 最近一次的读写位置
- 文件打开次数:当前打开文件的次数
- 文件的磁盘位置:缓存数据访问位置
- 访问权限:每个进程访问模式的信息
文件的用户视图和系统视图
- 文件的用户视图 :持久的数据结构
- 系统访问接口 :字节序列的集合(UNIX)系统不关心存储在磁盘上的数据结构
- 操作系统的文件视图: 数据块的集合,数据块是逻辑存储单元,而扇区还是物理存储单元,块大小和扇区大小可能不一样
用户视图到系统视图的转换
a1:进程读文件获取字节所在的数据块→返回数据块内对应部分
a2:进程写文件(获取数据块→修改数据块中对应部分→写回数据块 )
写一定需要读,读不需要写操作
文件的访问与控制
多用户系统、 访问控制列表(ALC)
文件系统的存储结构
文件系统数据结构包括:
- 卷控制块(每个文件系统一个)
- 文件控制块(每个文件一个)
- 目录节点(每个目录项一个)
文件的数据持久存储在外存中 ,存储设备的数据块中
当需要时加载进内存
- 卷控制模块:当文件系统挂载时进入内存
- 文件控制块:当文件被访问时进入内存
- 目录节点:在遍历一个文件路径时进入内存
文件缓存
数据块缓存
- 数据块按需读入内存 ,提供read()操作
- 预读:预先读取后面的数据块
- 数据块使用后被缓存
假设数据将会再次用到,写操作可能被缓存和延迟写入
页缓存
- 虚拟页式存储 :在虚拟地址空间中虚拟页面可映射到本地外存文件中
- 文件数据块的页缓存 :在虚拟内存中文件数据块被映射成页,使得文件的读/写操作被转换成对内存的访问
问题:可能导致缺页和/或设置为脏页,页面置换算法需要协调虚拟存储和页缓存间的页面数
文件分配
类型 连续分配 链式分配 索引分配
指标 存储效率 外部碎片;读写性能 访问速度
空闲空间组织:位图
- 用位图表示空闲数据块列表
- 使用一个简单但可能会很大的一个向量表
- 其他组织方式:链表链式索引