操作系统--文件管理2
1.文件缓存和打开文件
文件缓存的种类:磁盘控制器扇区缓存
内存里面数据块缓存/内存虚拟盘/打开文件表
操作系统讨论的缓存:内存中数据块的缓存
数据块缓存按需读入内存
* 提供read操作、预先读取后面的数据块
* 数据块被使用后被缓存--后面可能用到,写操作可能延迟
数据块缓存的两种方式:数据块缓存、页面缓存-统一缓存数据块和内存页
虚拟页面对换和文件读写--数据块--文件系统
虚拟页对换和文件读写--页缓存<处理缺页>
文件系统中的打开文件的数据结构:
*文件描述符:每个打开文件都有一个文件描述符
*文件描述符内容:文件的状态信息
*每个进程具有一个打开文件表
*每个文件系统具有一个系统的打开文件表
#打开文件锁:协调多进程的文件访问
2.文件分配
*文件的大小:
大多数文件很小,需要对小文件很好的支持;块空间不能太大
对于特定大的文件的操作支持,访问的高效
*文件分配:OS系统如何分配给一个文件数据块的位置和顺序
连续分配:连续块存储
链式分配:类似于链表--无外碎片;顺链访问
索引分配:设置索引--无外碎片
*文件分配方式评价:存储效率--外部碎片等;读写性能--访问速度
*3种分配方式的具体介绍
顺序分配:文件头记录:文件起始块和文件长度--数组一样
特点:文件读取性能表现好;高效的顺序和随机访问;
缺点:碎片;文件长度的增加处理
链式分配:文件以数据块链表的方式存储;文件头包含头和尾的指针--单向链表
优点:创建、增加、删除很容易--读写基本单位块
缺点:没有很方便的随机访问,可靠性差
索引分配:为每个文件创建一个索引数据块;文件头包含一个指向文件索引的指针
特点:创建增大缩小很容易;没有碎片,支持直接访问
缺点:文件小的时候开销大;文件很大也比较麻烦
对于大文件的处理:
链式索引/多级索引分配--减小了索引表的内容
注意:在真实的系统里面通常几种分配方式都是组合起来使用的。
eg:直接索引/间距索引
3.空闲空间管理:跟踪记录文件卷中未分配的数据块
采用什么数据结构表示组织管理空闲块:
#位图:0代表空闲,1代表已经分配--10111011010
特点:使用简单但可能会是一个很大的向量
#链表:组织已经分配和未分配的数据块
#链式索引
注意:在实际的系统里面是几种方法的组合使用
4.磁盘阵列RAID--提高文件系统可靠性与读写性能的技术
通常磁盘分区是限制寻道时间--半径方向
分区:是一组柱面的集合
每个分区都视为逻辑上的独立磁盘--半径方向
文件卷与磁盘分区的联系:
*文件卷:一个用于完整文件系统的实例的外存空间;通常存储在磁盘的单个分区
eg:A分区:目录文件;B分区:目录文件;C分区:目录文件(存储在多个磁盘)
*多磁盘管理:
提高吞吐量--通过并行
可靠性和可用性--通过允余
*RAID:多种磁盘管理技术,含有多种管理方式
*RAID技术的实现:软件OS内核文件卷管理、硬件RAID硬件控制器(I/O)
*RAID技术的分类:
RAID0:磁盘条带化
把数据块分为多个子块,存储在独立的磁盘上;通过独立磁盘的并行访问
来提供较大的磁盘带宽。
RAID1:磁盘镜像--给两个中写入相同的数据,读可以从任意一个
可以提高可靠性
RAID4:带校验的磁盘条带化--提高可靠性
允许从任意一个故障磁盘中恢复
RAID5:带分布式校验的磁盘条带化