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