408王道操作系统强化——文件管理及大题解构(下)

简介: 408王道操作系统强化——文件管理及大题解构

3.UFS文件系统

3.1.UFS文件系统的基本概念

1.采用混合索引的方式将FAT文件系统中FCB的占用空间过大的问题进行优化:因此每个目录项只需包含 “文件名、inode号”文件的具体属性包含在 inode 中

43fbbe7c37b9475aba6504de8f773a94.png

2.INODE区:磁盘中专门划分出存放所有INODE的区域,即所有INODE有共同的起始地址a038ccfa312548cd92242669748c8c55.png

3.每个INODE(索引结点)大小固定(类似数组)

4.2和3的特性可以根据INODE编号迅速找到指定INODE

5.UFS文件系统下,所能支持的最大容量为:

①直接索引下 = 每个直接索引结点代表一个完整的数据块

②一级间接索引 = 物理块大小 / FCB大小 = 每个物理块所能容纳多的FCB数,设为x

③二级间接索引下 = x * x

索引块:该磁盘块用于存储索引表,且每张索引表需要刚好占满一个磁盘块

若每个磁盘块大小为4KB,每个索引项4B,则一张索引表包含1024个索引项

数据块:该磁盘块用于文件数据

bd0785b0cb884b46bdabdc550edeffb1.png6.位示图中,每个bit对应⼀个磁盘块,因此,若磁盘块共有 n 个, 则位示图也⾄少要有 n bit

设⼀个磁盘块大小为4KB,即 32K bit,因此这个位示图能支持的磁盘大小上限为 32K 个块

7.每个文件必须对应⼀个inode结点,而inode结点的总数是有上限的

设8KB作为inode区, 假设每个inode大小为64B,则该文件系统最多只能存储8KB/64B=128个 inode结点,即该系统最多只能支持128个文件

3.2.UFS文件系统打开文件的过程

1.每次先读入INODE,再根据INODE内容读入FCB,再根据FCB的内容读入下一级目录文件的INODE,循环(查询INODE和FCB交替进行)直到找到目标文件的FCB

2.INODE的作用是指明目标文件的实际存放地址,即INODE并非目标文件

3.OPEN系统调用找到的是目标文件的INODE,且将该INODE读入内存,并向进程返回指向该INODE的fd后,OPEN系统调用即完成;之后可以通过该INODE找到目标文件的所有物理块

1.UFS文件系统和FAT文件系统打开文件的过程本质上是一致的,都是查找目标文件的FCB

2.例:OPEN系统调用(/A/Dm)

①查找根目录(开机时已经读入内存,并且常驻内存,访问无需读磁盘)→ 目录文件A的INODE号为134c151ae65c7436eb5ff101711ec2790.png

②将存放1号INODE读入内存(只有读入内存,才能对INODE的信息进行各种操作,此时发生一次读磁盘操作)

9baf815c86734a7f9fdb20b46fb73e2c.png

③根据INODE结点可知,目录文件A的FCB总共占用两个块,此时有两种查找策略:

1.两个块全部读入后再查找Dm文件的FCB(2个块,固定2次读磁盘)

2.每读入一个块就立即对该块查询Dm的FCB,没有才读入下一块(最少1次,最多2次读磁盘)

056cd004d08743da92c9dbfb0a8a9117.png

④设Dm的FCB存放在7号块中(此时1、2策略都需要2次读磁盘);将目录文件A的FCB读入内存后,查询可知Dm所对应的INODE号为5,即需要读入5号INODEf6e9dfc95f2948b486c94639d64bc7a7.png

⑤读入5号INODE后(需要1次读操作),即获得Dm的FCB,完成OPEN系统调用

3.在混合索引方式下,支持随机访问,即可以根据文件的逻辑块号只读入文件的某个块

4.例:读文件H的第11.5KB:OPEN(/ C / F / H)→ READ(11.5KB)

①查询根目录 → 文件目录C所对应的INODE号 → 7 → 将7号INODE读入内存

3ed849b9343f40c7a3a152ac4d379a03.png

②查询7号INODE → 文件目录C所对应的FCB为9号块 → 将9号块读入内存

d0ffab8959464ae7a19878fbf6275002.png

③查询文件目录C → 文件目录C所对应的INODE号 → 4 → 将4号INODE读入内存

549a6f4171b640d28461dffcf6fbef06.png

④查询4号INODE → 文件目录F所对应的FCB为14号块 → 将14号块读入内存

59cea1c1d3094a7394661354746f54ed.png

