文件:具有符号名,由字节序列构成的数据项集合
ASCII
或二进制文件。
文件系统:操作系统中管理持久性数据的子系统,提供数据存储和访问功能。
F
中的内容,对操作系统发出指令,从而经过第一层的用户调用接口。F
的文件控制块 FCB
,从而经过第二层文件目录系统。FCB
后,查看文件 FCB
上的权限信息,验证当前用户是否拥有文件访问权限,从而进过第三层存取控制模块。文件控制块(FCB):描述和控制文件属性的数据结构,文件控制块和文件一一对应。常用属性包括文件名、文件大小、物理位置、控制权限、逻辑结构和物理结构等。
文件目录:文件控制块的有序集合,一个文件控制块就是一个目录项。
目录文件:文件目录以文件的形式存放在磁盘上。
文件目录的逻辑结构可分为单级目录结构、两级目录结构和多级目录结构。
/
链接。逻辑结构 是从用户观点看到的文件组织形式。
为了防止未经核准的用户修改文件,文件系统必须控制用户对文件的存取,即解决对文件的读、写、执行的许可问题,必须建立相应的保护机制。
存取控制力模块包括用户身份验证和访问控制:
FCB
时附上相应口令,用户请求访问时必须提供相应口令。磁盘是文件存储的物理介质,可划分为大小相等的物理块,独立存储传输信息。
物理结构 是文件在磁盘上的存储组织形式,可分为非空闲块的物理结构和空闲块的物理结构。
非空闲块的物理结构包括连续结构、链式结构和索引结构。
磁盘分区:把一个物理磁盘的存储空间划分为几个相互独立的部分,称为分区
块或簇: 一 个或多个(2 的幂)连续的扇区,可寻址的数据块
文件卷:磁盘上的逻辑分区,由一个或多个物理块( 簇)组成,可以是 整个磁盘 或 部分磁盘 或 跨盘(RAID)
FCB
数量和指针
FAT12、FAT16和FAT32的数字表示文件分配表的位数,FAT文件系统的簇大小分为1、2、4、8、16、32或64扇区
MBR
和分区引导记录 DBR
,主引导记录包含引导代码、分区表项和扇区结束标志
超级数据块包含了 i节点表 和 空闲区管理 等重要的文件系统信息,inode维护文件到物理块的映射关系,空闲块的管理是通过成组链接法来实现的,三者作用相当于文件分配表FAT
FCB分解法加快目录检索,即把FCB=符号目录顶+基本目录项两部分,符号目录顶包含文件名和文件号,基本目录项包含文件号和其他信息。
Unix的基本目录项是 inode,符号目录顶称为目录项,每个文件由一个目录项、一个inode和若干磁盘块构成。每次检索时,系统只需要检索目录项,然后按照目录项的文件号(inode指针)查询 inode,如此循环直至找到目标文件。
目录是存在磁盘上的,所以检索目录的时候需要访问此案,速度很慢,而FCB分解法将FCB的一部分数据分解出去,存放在另一个数据结构当中,而在目录中仅留下文件的基本信息和指向该数据结构的指针,有效缩减目录的体积,减少目录所占的磁盘块数,检索目录时读取磁盘的次数页减少。
例题:在实现文件系统时,为加快文件目录的检索速度,可利用 ”FCB分解法“。假设目录文件存放在磁盘上,每个磁盘 512B
,FCB 占 64B
,符号目录项占 10B
,基本目录项占 56B
。
(1) 假设某一目录文件有254个FCB,分别给出采用分解法前和分解法后,查找文件的某一个FCB的平均访问磁盘次数。
解:分解前,目录的磁盘块数为 64*254/512=31.75,即 32 块
所找的目录项在第1, 2, 3 … , 32 块所需的磁盘访问次数分别为 1, 2, 3 … , 32 次,
所以平均访问磁盘次数=(1+2+3+…+32)/32=16.5 次
分解法后,目录的磁盘块数为 10*254/512=4.96,即 5 块
因为 FCB 分解法将 FCB 的部分内容放在目录外,所以检索完目录后还需读取一次磁盘找齐 FCB 的所有内容
所找的目录项在第第1, 2, 3, 4, 5块所需的磁盘访问次数分别为 2, 3, 4, 5, 6 次,
所以平均访问磁盘次数=(2+3+4+5+6)/5=4 次
(2) 若目录文件分解前占用 n 个盘块,分解后改用 m 个盘块存放文件名和文件号,请给出访问磁盘次数减少的条件。
解:分解法前平均访问磁盘次数=(1+2+3+…+n)/n=(n+1)/2次 一次访盘时间=寻道时间 T n T_n Tn +旋转延迟时间 T r T_r Tr+传输时间 T t T_t Tt 假设磁盘访问序列: 先来先服务(FCFS):按访问请求到达的先后次序服务 最短寻道时间优先(SSTF):优先选择距当前磁头最近的访问请求进行服务 扫描算法(SCAN):当 设备无访问请求时,磁头不动;当有访问请求时,磁头按一个方向移动,在移动过程中对遇到的访问请求进行服务,然后判断该方向上是否还有访问请求,如果有则继续扫描;否则改变移动方向,并为经过的访问请求服务,如此反复 记录在磁道上的排列方式也会影响输入输出操作的时间 处理程序要求顺序处理8 个记录;磁盘旋转一周为 20 ms/r;花5毫秒对一个记录进行处理 按磁盘处理8个记录,磁盘2每个记录的处理间隔 5 ∗ 2.5 m s = 12.5 m s 5*2.5ms =12.5ms 5∗2.5ms=12.5ms,前7个记录处理时间为 12.5 m s ∗ 7 = 87.5 m s 12.5ms*7=87.5ms 12.5ms∗7=87.5ms,最后一个记录为 2.5 + 5 = 7.5 m s 2.5+5=7.5ms 2.5+5=7.5ms,所以总处理时间为 95 m s 95ms 95ms 分配磁盘块时,把有可能顺序存取的块分配在同一柱面上,从而减少磁盘臂的移动次数和距离 块高速缓冲区:利用程序执行的时间局部性,在内存中为磁盘块设置一个缓冲区,保存磁盘中某些块的副本。访问内存块时,先查询块高速缓存,再查询磁盘 提前读取:利用程序执行的空间局部性,每次访问磁盘,多读取一些磁盘块
分解法后平均访问磁盘次数=(2+3+4+…+(m+1))/m=(m+3)/2次
显然 (m+3)/2<(n+1)/2,即 m磁盘访问优化
1. 磁盘调度(寻道时间)
98 ,183 ,37 ,122 ,14 ,124 ,65 ,67
,读写头起始位置:53
,要求计算磁头服务序列和磁头移动总距离。
磁盘访问序列:98,183,37,122,14,124,65,67
,磁头移动总距离是 640
磁道
磁盘访问序列:98,183,37,122,14,124, 65,67
,磁头移动总距离是 236
磁道
磁盘访问序列:98,183,37,122,14,124, 65,67
,磁头移动总距离是 218
磁道2. 信息的优化分布(旋转延迟)
解:读取一个扇区需要时间: 20 / 8 = 2.5 m s 20/8=2.5ms 20/8=2.5ms,处理一个记录需要 5 m s 5ms 5ms
按顺序处理8个记录,磁盘1每个记录的处理间隔 7 ∗ 2.5 m s = 17.5 m s 7*2.5ms = 17.5ms 7∗2.5ms=17.5ms,前7个记录处理时间为 17.5 m s ∗ 7 = 122.5 m s 17.5ms*7=122.5ms 17.5ms∗7=122.5ms,最后一个记录为 2.5 + 5 = 7.5 m s 2.5+5=7.5ms 2.5+5=7.5ms,所以总处理时间为 130 m s 130ms 130ms3. 合理分配磁盘空间(寻道时间)
减少磁盘访问