计算机操作系统强化课笔记(文件系统)(考研)

强化课笔记(文件系统)

一、MP3文件结构:

1.MP3frame相当于文件记录(相当于一个struct结构体),属于有结构文件,Mp3Fream由Mp3Header(头信息)和Mp3Data(数据信息)组成,即Mp3文件是记录式文件

这里如果要5s时候的声音去查找,这里算的是逻辑地址(程序员只能通过逻辑地址去查找,os会进行vA-pA的转换)

在这里插入图片描述

二、FAT文件系统

1.DOS磁盘操作系统采用FAT文件分配表(显示链接);UFS(UNIX文件)采用混合索引
在这里插入图片描述

2.目录文件:即我们打开文件时所看到的各文件夹

3.每个文件系统都有可能作为系统的启动盘,因此,每个文件系统的第一个块为启动块存放自举程序(ROM引导程序,作用是完成一系列开机的动作;区别于BIOS:BIOS存放在ROM中,自举程序是BIOS的最重要的组成部分)

img

3.FAT采用显示链接的文件物理结构,即FAT文件分配表(类似操作系统中的静态链表):说明第1 - n块分别在磁盘的什么地方

(隐式链接(类似链表):每个文件FCB中只记录文件的起始块号和结束块号;只支持从起始块号开始的顺序访问;使用指针表示块之间的关系)

4.FAT文件分配表采用连续存放的方式:FAT文件系统中会使用在引导块后的若干连续块存放FAT文件分配表(开机时操作系统将FAT文件表读入内存中,即查询和访问FAT文件分配表无需进行度磁盘操作)

问题1:FAT表中,每个表项的大小对文件系统有什么影响?
回答1:①对文件系统支持的最大磁盘块数有影响,如:每个FAT表项16bit,则最多只能表示2^16个块号;②对FAT表的总大小有影响,每个表项的大小*表项的数量=FAT表的大小

问题2:简述操作系统是如何使用FAT表的?
回答2:开机时,就会把整个FAT表读入内存,系统运行过程中,该表会一直常驻内存,也就是说,
查FAT表不需要读磁盘,内存里本来就有这个表。系统运行过程中,如果要访问某个文件,则首先要找到这个文件对应的目录项,从目录项中找到文件的起始块号,再根据起始块号查FAT表,从而确认文件的后序那些块存放在哪里。

5.[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vfnpSTXp-1672917261257)(C:\Users\15922\AppData\Roaming\Typora\typora-user-images\image-20221001164934508.png)]

6.⽬录⽂件A的内容:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j50TgTKw-1672917261258)(C:\Users\15922\AppData\Roaming\Typora\typora-user-images\image-20221001165010882.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q8sAmM6S-1672917261258)(C:\Users\15922\AppData\Roaming\Typora\typora-user-images\image-20221001165046272.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pIkeC6L2-1672917261258)(C:\Users\15922\AppData\Roaming\Typora\typora-user-images\image-20221001165129479.png)]

7.FAT文件系统打开文件的过程(OPEN系统调用)

1.①进程使用open系统调用打开某个文件时需指明该文件的存储路径(例如:/x/y/z.exe)
②因此,打开某个文件时,先需要找到该文件的目录项(FCB,该文件的FCB中记录了该文件的存储路径)
③该文件存储在哪个目录下,则该文件的目录项(FCB)就存放在这级目录中(通过对比这级目录中是否有与该文件名相同的文件的方式)
④该文件FCB上记录了该文件的起始块号,通过该起始块号操作系统就可以在FAT表中查到存储该文件所使用的每一个块的块号和存储位置(从起始块号出发,逐块查找,直到最后一个块)
⑤操作系统找到该文件后,将会给进程返回一个fd(文件描述符,相当于指向该文件的指针;作为对进程发出open系统调用的回应)
⑥进程接下来对该文件的操作可以转化为对该fd的操作(例如read(fd))
⑦用户可以指定读取具体哪个块,即用户不需要每次都从头开始读;同样的,操作系统也可以只将用户指定的具体该进程的第几个块读入内存,读入内存后,操作系统还要建立起该文件虚拟地址到物理地址转换的映射关系,即修改页表

(2)文件打开具体过程

