操作系统概念中文版-chapter_第1页
操作系统概念中文版-chapter_第2页
操作系统概念中文版-chapter_第3页
操作系统概念中文版-chapter_第4页
操作系统概念中文版-chapter_第5页
免费预览已结束,剩余29页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

操作系统概念第十二章:文件系统实现2本章主要内容文件系统结构文件系统实现目录实现分配方法空闲空间管理恢复312.1文件系统结构磁盘提供大量的外存空间来维持文件系统,磁盘的两个特点,使其成为存储多个文件的方便媒介可以原地重写;可以从磁盘上读一块,修改该块,并将它写回到原来的位置可以直接访问磁盘上的任意一块信息。(随机或顺序方式)为了提供对磁盘的高效且便捷的访问,操作系统通过文件系统来轻松地存储、定位、提取数据。文件系统的两个设计问题如何定义文件系统对用户的接口创建数据结构和算法来将逻辑文件系统映射到物理外存设备上文件系统按层来组织(见下页)4分层设计的文件系统I/O控制由设备驱动程序和中断处理程序组成,实现内存与磁盘之间的信息转移基本文件系统向合适的设备驱动程序发送一般命令就可对磁盘上的物理块进行读写文件组织模块知道文件及其逻辑块和物理块。空闲空间管理器逻辑文件系统管理元数据:文件系统的所有结构数据,而不包括实际数据(或文件内容)根据给定符号文件名来管理目录结构逻辑文件系统通过文件控制块(FCB)来维护文件结构512.2文件系统实现本节深入分析用于实现文件系统的结构和操作6磁盘结构在磁盘上,文件系统可能包括如下信息:如何启动所存储的操作系统总的块数空闲块的数目和位置目录结构以及各个具体文件等磁盘结构包括引导控制块(bootcontrolblock):通常为分区的第一块。如果该分区没有OS,则为空。(其他名称:引导块(Linux)、分区引导扇区(WindowsNT))分区控制块(partitioncontrolblock):包括分区详细信息,如分区的块数、块的大小、空闲块的数量和指针、空闲FCB的数量和指针等(亦称为超级块(Linux)、主控文件表(WindowsNT))目录结构:用来组织文件文件控制块(FCB):包括很多文件信息,如文件许可、拥有者、大小和数据块的位置等7一个典型的文件控制块文件权限文件日期(创建、访问、写)文件所有者,组,ACL(AccessControlLevel)文件大小文件数据块8内存中的结构内存分区表:包含所有安装分区的信息内存目录结构:保存近来访问过的目录信息(对安装分区的目录,可以包括一个指向分区表的指针)系统范围的打开文件表:包括每个打开文件的FCB拷贝和其他信息单个进程的打开文件表:包括一个指向系统范围内已打开文件表中合适条目和其他信息的指针文件描述符(filedescriptor,Linux/UNIX)文件句柄(filehandle,Windows)9内存中的文件系统结构10分区与安装分区可以是“生的”(raw),即没有文件系统,或是“熟的”(cooked)即含有文件系统。生的分区用于没有合适文件系统的地方。如:Unix中的交换区引导信息能存在各个分区中,并且有自己的格式。它通常为一组有序块,作为二进制文件读入内存。引导信息除了包括如何启动一个特定操作系统外,还可以有其他指令。(如BootManagerbootstar8.3,LinuxGRUB,GRUB-GRandUnifiedBootloader)根分区(rootpartition)包括操作系统内核或其他系统文件,在引导时装入内存。其他分区根据不同操作系统可以在引导时自动装入或在此之后手动装入。/root,/boot文件系统安装表(filesystemmounttable)11虚拟文件系统虚拟文件系统(VFS)提供了一种面向对象的方法来实现文件系统VFS允许在不同类型的文件系统上采用同样的系统调用接口(API)API是针对VFS的接口,而非对任何特定类型的文件系统12虚拟文件系统示意图1312.3目录实现最为简单的目录实现方法是使用存储文件名和数据块指针的线性列表(数组、链表等)容易实现但运行费时采用线性搜索来查找特定条目(缺点)许多操作系统采用软件缓存来存储最近访问过的目录信息Hash表:采用Hash数据结构的线性表减少了目录搜索时间碰撞:两个文件名哈希到相同的位置哈希表的最大困难是其通常固定的大小和哈希函数对大小的依赖性1412.4分配方法分配方法指的是如何为文件分配磁盘块,常用的分配方法有以下三类连续分配链接分配索引分配15(一)连续分配(contiguousallocation)每个文件占据磁盘上的一组连续的块特点:简单-只需要记录文件的起始位置(块号)及长度。访问文件很容易,所需的寻道时间也最少存在的问题为新文件找空间比较困难(类似于内存分配中分配方式)文件很难增长16磁盘空间的连续分配示例17基于扩展的连续分配方法许多新的文件系统采用一种修正的连续分配方法该方法开始分配一块连续空间,当空间不够时,另一块被称为扩展的连续空间会添加到原来的分配中。文件块的位置就成为开始地址、块数、加上一个指向下一扩展的指针。18(二)链接分配(linkedallocation)每个文件是磁盘块的链表;磁盘块分布在磁盘的任何地方。优点:简单-只需起始位置文件创建与增长容易缺点:不能随机访问块与块之间的链接指针需要占用空间簇:将多个连续块组成簇,磁盘以簇为单位进行分配存在可靠性问题19

20链接分配方法的变种-文件分配表(FAT)每个分区的开始部分用于存储该FAT表。每个磁盘块在该表中有一项,该表可以通过块号来索引。目录条目中含有文件首块的块号码。根据块号码索引的FAT条目包含文件下一块的地号码。这种链会一直继续到最后一块,该块对应FAT条目的值为文件结束值。未使用的块用0值来表示。为文件分配一个新的块只要简单地找到第一个值为0的FAT条目,用新块的地址替换前面文件结束值,用文件结束值替代0。如果不对FAT采用缓存,FAT分配方案可能导致大量的磁头寻道时间。但通过读入FAT信息,磁盘能找到任何块的位置,从而实现随机访问。21

22(三)索引分配(indexedallocation)将所有的数据块指针集中到索引块中索引块中的第i个条目指向文件的第i块。目录条目包括索引块的地址索引分配支持直接访问,且没有外部碎片问题索引块本身可能会浪费空间链接方案:一个索引块通常为一个磁盘块。对于大文件,可以将多个索引块链接起来。多层索引:类似于内存的间接寻址方式(一级、二级间接…)组合方案:如Unix的inode23索引分配实例24UNIX的inode(4Kbytesperblock)2512.5空闲空间管理为了记录空闲磁盘空间,系统需要维护一个空闲空间链表,它记录了所有空闲磁盘空间,即未分配给文件或目录的空间。(不一定以链表的方式实现)位向量(n块)bit[i]=0block[i]空闲bit[i]=1block[i]被占用空闲块数计算一个字的位数×值为0的字数+第一个值为1的位的偏移26(续)位向量需要额外的空间设块大小为212字

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论