操作系统第十一章
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
访问方法层 :与用户最近的一层。在应用程序和文件 系统及保存数据的设备之间提供了一种标准接口。
不同的访问方法反映出不同的文件结构和访问数据的不同方法。
11.2 目录实现
为了实现用户对文件的按名存取,系统要对目录进行查询 ,找出该文件的文件控制块或者索引节点,进而找到该文 件的物理地址。 线性列表:顺序检索法。目录文件由目录项构成一个线 性表,每个目录项包括文件名和执行数据块的指针。 创建新文件:检索该目录,检查是否同名,没有同 名,则将新文件的目录项添加到目录末尾 删除文件时:检索目录找到该目录项,然后释放分 配给它的全部空间,并且清空该项 评价:简单易行、速度慢。改善:使用缓存来存放 最近用过的目录信息。将目录排序,使用二分检索 法,缩短平均查找时间,但会使文件的创建和删除 变得复杂
为此,我们可以将文件名和其他信息分开,后者单独形成一个独 立的数据结构,称为索引节点(index node或者i_node).对应的 目录项就不再是完整的一个FCB,而是由文件名和指向索引节点的 指针组成. 在引入索引节点之后,一个文件在创建后将立即有与之对应的一 个磁盘索引节点.若该文件被调进内存,将立即有对应的一个内 存索引结点.
例题
一个已经打开的连续文件,要读取其第10号数
据块,则需要____次I/O操作;对于链式文件 需要____次I/O操作?
设某个文件为链式文件,由5个逻辑记录组成 ,每个逻辑记录的大小与磁盘块大小相等,均 为512字节,并依次存放在50、121、75、80、 63号磁盘块上。若要存取文件的第1569逻辑字 节处的信息,问要访问哪一个磁盘块?
优点:
可以比较容易地找到第一个或一组连续的自由块,适用于任何一 种文件分配方法。(而且很多计算机都提供位操作指令) 位表小,但长度可变 例:对于一个16GB的磁盘,块大小为512 字节,则位表占4MB 空间。
对于大文件,位图占用内存空间较多,可以按合并4个扇区位一个 cluster(簇)的方法。
简单。适用于一次性写入的操作 支持顺序存取和随机存取,顺序存取速度快 所需的磁盘寻道次数和寻道时间最少(因为由于空间的 连续性,当访问下一个磁盘块时,一般无需移动磁头,当 需要磁头移动,只需要移动一个磁道。 缺点: 文件不能动态增长(可能文件末尾处的空块已经分配给别 的文件) 不利于文件插入和删除 外部碎片问题(反复增删文件后),使得很难找到空间大 小足够的连续块。进行紧缩 在创建文件时声明文件的大小。
第11章 文件系统实现
11.1 文件系统结构
用户程序
堆
顺序 索引顺序
逻辑I/O
索引
哈希
基本I/O管理程序
基本文件系统(物理I/O层) 磁盘设备驱动程序 磁带设备驱动程序
11.1 文件系统结构
设备驱动程序:负责启动该设备上的I/O操作,处理I/O 请求的完成 基本文件系统(物理I/O层):处理与磁盘或磁带交换 的数据块。
11.3 文件的分配方法-索引分配
索引分配:每个文件在FAT中有一个一级索引,索引包含分 配给文件的每个分区的入口。文件的索引保存在一个单独的 块中。FAT中该文件的入口指向这一块。 优点:
保持了链接结构的优点,又解决了其缺点:按块分配
可以消除外部碎片,按大小可变的分区分配可以提 高局部性。索引分配支持顺序访问文件和直接访问 文件,是普遍采用的一种方式。 满足了文件动态增长、插入删除的要求(只要有空 闲块) 也能充分利用外存空间
11.4 磁盘空闲空间的管理-位表
创建新文件时,系统要为用户的文件分配相应
的外存空间;删除一个老文件时,系统要回收 该文件所占用的外存空间,供新文件使用。因 此,系统需要对外存空闲块进行妥善管理。 在分配时,首先知道磁盘中的哪些块是可用的 。除了FAT外,还需要一个DAT(disk allocation Table)。实现技术:
多重索引结构-举例-Unix的索引节点
Unix中通过为每个文件创建一个i节点的方法,巧妙:
i节点中包含39个字节的地址信息,这个地址信息被组织成
13个3字节的地址或指针。 前10个表目是直接索引,指向文件最初的10个数据块。 当文件大小小于10块时,可以直接定位到这10个块; 第11个表目是一级索引表,指向磁盘中包含下一部分索 引的块。 第12个表目是二级索引表, 第13个表目是三级索引表; 对比:在许多文件系统中,如MS-DOS中,使用文件分配表 FAT来管理文件的物理盘块: 使用FAT的主要问题:整个磁盘的所有文件登记在同一个 FAT表中。因此,即使仅打开一个文件,也要使用整个FAT 来查找该文件所所分配的盘块,浪费时间。
缺点:
11.4 空闲空间的管理-位图(位向量)
位表的管理:
位图可以位于内存或磁盘中,但在磁盘中需要搜索
缺点:
较多的寻道次数和寻道时间. 索引表本身带来了系统开销,
如:内外存空间,存
取时间
磁盘空间的索引分配
连续分配和索引分配相结合:对于小文件 (3块或者4块),采用连续分配,当文件 大时,自动切换到索引分配。
文件的直接访问:使用连续分配方式 文件的顺序访问:采用链接分配 对于这些系统,所使用的访问类型必须在文 件创建时加以说明。
位图 空间块链接法 空闲目录法 成组块链接法
11.4 空闲空间的管理-位图(位向量)
位图(位向量):使用一个向量,向量中的每位(bit) 对应于磁盘中的每一个块(block)
0:表示一个空闲块 1:表示一个已使用的块。 例:2,3,4,5,8,9,10,11,12,13,17,18,25,26,27,… ==> 001111001111110001100000011Hale Waihona Puke Baidu…
入指定的文件名。
由文件长度确定文件存储所需的物理块数。
按规定的物理结构为文件分配存储空间。对连续文件,
则分配块连续的空间,对索引文件,现分配索引表用的 物理块。
在该文件目录项中写入文件的属性、文件的物理块首址
等。
举例:文件操作
打开文件(open):
按指定的文件名检索文件目录,将待访问文件
在程序中使用这些系统调用对文件进行各种操 作。
如建立文件、打开文件、关闭文件、删除文件、
读文件、写文件。
举例:文件操作
建立文件:creat(文件名、文件属性)
检查参数合法性:按给定的路径查文件目录,找出用户
指定的目录位置,检查目录上是否存在同名文件,若存 在则发出错误信息。
在指定的目录中找一个空表项作为该文件的目录项,写
的目录信息读入内存活动文件表中,建立起用 户和文件的联系。
一旦文件被打开就可以多次使用。直到文件被
关闭。
多重索引结构
大文件:设一个盘块大小为1KB,长度为100KB的 文件就需要100个盘块,索引表至少包含100项; 若文件大小为1000KB,则相应索引表项要有1000 项。设盘块号用4个字节表示,则该索引表至少占 用4000B(约4K)。 当文件很大时,存在的问题:
注重的是这些块在外存设备中的位置,而并不知道该文件所涉及的 数据或结构的内容。
基本I/O管理程序:负责所有文件I/O的开始或结束。选 择执行文件的I/O设备,外存的分配,I/O缓冲区的指定 逻辑I/O:使用户和应用程序能够访问到记录。
物理I/O层处理的是数据块,逻辑I/O处理的是文件记录。它提供一 种通用的记录I/O的能力。
物理块号 …
多重索引结构-图示
outer-index index table file
多重索引结构-举例- Unix的索引节点
为了加速对文件目录的查找,在Unix系统中,将文件 名和其它文件说明信息分开,由文件说明信息形成一 个称为索引节点的数据结构,而相应的文件目录项只 由文件名和对应的索引节点号组成。 文件名 i节点号
举例
文件系统采用多级索引结构来搜索文件文件内容 。设块长为512字节,每个块号长3字节。如果 不考虑逻辑块号在物理块中所占的位置,分别求 二级索引和三级索引时可寻址的文件最大长度。 (512/3=170) 一级索引:170块 二级索引:170×170=28900(块), 28900×512=1450K字节 三级索引:170×170×170=4913000(块), 4913000 ×512=2456500K字节
多重索引结构-举例- Unix的索引节点
文件分配以块为基础。按照需要动态进行,不是预定义的。 文件在磁盘中的块不一定是连续的。 Unix系统为了访问文件,采用索引的方法,索引的一部分保 存在该文件的索引节点中。
文件系统
索引节点(I节点)
文件名 games 索引节点编号
News work
根目录文件的内容:
文件名 作业 软件 娱乐 F1 文件类型 目录文件 目录文件 目录文件 数据文件 外存地址
…
C OS F1.C F2.C OS1
11.3 分配方法
连续分配 链式分配 索引分配
11.3 分配方法-连续分配
连续分配:创建文件时,分配一组连续的块;FAT中每个文件只要一 项,说明起始块和文件的长度。对顺序文件有利。 优点:
需要很多的磁盘块
索引表很大
不能将整个索引表放在内存
解决途径:采取多重索引结构
11.3 文件的分配方法-多重索引结构
索引表 20 物理块号
… 文件信息 文件信息
文件说明信息
记录号 索引表指针 …… 0 1 2 3 物理 块号 20 15 22 25
15 物理块号
…
…
22 物理块号
…
… 25
Unix的索引节点(i节点)
在Unix系统中使用1KB的物理块,每个索引
表的表目需要用32位来存放物理块地址,因 此每个物理块刚好是256个表目,可以映射 256个物理块。因此:
小文件(≤10块):只使用直接索引表。 中等文件(≤266块):使用直接索引表与一
级索引表 大型文件(≤10+256+256×256=65802块 ):使用直接索引表与一级和二级索引表。 巨型文件:使用全部索引表,可寻址 16777216块。
索引文件的物理结构
文件说明信息
索引表指针
…… 逻辑块 号 0 1 2 物理 块号 20 20 15 22
索引表
15
22 25
3
25
索引表组织
多级索引:将一个大文件的所有索引表(二级索引)的地 址放在另一个索引表(一级索引)中。
举例:文件操作
2种方式
命令级接口:dir、copy等 系统调用:文件系统的程序级接口,用户可以
磁盘空间的连续分配
11.3 分配方法-链式分配
链式分配:一个文件的信息存放在若干不连续的物理 块中,各块之间通过指针连接,前一个物理块指向下 一个物理块。FAT中每个文件同样只需要一项,包括 文件名、起始块号和最后块号。任何一个自由块都可 以加入到链中。 优点:
提高了磁盘空间利用率,不存在外部碎片问题 有利于文件插入和删除 有利于文件动态扩充
11.2 目录实现
哈希表:利用线性表存放目录项,利用哈息表进行检索
。哈希表根据文件名得到一个值,并返回一个指向线性 列表中的元素的指针。 冲突问题:两个文件名相同的哈希值。
文件系统
目录
目录文件 作业目录文件的内容: …
文件名 文件类型 目录文件 目录文件 数据文件 数据文件 数据文件 外存地址
缺点:
存取速度慢,一般仅适于对信息的顺序存取,不适于随机
存取:查找某一个块必须从头开始沿指针进行。 可靠性问题,如指针出错;更多的寻道次数和寻道时间 链接指针占用一定的空间,将多个块组成簇(cluster), 按簇进行分配而不是按块进行分配(增加了磁盘碎片)。
磁盘空间的链式分配
使用FAT-文件分配表法-链接分配的变种,如MSDOS和OS/2。见教材P312
多重索引结构-举例-Unix的索引节点
所有类型的Unix文件都是由OS通过索引节点来管理 的 索引节点是一个控制结构,包含OS所要的关于某个文 件的重要信息:
文件模式
链接计数
所有者ID 组ID 文件大小 文件地址(39字节) 最后一次被访问 最后一次被修改 索引节点被修改