①根据文件路径找到文件的FCB
②根据文件FCB中的找到该文件的起始块号
③根据起始块号在FAT文件分配表中通过逐块查找,找到任何一个逻辑块对应的物理块(需要逐块查找;但可以指定某个特定的块读入)
③修改页表,完善逻辑地址到物理地址的映射关系

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jrmDBFRa-1672917261259)(C:\Users\15922\AppData\Roaming\Typora\typora-user-images\image-20221001170444398.png)]

image-20221001170456501

总结:

OPEN系统调用和READ系统调用期间一共发生5次读磁盘:
①根目录已经在内存中,因此查询根目录不需要访存
②OPEN系统调用:Dm存放在目录A的FCB的第三个块中,因此,需要读入5、6、7块磁盘到内存,磁盘读写以块为单位,故需要访存三次(不同策略下OPEN系统所需要的读磁盘次数不同:
   ①一次性将目标目录的所有FCB全部读入       
   ②每读入一个物理块的FCB就查询,这个磁盘块上没有目标FCB才读入下一个物理块,这样能有效减少读磁盘操作)
   (第二种方式可以少读一点)
③READ系统调用:将Dm的两个块读入内存【通过FAT找到两个要找的块】,需要2次读磁盘

6.FCB确定起始块的位置,FAT文件分配表确定后续块的位置
二、unix文件系统

1.unix采用索引节点,把FCB变小,一个目录项只有文件名和inode(索引结点)

2.unix采用混合索引

3.磁盘中会有固定的位置空间来存放索引结点的位置,指明外存中的位置,每个文件对应一个索引结点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cF4Ot2oi-1672917261259)(D:\DASAN\考研视频下载\强化课笔记(文件系统).assets\image-20221001175114358.png)]

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

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

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

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

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

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

数据块:该磁盘块用于文件数据
5.位示图中,每个bit对应⼀个磁盘块,因此,若磁盘块共有 n 个, 则位示图也⾄少要有 n bit

这⾥⽤⼀个磁盘块存储位示图,⼀个磁盘块⼤⼩为4KB,即 32K bit,因此这个位示图能⽀持的磁盘⼤⼩上限为 32K 个块。如果需要⽀持更多磁盘块,则需要扩充位示图的⼤⼩

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

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

UFS文件系统打开文件操作

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

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aEo9IGGk-1672917261259)(D:\DASAN\考研视频下载\强化课笔记(文件系统).assets\image-20221002114211816.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7KyB6wHF-1672917261259)(D:\DASAN\考研视频下载\强化课笔记(文件系统).assets\image-20221002112715823.png)]

(1)查找根目录

image-20221002114746976

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

下图示意图表示读入内存中

image-20221001180544707

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jjK5ZKcD-1672917261260)(D:\DASAN\考研视频下载\强化课笔记(文件系统).assets\image-20221002112957554.png)]

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

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kDc0TtKA-1672917261260)(D:\DASAN\考研视频下载\强化课笔记(文件系统).assets\image-20221002113113530.png)]

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

image-20221002115125276

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

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

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

img

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

img

③查询文件目录C → 文件目录C所对应的INODE号 → 4 → 将4号INODE读入内存【9号块为目录c的内容】

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hSTA2sz5-1672917261261)(D:\DASAN\考研视频下载\强化课笔记(文件系统).assets\image-20221002113438214.png)]

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4GlbLa8v-1672917261261)(D:\DASAN\考研视频下载\强化课笔记(文件系统).assets\image-20221002113638136.png)]

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

img

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

img

⑦查询读入内存的21号块 → 得到12号块的物理块号为23

image-20221002115312005

三、总结

1.读写文件之前要先open,open才可以读入或写,open本质是查目录项,搞清间接寻址的过程。

2.文件z的过程要看一下。

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

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

要找到⽂件z的第6154块,应该先找到⽂件Z的inode结点,根据其中的⼆级间接索引,找到存放在24号块中的第⼀级
索引表,通过24号块中的第5个索引项,找到存放在30号块的第⼆级索引表,最后通过30号块的第1024个索引项,找到⽂件Z的第6154个数据块,也就是28号磁盘块。

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

要找到⽂件z的第6154块,应该先找到⽂件Z的inode结点,根据其中的⼆级间接索引,找到存放在24号块中的第⼀级
索引表,通过24号块中的第5个索引项,找到存放在30号块的第⼆级索引表,最后通过30号块的第1024个索引项,找到⽂件Z的第6154个数据块,也就是28号磁盘块。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值