【操作系统】5、文件管理

五、文件管理

  • 文件与文件系统的基本概念, 组织方式, 文件控制块, 目录结构, 文件存取控制, 文件系统层次结构;

5.1 文件系统基础

5.1.1 文件概念
5.1.2 组织方式

按逻辑结构,文件可以分为无结构文件和有结构文件两种。

无结构文件:文件内部的数据就是一系列二进制流或字符流组成。又称“流式文件”。如:Windows操作系统中的.txt文件。

有结构文件:由一组相似的记录组成,又称“记录式文件”。每条记录又若干个数据项组成。如:数据库表文件。一般来说,每条记录有一个数据项可作为关键字。根据各条记录的长度(占用的存储空间)是否相等,又可分为定长记录和可变长记录两种。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jnNuQ8TB-1675238575023)(images/OS/image-20221020225927805.png)]

顺序文件:文件中的记录一个接一个地顺序排列(逻辑上),记录可以是定长的或可变长的。各个记录在物理上可以顺序存储或链式存储

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SYcdDYd2-1675238575023)(images/OS/image-20221020221246471.png)]

索引表本身是定长记录的顺序文件。因此可以快速找到第i个记录对应的索引项。

可将关键字作为索引号内容,若按关键字顺序排列,则还可以支持按照关键字折半查找

每当要增加/删除一个记录时,需要对索引表进行修改。由于索引文件有很快的检索速度,因此主要用于对信息处理的及时性要求比较高的场合。

另外,可以用不同的数据项建立多个索引表。如:学生信息表中,可用关键字“学号”建立一张索引表。也可用“姓名”建立一张索引表。这样就可以根据“姓名”快速地检索文件了。(Eg:SQL就支持根据某个数据项建立索引的功能)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XgjIArg6-1675238575024)(images/OS/image-20221020221515659.png)]

索引顺序文件是索引文件和顺序文件思想的结合。索引顺序文件中,同样会为文件建立一张索引表,但不同的是:并不是每个记录对应一个索引表项,而是一组记录对应一个索引表项。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mmL2cDo6-1675238575024)(images/OS/image-20221020221605842.png)]

若一个顺序文件有10000个记录,则根据关键字检索文件,只能从头开始顺序查找(这里指的并不是定长记录、顺序结构的顺序文件),平均须查找5000个记录

若采用索引顺序文件结构,可把10000个记录分为√10000=100组,每组100个记录。则需要先顺序查找索引表找到分组(共100个分组,因此索引表长度为100,平均需要查50次),找到分组后,再在分组中顺序查找记录(每个分组100个记录,因此平均需要查50次)。可见,采用索引顺序文件结构后,平均查找次数减少为50+50=100次

5.1.3 文件控制块

文件控制块(FCB)是用来存放控制文件需要的各种信息的数据结构,FCB实现了文件名和文件之间的映射,使用户(用户程序)可以实现“按名存取”。一个“文件控制块(FCB)”就是一个文件目录项

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qW0uB2Vz-1675238575024)(images/OS/image-20221020223616792.png)]

FCB中包含了文件的基本信息(文件名、物理地址、逻辑结构、物理结构等),存取控制信息(是否可读/可写、禁止访问的用户名单等),使用信息(如文件的建立时间、修改时间等)。最重要,最基本的还是文件名、文件存放的物理地址

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0jR9WQ0u-1675238575024)(images/OS/image-20221020224939421.png)]

5.1.4 目录结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-df4p0h2W-1675238575025)(images/OS/image-20221020223734017.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6JVep5MO-1675238575025)(images/OS/image-20221020223842505.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DVYf4vsw-1675238575025)(images/OS/image-20221020223916659.png)]

  • 绝对路径

用户(或用户进程)要访问某个文件时要用文件路径名标识文件,文件路径名是个字符串。各级目录之间用“/”隔开。从根目录出发的路径称为绝对路径。例如:自拍.jpg的绝对路径是“/照片/2015-08/自拍.jpg”

系统根据绝对路径一层一层地找到下一级目录。刚开始从外存读入根目录的目录表;找到“照片”目录的存放位置后,从外存读入对应的目录表;再找到“2015-08”目录的存放位置,再从外存读入对应目录表;最后才找到文件“自拍.jpg”的存放位置。整个过程需要3次读磁盘I/O操作

  • 当前目录/绝对路径

很多时候,用户会连续访问同一目录内的多个文件(比如:接连查看“2015-08”目录内的多个照片文件),显然,每次都从根目录开始查找,是很低效的。因此可以设置一个**“当前目录”**。

