文件系统的实现:
要注意磁盘上与内存中内容布局
名词:
磁盘分区:把一个物理磁盘存储空间划分成几个相互独立的部分称为分区
文件卷:磁盘上的逻辑分区,由一个或多个物理块(簇)组成,文件卷可以为整个磁盘或部分分区甚至几个磁盘(跨盘)
文件卷的几个区域:
①引导区(每卷一个)
可以从该区引导存在于该分区的操作系统(如果有)
②卷信息
卷的块数,块的大小,空闲块数量和指针,空闲FCB数量和指针,这些都为元数据
③目录文件(管理文件)
④用户文件
文件卷的几个要点:
1.同一个文件卷使用同一份管理数据进行文件分配和磁盘空间管理
2.不同文件卷管理数据是相互独立的
3.文件卷包含文件系统信息,文件(普通文件,目录文件)和未分配空间
一般,磁盘中块的大小 = 一个或者2的幂个扇区
格式化:在文件卷上建立文件系统即建立并初始化用于文件分配和磁盘分配和磁盘空闲空间管理的管理数据
磁盘布局:
内存中数据结构:
①系统打开文件表
i.整个系统一张
ii.放在内存中:用于保存已打开文件的FCB
表项结构:
②用户打开文件表
i.每个进程一张
i.进程PCB中记录了用户打开文件表的位置,为什么PCB中不记录FCB?因为FCB已经在系统打开文件表中记录了
表项结构:
文件目录检查:
给出全路径和相对路径来访问一个文件
目录项分解法(加快目录检索):
方法:把FCB(FCB可以理解成目录项)分成两部分
一部分:符号目录项(文件名,文件号就是i节点作用)
另一部分:基本目录项(除文件名外所有字段,含有文件号)例如unix i-node
目录项分解法如何提升检索速度?
分解前:
所需物理块数 = 128(目录项数) * 48(FCB理解成目录项大小)/512(物理块大小) = 13块
平均访盘次数最好就是第一块就访问到,最差到13块访问到,平均为(1 +13) /2 = 7次
分解后:
符号目录文件所需物理块数 = 128 (原来目录项数量变成符号目录项数量)* 8(符号目录项大小)/512(物理块大小) = 2块
基本目录文件所需物理块 = 128(FCB一分为二数目相等,但目录项数量和基本目录项数量项等)* 42 (基本目录项大小)/512 = 11块;
平均访盘次数现在只要找符号目录项即可(最好1 + 最差2)/2 = 1.5 + 通过文件号(就是i节点号作用)到基本目录项寻找文件起始物理块号1次 = 2.5次
Unix中:
FCB = 目录项(文件名,i节点号(就像符号目录项中文件名和文件号)) + i节点
应用:
作者水平有限,文章肯定有错还请各位指点!!!感谢!!!