⑤查询文件目录F → 文件H所对应的INODE号 → 10 → 将10号INODE读入内存,并向进程返回指向该INODE的FD → OPEN系统调用完成

43c714cf3e6b49df9b56595318f72e73.png⑥开始READ系统调用:前10个直接索引只能找到该文件的前10个块,即前10KB,10KB之后的数据就要通过间接索引得到 → 一级间接索引表存放在21号物理块中 → 读入21号块9f18069a772740a59053b55eced708a2.png


⑦查询读入内存的21号块 → 得到12号块的物理块号为2373880c4755a74ee6b5a480b4a8e52542.png

4.小结

1.READ/WRITE系统调用之前先要进行OPEN系统调用

2.OPEN系统调用的本质是找目标文件的FCB

3.FAT文件系统下根据文件的起始块号和FAT文件分配表逐一开始查询

4.UFS文件系统下先找到文件的INODE结点,并将该INODE读入内存,之后就可以根据其索引信息知道该文件的物理块分配情况

5.真题


image.png

(1)文件系统能支持的最大文件长度 =

①直接地址项 = 8个块

②一级间接地址 = 4KB / 4B = 1024 个块 即每个块可以存放的地址项共1K个

②二级间接地址 = 1024 * 1024

③三级间接地址 = 1024 * 1024 * 1024

(2)①一个索引结点对应一个文件,即文件数量的上限受到索引结点个数的制约

②每个文件5600B,每个簇4KB,每个文件需要2个蔟保存,即文件数量的上限受到簇数量的制约

①②取最小值

3)直接索引方式下,可以直接通过INODE结点的信息读入相应的数据块,即一次就可以读入数据

一级间接索引方式下,INODE结点的信息保存的是存放该文件的索引信息的物理块,需要把该物理块读入后,才能知道存放数据块信息的INODE,即第一次读入的是INODE,第二次读入的才是数据image.png1)目录文件的每个目录项包括文件名和文件的第一个簇号

de7e53d38a5a40b5905b43f892185708.png

(2)FAT表项存放的是下一个块的块号,16bit能表示2^16个磁盘块号;每个块号需要2B的表项,即FAT的最大长度为2 ^ 16 * 2B = 2 ^ 17B;

共2^16个磁盘块全部分配给1个文件,每个磁盘块4KB,即文件的最大长度为2 ^16 * 4KB

(3)通过FAT表项100得到106,通过FAT表项106得到108(FAT表项108为-1)

(4)根据根目录找到dir1的目录项,读入48簇;根据dir1的目录项找到file1的FCB,根据FCB中file1的初始块号到FAT文件分配表中查找,先找到100,然后找到106的块号,读入106

相关文章
|
2天前
|
存储 安全 Linux
操作系统(13)-----文件管理4
操作系统(13)-----文件管理
13 0
|
2天前
|
存储 算法 Unix
操作系统(13)-----文件管理3
操作系统(13)-----文件管理
12 0
操作系统(13)-----文件管理3
|
2天前
|
存储 索引 Windows
操作系统(13)-----文件管理2
操作系统(13)-----文件管理
8 0
|
2天前
|
存储 SQL 算法
操作系统(13)-----文件管理1
操作系统(13)-----文件管理
7 0
|
4天前
|
存储 算法 安全
|
4天前
|
缓存 算法 Linux
[操作系统] 文件管理
[操作系统] 文件管理
|
5月前
|
存储 数据库 数据安全/隐私保护
【王道考研操作系统】—文件的基本操作
【王道考研操作系统】—文件的基本操作
|
7月前
|
存储 算法 固态存储
操作系统之文件管理
文件管理初识 文件的属性 文件内部的数据如何组织起来? 文件之间应该如何组织起来? 操作系统应该向上提供哪些功能? 从上往下看,文件应该如何存放在外存? 其他需要由操作系统实现的文件管理功能 最后总结一下: 文件的逻辑结构 、 这里说一下随机访问和顺序访问: 随机访问(Random Access)是计算机存储介质的一种访问方式。它指的是存储介质可以以任意的、不连续的方式访问存储的每个地址。也就是说,随机访问允许直接访问存储介质的任意位置,不需要从开头逐个访问到需要的地址。 与随机访问相对的是顺序访问(Sequential Access),它要求从存
45 0
|
9月前
|
存储 安全 Unix
第七章 文件管理【操作系统】2
第七章 文件管理【操作系统】2
141 1
|
9月前
|
存储 Unix 文件存储
第七章 文件管理【操作系统】1
第七章 文件管理【操作系统】1
117 0