例如,此时已经打开了“照片”的目录文件,也就是说,这张目录表已调入内存,那么可以把它设置为“当前目录”。当用户想要访问某个文件时,可以使用从当前目录出发的“相对路径”。

在Linux中,“.”表示当前目录,因此如果“照片”是当前目录,则”自拍.jpg”的相对路径为:“./2015-08/自拍.jpg”。从当前路径出发,只需要查询内存中的“照片”目录表,即可知道”2015-08”目录表的存放位置,从外存调入该目录,即可知道“自拍.jpg”存放的位置了。

可见,引入**“当前目录”“相对路径”**后,磁盘I/O的次数减少了这就提升了访问文件的效率

树形目录结构可以很方便地对文件进行分类,层次结构清晰,也能够更有效地进行文件的管理和保护。但是,树形结构不便于实现文件的共享。为此,提出了“无环图目录结构”。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-04XmKrnv-1675238575025)(images/OS/image-20221020224624842.png)]

可以用不同的文件名指向同一个文件,甚至可以指向同一个目录(共享同一目录下的所有内容)。

需要为每个共享结点设置一个共享计数器,用于记录此时有多少个地方在共享该结点。用户提出删除结点的请求时,只是删除该用户的FCB、并使共享计数器减1,并不会直接删除共享结点。

只有共享计数器减为0时,才删除结点

注意:共享文件不同于复制文件。在共享文件中,由于各用户指向的是同一个文件,因此只要其中一个用户修改了文件数据,那么所有用户都可以看到文件数据的变化。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zWYMqcTY-1675238575026)(images/OS/image-20221020225304010.png)]

5.2 文件系统实现

5.2.1 文件系统层次结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ouTiqwJa-1675238575026)(images/OS/image-20221021010832365.png)]

用一个例子来辅助记忆文件系统的层次结构:假设某用户请求删除文件“D:/工作目录/学生信息.xlsx”的最后100条记录。

  1. 用户需要通过操作系统提供的接口发出上述请求——用户接口
  2. 由于用户提供的是文件的存放路径,因此需要操作系统一层一层地查找目录,找到对应的目录项——文件目录系统
  3. 不同的用户对文件有不同的操作权限,因此为了保证安全,需要检查用户是否有访问权限——存取控制模块(存取控制验证层)
  4. 验证了用户的访问权限之后,需要把用户提供的“记录号”转变为对应的逻辑地址——逻辑文件系统与文件信息缓冲区
  5. 知道了目标记录对应的逻辑地址后,还需要转换成实际的物理地址——物理文件系统
  6. 要删除这条记录,必定要对磁盘设备发出请求——设备管理程序模块
  7. 删除这些记录后,会有一些盘块空闲,因此要将这些空闲盘块回收——辅助分配模块
5.2.2 文件存取控制

文件保护、操作权限

5.3 磁盘组织与管理

5.3.1 磁盘的结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-556QGDP3-1675238575026)(images/OS/image-20221021010145520.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2hSdLl1v-1675238575027)(images/OS/image-20221021010711966.png)]

5.3.2 磁盘调度算法
5.3.2.1 一次读写磁盘时间

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z6SaiZjx-1675238575027)(images/OS/image-20221021012847433.png)]

**寻找时间(寻道时间)**TS:在读/写数据前,将磁头移动到指定磁道所花的时间。

  1. 启动磁头臂是需要时间的。假设耗时为s;

  2. 移动磁头也是需要时间的。假设磁头匀速移动,每跨越一个磁道耗时为m,总共需要跨越n条磁道。则:

寻道时间TS=s+m*n

延迟时间TR:通过旋转磁盘,使磁头定位到目标扇区所需要的时间。设磁盘转速为r(单位:转/秒,或转/分),则

平均所需的延迟时间TR=(1/2)*(1/r)=1/2r

传输时间Tt:从磁盘读出或向磁盘写入数据所经历的时间,假设磁盘转速为r,此次读/写的字节数为b,每个磁道上的字节数为N。则:

传输时间Tt=(1/r) (b/N)=b/(rN)*

总的平均存取时间Ta=TS+1/2r+b/(rN)

5.3.2.2 先来先服务算法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EYpJmHPY-1675238575027)(images/OS/image-20221021013310295.png)]

5.3.2.3 最短寻找时间优先算法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E54rdyYb-1675238575027)(images/OS/image-20221021013338034.png)]

5.3.2.4 扫描算法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wTlOEwEH-1675238575028)(images/OS/image-20221021013416493.png)]

5.3.2.5 循环扫描算法

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vsSj6Wy9-1675238575028)(images/OS/image-20221021013446219.png)]

5.3.3 廉价冗余磁盘阵列
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值