690 likes | 829 Views
第六章 文件管理. 6.1 文件和文件系统. 6.1.1 文件、记录、数据项 ( 说明包含关系 ) 数据项 基本数据项:可命名的最小逻辑单位 / 字段 组合数据项:由若干基本数据项组成 基本数据项的类型和数据 记录 一组相关数据项的集合 关键字:能唯一地标识出记录的基本 / 组合数据项 文件 具有文件名的一组相关信息的集合。. 文件属性. 文件类型 文件长度 文件物理位置 文件建立时间 ……. 6.1.2 文件类型和文件系统模型. 1. 文件类型 1 )按用途分类: 系统文件,用户文件,库文件。 (用户对以上三者的访问权限不同)
E N D
6.1文件和文件系统 6.1.1 文件、记录、数据项(说明包含关系) 数据项 基本数据项:可命名的最小逻辑单位/字段 组合数据项:由若干基本数据项组成 基本数据项的类型和数据 记录 一组相关数据项的集合 关键字:能唯一地标识出记录的基本/组合数据项 文件 具有文件名的一组相关信息的集合。
文件属性 • 文件类型 • 文件长度 • 文件物理位置 • 文件建立时间 • ……
6.1.2 文件类型和文件系统模型 • 1.文件类型 • 1)按用途分类: • 系统文件,用户文件,库文件。 • (用户对以上三者的访问权限不同) • 2)按文件中的数据形式分类 • 源,目标,可执行。 • 3)存取控制 • E,R,R/W
6.1.2 文件类型和文件系统模型 • 4)逻辑结构 • (1)有结构(记录式) • (2)无结构(流式) • 5)物理安排 • (1)顺序文件 • (2)链接文件 • (3)索引文件
用户(程序) 文件系统接口 对对象操纵和管理的软件集合 对象及其属性 文件系统模型 • 2.文件系统模型 概念:文件和对文件进行操纵和管理的软件集合。 • 三个层:文件(对象及属性)文件操作文件访问接口
1)对象及属性 • (1)文件 • (2)目录: 用于方便用户(提供文件逻辑名来访问文件)和提高文件存取速度。 • (3)物理存贮空间的管理,好坏将影响访问速度。
文件系统模型 • 2)对对象操纵和管理的软件集合 • (1)逻辑文件系统:受命write(record of 文件,buf) ->write(逻辑号,buf) • (2)基本I/O管理:write(逻辑号, buf) • (3)基本文件系统:向driver发令,(buf具体物理盘块号) • (4)I/O控制层:driver • 3)文件系统接口 • 命令接口 • 程序接口
6.1.3 文件操作 • 1.最基本的文件操作 • (1) 创建文件:按名创建一个新文件 • (2) 删除文件: 删除指定文件,释放所占用的存贮空间 • (3) 读文件 : 将一文件的全部或局部读入内存 • (4) 写文件: 将内存区中的信息送入文件 • (5) 截断文件:将原文件长度设置为0 • (6) 设置文件的读/写位置:
6.1.3 文件操作 • 2.文件的“打开”和“关闭”操作 • 打开:将文件的属性从外存拷贝到内存打开文件表的一个表目中,并将该表目的编号(索引)返回给用户 • 3.其它文件操作 • 更名、更改属性…
6.2 文件逻辑结构 • 文件的两种形式结构 • (1) 文件的逻辑结构(File Logical Structure)用户所能观察和访问到的文件的数据结构组织,独立于物理特性,容易检索和修改。 • (2) 文件的物理结构, 又称为文件的存储结构, 是指文件在外存上的存储组织形式 • 无论是逻辑还是物理结构,都会影响到文件的检索速度
6.2.1 文件逻辑结构的类型 • 1.有结构文件:记录式文件 • a类: • (1)定长记录 • (2)变长记录 • b类: • (1)顺序文件:通常是定长记录,(为何,因变长采用此方式查询速度慢) • (2)索引文件: • (3)索引顺序文件:顺序组织多个组,每组记录中的第一个记录设置一索引项。 • 2.无结构文件:流式文件 • 以字节为单位,利用读/写指针进行访问。
6.2.2 顺序文件 • 1.逻辑记录的排序 • (1)按记录录入的时间排:串结构 • (2)按关键字排序:顺序结构 后一种情况更有利于提高查询速度。如可用折半查找法等 • 2.对顺序文件的读/写操作 • 定长记录顺序文件:例:顺序读 • 易于定位,甚至可随机读取。 • 变长记录:不易定位,只能顺序读取
6.2.2 顺序文件 • 3.顺序文件的优缺点 • 批处理时效率是所有逻辑文件中最高的。 • 可存在于磁带上。 • 交互应用时“效率低”(如要查找单个记录),尤其是对变长记录的顺序文件。 • 增加、删除记录涉及到排序问题,开销大。 • 事务文件(log),用于存放将更新到主文件的记录。
6.2.3 索引文件 • 由变长记录组成的顺序文件不容易直接存取,因此,为其建立一有序的索引表,对索引采用折半查找,速度更快。 • 特点:提高了速度,增加了存储开销——放索引文件。 • 增、删记录时,对索引表作相应的修改。
6.2.4 索引顺序文件 • 将顺序文件中若干记录分为一组,每组的第一项在索引表中占一项。 • 速度比较: • 例1:10000个记录,顺序文件:5000次查找找查到。 • 索引顺序文件,设100个记录一组,索引表的找法设为顺序法的情况下,则查找次数为50+50=100。 • 例2:1000000个纪录: 低级索引:(100个纪录一组):10000。高级索引:100 • 速度:50+50+50=150
6.2.5 直接文件和哈希文件 • 直接文件 • 键值转换:由记录键值到记录物理地址的转换 • 哈希文件 • A=H(k) • 是一种索引链接文件
6.3外存分配方法 6.3.1 连续分配 每个文件分配一组相邻盘块 磁盘空间的连续分配
6.3.1 连续分配 • 特点:简单 • (1)顺序访问容易且速度快,因磁头移动距离小, • (2)要求连续空间,一段时间后需整理磁盘以消除外部碎片。 • (3)必须事先知道长度,文件不易动态增长和删除。 • 文件对应目录项(属性)中包含: • 始址、总块数、最后一块字节数。
6.3.2 链接分配 • 文件离散地分配于各盘块中,以提高外存利用率,文件长度可变,易于增删,只能顺序存取。 • 对应目录项:链表的首指针 • 1.隐式链接 • 文件目录表中有start块号,每块中有下一块号。 • 特点:只适合于顺序访问,对随机访问效率低,可靠性差。 • 簇:包含多个块的单位,当以它为单位分配并链接,可减少访问时间,但增大了内部碎片
6.3.2 链接分配 • 2.显式链接:把用于链接的指针显式存放在内存的一张表中,查找在内存中进行。 • FDT/FCB―――>FAT----->块链
DOS磁盘访问操作流程 磁盘参数表 磁盘目录表 FDT 文件位置分配 表FAT 文件名 磁盘基数表 扇区物理 操作 磁盘扇区 定位
DOS • 对于1.2MB软盘,盘块大小为1KB,每个FAT表项占12位,在每个FAT中共1.2k个表项,故共1.8k.
6.3.3 索引分配 • 1.单级索引 • 链接分配问题: • 不能高效直接存取; • FAT需占较大的内存。 • 概念:为每个文件分配一个索引块 • 特点: • (1)文件较大时有利。文件较小时浪费外存空间(还需为小文件建索引块) • (2)当文件较大时,索引块太多,查找速度减慢 • 解决:当索引太大时,则需建立多级索引
6.3.3 索引分配 • 两级: • 设一个盘块大小为1k,每个盘块号占4byte。则2级索引存放的文件的盘块号总数为:256×256=64k,故文件的最大长度为64M
6.3.3 索引分配 • 3.混合分配方式(UNIX系统) • 多种索引分配方式相结合而形成的一种分配方式 • 设每个块大小为4k,一索引项占4字节,则 • 1)直接地址:小文件(<40k)则立即读出。 • 2)一次间址:4M • 3)多次寻址:4G->4T。
6.4目录管理 • 文件目录:将文件名――map―― 外存物理位置,使用户按名存取。 • 功能: • (1)按名存取; • (2)提高检索速度; • (3)文件共享; • (4)允许文件重名。
6.4.1 文件控制块和索引结点 • 目录文件:其内容为文件目录。 • 文件目录:文件控制块的有序集合(FDT) • 1.文件控制块 (1)基本信息 • 文件名 • 文件物理位置:(设备号,盘块号,文件长度) • 文件逻辑结构:流式 记录式 • 文件物理结构:顺序放 离散放--链式、索引式
文件控制块FCB (2)存取控制信息(安全性) • 文件主/核准用户/一般用户存取权限 (3)使用信息类 • 文件的建立日期/时间 • 文件上一次修改时间 • 当前使用信息 • 例:DOS
2.索引结点 • 1)引入 • 为何引入:FCB中含文件名、描述信息,它们较占空间。 • 索引结点:含文件描述信息。 • 例:一个FCB为64字节,一个盘块为1024字节,设文件共有3076个,因一个盘块只能放16个(1024/64)FCB,故文件目录占了192(3076/16)块,当要访问某文件,平均调度块数为192/2=96+1=97次。
a.将FCB分为 • 文件名、i(index)节点指针和相应的i节点,其中文件名和i节点指针占16字节 • b.离散存放目录结构 • 查询时只调入文件名部分,找到后才调入相应节点。
2)磁盘索引结点 • (1)文件主标识 • (2)文件类型 • (3)文件存取权限 • (4)文件物理地址(表达出盘块号) • (5)文件长度 • (6)连接(共享)计数 • (7)存取时间
文件打开后,将磁盘索引结点的内容部分或全部子集拷贝到内存,并增加以下内容。文件打开后,将磁盘索引结点的内容部分或全部子集拷贝到内存,并增加以下内容。 • (1)编号 • (2)状态(上锁、修改) • (3)共享计数 • (4)逻辑设备号 • (5)链接指针:i节点的组织结构。 3)内存索引节点
6.4.2目录结构 • 1.单级目录结构 • (1)新建文件时——>有无同名——>加入目录表 • (2)删除文件——>回收块——>清除占用目录项 • 特点: • (1)简单 • (2)速度慢/不允许重名/不便于共享(不能用不同名字访问同一文件)。
2.两级目录结构 MFD+UFD
6.4.2目录结构 • 两级目录结构 • MFD+UFD • 特点: • (1)提高了速度:如:n个用户,每用户最多m个文件,则最坏速度为n+m而非n*m • (2)可重名 • (3)可共享(但不方便)
3.多级目录结构 (1)树型目录 一目录文件中的目录项可为:目录文件、数据文件
(2)路径名 (3)当前目录/工作目录。 (4)增/删除(可/不可删除非空目录) (5)链接文件
6.4.3目录查询技术 • 过程:文件名——目录项(FCB)或索引结点——盘块号——启动磁盘——驱动程序 查询方式: 线性检索法 Hash方法
1.线性检索法 例:/usr/ast/mbox
(1)根中得usr的索引结点号6; • (2)6中得usr目录文件为132#; • (3)132#中得/usr/ast的索引结点是26. • (4)26中的/usr/ast目录文件中406# • (5)406#中得/usr/ast/mbox的索引结点是60. • (6)60中得/usr/ast/mbox的物理地址
2.Hash方法 • 一种处理此“冲突”的有效规则是: • (1) 在利用Hash法索引查找目录时,如果目录表中相应的目录项是空的,则表示系统中并无指定文件。 • (2) 如果目录项中的文件名与指定文件名相匹配, 则表示该目录项正是所要寻找的文件所对应的目录项,故而可从中找到该文件所在的物理地址。 • (3) 如果在目录表的相应目录项中的文件名与指定文件名并不匹配,则表示发生了“冲突”,此时须将其Hash值再加上一个常数(该常数应与目录的长度值互质),形成新的索引值, 再返回到第一步重新开始查找。
6.5 文件存储空间管理 • 6.5.1 空闲表法和空闲链表法 • 1.空闲表法 • 分配:首次/循环首次/最佳/最坏 • 回收:判断是否合并。 • 由于连续分配比较快,因此对对换空间及小文件的管理适用。
2.空闲链表法 • 1)空闲盘块链 • 缺点:可能该链很长。 • 2)空闲盘区链: • 一个盘区含多个盘块,类似于内存分区分配与回收(合并)。