说点什么吧~
21.1 文件系统和文件
文件系统是操作系统中管理持久性数据的子系统,提供数据检索和访问功能
文件是具有符号名,由字节序列构成的数据项集合
文件系统的功能
1分配文件磁盘空间
2管理文件集合
3数据可靠和安全
文件属性
文件头:1 文件属性;2 文件存储位置和顺序
21.2 文件描述符
文件描述符是操作系统在打开文件表中维护的打开文件状态和信息
   文件指针
   文件打开计数
   文件磁盘位置
   访问权限
文件的用户视图和系统视图
文件的用户视图
    持久的数据结构
系统访问接口
    字节序列的集合
    系统不关心存储在磁盘上的数据结构
操作系统的文件视图
    数据块的集合
    数据块是逻辑存储单元, 而扇区是物理存储单元
    块大小<>扇区大小
用户视图到系统视图的转换
进程读文件(最小单位是块)
    获取字节所在的数据块
    返回数据块内对应部分
进程写文件
    获取
    修改
    返回
文件系统中的基本操作单位是数据块
例如:getc()和putc()即使每次只访问1字节的数据, 也需要
缓存目标数据4096字节
访问模式
操作系统需要了解进程如何访问文件
顺序访问:按字节依次读取
随机访问:从中间读写(不常用, 但重要,例如:虚拟内存中把内存页存储在文件)
索引访问:依据数据特征索引
文件内部结构
无结构:单词,字节序列
简单记录结构
    分列
    固定长度
    可变长度
复杂结构
    格式化的文档
    可执行文件
    ......
文件共享和访问控制
多用户系统中的文件共享是很必要的
访问控制
文件访问控制列表(ACL)
Unix模式
语义一致性
规定多进程如何同时访问共享文件
Unix文件系统(UFS)语义
回话语义
读写锁
21.3 目录,文件别名和文件系统种类
分层文件系统
    文件以目录的方式组织起来
    目录是一类特殊的文件:目录的内容是文件索引表<文件名, 指向文件的指针>
    目录和文件的树形结构
典型目录操作
操作系统只允许内核修改目录:1 确保映射的完整性; 2 应用程序通过系统调用访问目录
目录实现
    文件名的线性列表,包含了指向数据块的指针
    哈希表 - 哈希数据结构的线性表
文件别名
    硬链接:多个文件项执行一个文件
    软链接:以“快捷方式”指向其他文件
文件目录中的循环
名字解析(路径遍历)
名字解析:把逻辑名字转换成物理资源(如文件)
举例:解析"/binls"
当前工作目录
文件系统挂载
文件系统需要先挂接才能被访问
文件系统的种类
磁盘文件系统
  文件存储在数据存储设备上, 如磁盘
  例如:FAT,NTFS, ext2/3, ISO9660等
数据库文件系统
  文件特征是可被寻址的
  例如:WinFS
日志文件系统
网络/分布式文件系统
特殊文件系统
21.4 文件系统的实现
虚拟文件系统
目的:对所有不同文件系统的抽象
功能
    1 提供相同的文件和文件系统的接口
    2 管理所有文件和文件系统关联的数据结构
    3 高效查询例程, 遍历文件系统
    4 与特定文件系统模块的交互
文件系统基本数据结构
文件卷控制块
    每个文件系统一个
    文件系统详细信息
    块, 块大小, 空余块, 计数/ 指针等
文件控制块
    每个文件一个
    文件详细信息
    访问权限, 拥有者, 大小, 数据块位置等
目录项
    每个目录项一个
    将目录项数据结构及树形布局编码成树形数据结构
    指向文件控制块, 父目录, 子目录
    
文件系统的组织视图
文件系统的存储结构
文件系统的存储视图
21.5 文件缓存和打开文件
多种磁盘缓存位置
数据块缓存
    数据块按需读入内存
    数据块使用后被缓存
    两种数据块缓存方式
页缓存
虚拟页式存储系统
文件数据块的页缓存
文件系统中打开文件的数据结构
文件描述符
打开文件表
打开文件锁
一些文件系统提供文件锁, 用于协调多进程的文件访问
    强制 -    根据锁保持情况和访问确定是否 
    劝告 -    进程可以查找锁的状态来决定怎么做
21.6 文件分配
文件大小
    大多数文件都很小
    一些文件非常大
文件分配:如何表示分配给一个文件数据块的位置和顺序
分配方式
    连续分配
    链式分配
    索引分配
指标
    存储效率:外部碎片等
    读写性能:访问速度
连续分配
链式分配
索引分配
大文件的索引分配
    链式索引块
    多级索引块
UFS(Unix File System)多级索引分配
21.7 空闲空间管理和冗余磁盘阵列RAID
空闲空间组织:位图
用位图代表空闲数据块列表
使用简单但是可能会是一个大的很大向量表
160G磁盘-> 40M数据块->5M位图
 假定空闲空间在磁盘中均匀分布, 
则找到“0” 之前需要扫描n / r
n = 磁盘上数据块的总数
r = 空闲块的数目
其他空闲空间组织方式:
1 链表
2 链式索引
磁盘分区:通常磁盘通过分区来最大限度减少寻道时间
分区是一组柱面的集合
每个分区都可视为逻辑上的独立的磁盘
文件卷:一个拥有完整文件体统实例的外存空间通常常驻在磁盘的单个分区上
多磁盘管理
RAID-0:磁盘条带化
把数据块分成多个字块, 存储在独立的磁盘中
RAID-1:磁盘镜像
向两个磁盘写入, 从任何一个读取
RAID-4:带校验的磁盘条带化
RAID-5:带分布式校验的磁盘条带化
基于位和基于块的磁盘条带化
RAID-0/4/5:基于数据块
RAID-3:基于位
可纠正多个磁盘错误的冗余磁盘阵列
RAID-5: 每组条带块有一个就校验快
        允许一个磁盘错误
RAID-6: 每组条带块带有两个冗余块
        允许两个磁盘错误
RAID嵌套
说点什么吧~
欢迎来到学堂在线广场~
在这里你可以玩活动,看资讯,晒笔记。
还可以交学友、发心情、聊人生。
在学堂的每一天,就从这里开始吧!
点击 广场指南 了解更多