操作系统概念黑书复习(5)第10,11章

  • 第十章 文件系统
  • 文件系统由两个不同的部分组成:文件集合和目录结构
  • os对存储设备的物理属性加以抽象,从而定义逻辑存储单位:文件
  • 文件是记录在外存上的相关信息的命名组合,从用户角度看,文件是逻辑外存的最小分配单元,数据只有通过文件才能写到外存
  • 文件的属性通常包括:名称,标识符,类型,位置,尺寸,保护,时间日期和用户标识
  • 所有文件的信息保存在目录结构中,该目录结构也保存在外存上,通常,目录条目由文件的名称及其唯一标识符组成
  • os有一个打开文件表(open-file table)以用于维护所有打开文件的信息
  • 系统调用open()显式打开文件,根据文件名搜索目录,以将目录条目复制到打开文件表,会返回一个指针,以指向打开文件表的对应条目,这个指针会避免任何进一步搜索
  • os采用两级的内部表:每个进程表和整个系统表
  • 每个进程表所存的是进程对文件的使用信息,每个条目相应地指向整个系统的打开文件表
  • 系统表包含与进程无关的信息,如文件在磁盘上的位置,访问日期和文件大小
  • 系统打开文件表为每个文件关联一个打开计数(open count),用于表示多少进程打开了这个文件
  • 每个打开文件具有的关联信息:文件指针;文件打开计数;文件的磁盘位置;访问权限
  • 共享锁;独占锁;os可以提供强制或建议文件锁定机制
  • os可以使用扩展名来指示文件类型和用于文件的操作类型
  • 文件类型可以用于指示文件的内部结构,但让os支持多个文件结构会使os变得太复杂,所有os必须支持至少一种结构,即可执行文件的结构,以便系统能够加载和运行程序,每个应用程序必须包含自己的代码,以按照适当结构来解释输入文件
  • 内部文件结构:逻辑记录大小,物理块大小和打包技术确定了每个物理块可有多少逻辑记录,从逻辑记录到物理块的转换是个相对简单的软件问题
  • 访问方法:顺序访问(sequential access);直接访问(direct access)或相对访问(relative access),在这两种访问下:文件由固定长度的逻辑记录组成,以允许程序按任意顺序进行快速读取和写入记录,对于直接访问,文件可作为块或记录的编号序列,直接read(n);相对块号;其他访问方法通常设计创建文件索引
  • 一个磁盘可以划分为多个分区(partition),每个分区可以有单独的文件系统,分区可以限制单个文件系统的大小,包含文件系统的分区通常称为卷(volume),每个卷可以作为虚拟磁盘,也可以存储多个操作系统。包含文件系统的每个卷应该也包含有关系统内的文件信息,这些信息保存在设备目录或卷目录中,记录卷上的所有文件信息
  • 目录可视为符号表,可将文件名称转换成目录条目,支持的操作:搜索文件,创建文件,删除文件,遍历目录,重命名文件,遍历文件系统
  • 单级目录:限制:每个文件必须有唯一的名称
  • 两级目录:每个用户都有自己的用户文件目录(UFD),隔离了每个用户
  • 树形目录:目录包括一组文件或子目录,目录不过是一个文件,但是是按特殊方式处理的,绝对路径名;相对路径名
  • 无环图目录:公共子目录应该共享,对于一个共享的文件,只存在一个实际的文件;连接(link);此时文件可以有多个绝对路径名;硬链接;此时关注删除文件的一些问题;有相对简单的算法以遍历图并确定何时没有更多的文件引用
  • 通用图目录:可以有环
  • 文件系统在用于系统的进程前必须先安装(mount),os在其目录结构中记录下信息:一个文件系统已安装在给定安装点上
  • 分布式文件系统(distributed file system)DFS
  • 一致性语义:规定了一个用户的数据修改何时为另一用户可见
  • unix语义;会话语义;不可变共享文件语义
  • 可靠性通常通过文件的重复副本来提供,系统程序会自动定期把可能损坏的文件系统复制到磁带
  • 访问类型和访问控制。基于身份访问的最普遍的实现方法:为每一个文件和目录关联一个访问控制列表(access-control list)ACL,以指定每个用户的名称以及其允许的访问类型
  • 根据路径名的不同,一个用户对同一文件可能有不同的访问权限
  • 第十一章 文件系统实现
  • 磁盘可以原地重写;可以直接访问它包含信息的任何块
  • 为了提高IO效率,内存和磁盘之间的IO传输以块(block)为单位执行
  • 文件系统的两个设计问题:1. 如何定义文件系统的用户接口 2. 映射逻辑文件系统到物理外存设备
  • 文件系统由许多不同的层组成,每层设计利用更低层的功能,创建新的功能,用于更高层的服务
  • IO控制层:包括设备驱动程序和中断处理程序,以在主内存和磁盘系统之间传输信息。设备驱动程序作为翻译器,将高级命令如“检索块123”翻译成底层,硬件特定的指令
  • 基本文件系统:需要向适当设备驱动程序发送通用命令,以读取和写入磁盘的物理块
  • 文件组织模块:知道文件及其逻辑块以及物理块,可以将逻辑块地址转换成物理块地址
  • 逻辑文件系统:管理元数据信息,包括文件系统的所有结构,而不包括实际数据(文件内容),管理目录结构,通过文件控制块(file control block)fcb维护文件结构
  • 磁盘上,文件系统可能包括以下信息:每个卷的引导控制块(引导os);每个卷的卷控制块:包括卷的详细信息:如分区的块的数量,块的大小,空闲块的数量和指针,空闲的FCB数量和指针等;每个文件系统的目录结构用于组织文件;每个文件的FCB
  • 内存中的信息用于管理文件系统并用缓存来提高性能:安装表;目录结构的缓存含有最近访问目录的信息;整的系统的打开文件表;每个进程的打开文件表;当对磁盘读出或写入时,缓冲区保存文件系统的块
  • open()调用的流程:先在系统的打开文件表里找;打开文件表的条目有多种名称:文件描述符和文件句柄
  • 虚拟文件系统(VFS):将文件系统的通用操作和实现分开,可以无缝地在文件系统类型之间迁移
  • 目录实现:线性列表:列表保持排序的要求可能使文件的创建和删除复杂化;哈希表
  • 文件分配空间的分配方法:连续;链接;索引,常见情况下一个系统只对同一文件系统的所有文件采用一种方法
  • 连续分配:(可以顺序访问和直接访问)每个文件在磁盘上占有一组连续的块,具有外部碎片(使用合并来解决,不过合并需要下线停机),确定一个文件需要多少空间的内部碎片也是个问题,连续分配的修正方案:最初分配一块连续空间,当数量不够时,再添加一块连续空间(称为扩展)
  • 链接分配:没有外部碎片,但只能顺序访问,将多个块可以组成簇(减少了指针开销的占比,提高了磁盘的吞吐量(需要更少的磁头移动),但有内部碎片的问题),解决一部分指针错误或损坏问题:采用双向链表或每个块存储文件名称和相对块号;FAT(file-allocation table)文件分配表:改善了随机访问的时间
  • 索引分配:将所有指针放在一起,即索引块(index block),但只有一个或两个指针非空时,也需要分配一个索引块
  • 空闲空间管理:空闲空间列表(free-space list):可用位向量,链表,组,计数,空间图实现
  • 一致性检查程序;基于日志的面向事务,所有元数据的修改按顺序写到日志,执行一组特定的操作称为事务,修改写到日志后,可认为已经提交,系统调用可以返回到用户进程以便继续执行
  • 完全备份;增量备份
  • NFS
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>