操作系统 第六章 文件管理

操作系统 第六章 文件管理本文深入探讨了文件系统的管理机制 包括文件的定义 逻辑结构 存取方式 目录结构 共享 保护与控制等内容

大家好,欢迎来到IT知识分享网。

目录

0x00 文件的定义

0x01 文件的逻辑结构

0x02 文件的存取方式

0x03 文件的目录

文件目录实现的功能:

文件目录结构分类:

1.一级目录

2.二级目录

3.多级目录

0x04 文件共享

(1)基于索引结点的共享方式

<1>动态共享:

内存INode 和 磁盘iNode 之间的关系:

系统打开文件表:

用户(用户进程)打开文件表:

0x05 文件保护

0x06 文件控制

0x07 文件的物理结构

全章的重点!

#文件系统的一致性检查

0x08 外存空间管理

#1.空闲区表

#2.位示图

#3.空闲块链:

#4.成组链接法

0x09 磁盘管理

#循环电梯调度算法

#信息的优化分布:


0x00 文件的定义

文件的组成部分:

1.文件体:文件的真实内容

2.文案说明(FCB ):操作系统为了管理文件所用到的信息

文件系统:

0x01 文件的逻辑结构

(1)无结构的 流式文件:文件体为字节流,利用读写指针指出下一个要访问的字符。

(2)有结构的 记录式文件: 文件体由若干记录组成

例如:excel表

分为:定长记录文件 和变长记录文件

 定长记录支持 顺序存取 和随机存取

变长记录支持顺序存取 ,但是随机存取困难

0x02 文件的存取方式

顺序存取

随机存取(直接存取):用户可以随意存取文件中的任何一个记录

例如 数组 就支持 随机存取 arr[3] ,这是因为每个数组项 的大小相同。

所以,流式文件 和 定长记录文件 容易支持这种 随机存取

0x03 文件的目录

文件目录:各种文件的FCB的集合

将文件目录存在 磁盘上就构成了一个目录文件,说白了就是 文件夹。

胖目录和瘦目录:

胖目录:文件名和文件说明绑在一起

瘦目录:文件名 和 文件说明(inode)分离

操作系统 第六章 文件管理

文件目录实现的功能:

1.实现按名存取

2.提高对目录的检索速度

3.实现文件共享

4.解决文件重名问题

文件目录结构分类:

1.一级目录

操作系统 第六章 文件管理

2.二级目录

每个用户都有自己的用户文件目录

然后建立一个主文件目录,存每个用户的 用户文件目录的名称和地址

操作系统 第六章 文件管理

优点:

1.树形结构,提高了检索目录的速度

2.在不同的用户目录下 可以有相同的文件名

3.不同用户可以访问系统中同一个共享文件,例如上图中test指向同一个

文件地址。

缺点:不能对文件分类管理

3.多级目录

操作系统 第六章 文件管理

操作系统 第六章 文件管理

操作系统 第六章 文件管理

问题:查找/usr/dir需要启动磁盘几次

2次。第一启动磁盘,将/下的文件目录 装入内存中

第二次启动磁盘,将/usr/下的文件目录装入内存中

这个问题,说白了就是问 要打开几次文件夹。

0x04 文件共享

为什么要共享文件?

就是为了只保留一个文件副本,节约存储空间。

文件名 和文件说明(inode)分离有利于实现 文件共享

(1)基于索引结点的共享方式

<1>动态共享:

往往出现在进程之间共享文件(多个进程之间可以以不同的或者相同的方式同时打开同一个文件)时,

进程终止则共享终止。

打开文件机构:

文件打开后 由 “打开文件机构管理”,关闭时退出 打开文件机构

“打开文件机构”的结构:

  1. 内存文件控制块(内存iNode)
  2. 系统打开文件表
  3. 用户打开文件表
  4. 磁盘iNode(内存iNode只是 磁盘iNode一个副本)

 

操作系统 第六章 文件管理

注意:

i_count 记录该文件被多少个进程共享

i_number 指向 该内存INode 对应的磁盘INode的地址

i_p 或者 i_addr 指向 该文件 在磁盘中的地址

磁盘iNode

操作系统 第六章 文件管理

内存INode 和 磁盘iNode 之间的关系:

磁盘INode存储在磁盘上

内存INode存储在内存上

当打开文件时,如果发现内存中不存在该文件的内存INode,就会将磁盘中对应的INode

拷贝一份到内存作为内存INode,如果打开文件过程中,内存INode被修改,那么当关闭

文件时,修改的内存INode将会被写入磁盘INode

当我们需要读写文件时,直接查内存INode就可以知道文件在磁盘中地址。

系统打开文件表:

f_inode 指向该文件的内存inode,

该文件的内存inode 中的i_addr 指向 磁盘中的文件

操作系统 第六章 文件管理

用户(用户进程)打开文件表:

用户打开文件表的表项 指向 系统打开文件表

系统打开文件表的inode 指向 内存inode

内存inode 指向 磁盘中的文件

操作系统 第六章 文件管理

例题:

我们在编程时, open()函数返回的文件描述符, 其实就保存在 用户进程

打开文件表中,一个进程打开多个文件就得到多个 文件描述符,这些描述

符,就规规矩矩的存在 该进程的 用户打开文件表中

文件描述符 并不是 直接文件地址

而是指向该文件对应的 系统打开文件表

操作系统 第六章 文件管理

由上图可以看出:用户进程打开文件表 由 进程自己维护, 可以有多个

而系统打开文件表只能有一个,由操作系统维护。

因为两个进程的操作方式不同,所以系统打开文件表中就需要有两个表项

操作系统 第六章 文件管理

如果两个进程都是以读的方式打开同一个文件,因为操作方式相同

那么系统打开文件表中 只需要有一个表项,该表项的f_count =2

操作系统 第六章 文件管理

<2>静态共享

一个文件同时属于多个文件目录项(例如被多个用户共享)

并且这种关系不管文件此时是否在被使用,都存在。

硬连接共享:

两个文件目录中文件名 都指向 同一个INode,

INode指向 文件在磁盘中的地址。

例如下图中ls 和 usr 指向的都是INode 10

此时di_nlink = 2

操作系统 第六章 文件管理

硬链接共享的缺点:

1.文件主删除文件困难,文件主删除的只是链接,不见得能删除文件本身

操作系统 第六章 文件管理

2.文件共享不能跨文件系统

(2)软链接(利用符号链实现文件共享)

下图中INode 11 指向的文件体 中保存的内容 其实 INode 10指向的文件的 文件路径

这样一来INode 10 和INode 11 的count 都是 1,文件主可以直接删除INode 对应的文件。

操作系统 第六章 文件管理

操作系统 第六章 文件管理

操作系统 第六章 文件管理

上题中 的 文件的引用计数 指的就是该文件名 指向的INode  的 count 计数。

0x05 文件保护

操作系统 第六章 文件管理

缺点:用户如果很多的话,表会非常大

操作系统 第六章 文件管理

操作系统 第六章 文件管理

0x06 文件控制

操作系统 第六章 文件管理

操作系统 第六章 文件管理

 操作系统 第六章 文件管理

0x07 文件的物理结构

 

将磁盘分成若干个物理块,

将文件分成若干个相同大小的逻辑块

将逻辑块装入 物理块中

操作系统 第六章 文件管理

几种常见的物理存储方式:

1.连续存储:

逻辑上连续的逻辑块 放到编号连续的 物理块上

操作系统 第六章 文件管理

2.链接结构:

操作系统 第六章 文件管理

缺点:

可靠性不好,如果有一个磁盘块坏了,后面其他的文件块就找不到了

不能随机访问,比如从链表头开始往下找。

操作系统 第六章 文件管理

3.索引结构:

操作系统 第六章 文件管理

操作系统 第六章 文件管理

存在的问题:

如果一个物理块 大小为1K(1024字节) ,一个索引表项 3字节

那么一个物理块只能 放341个表项,对应341个物理块 ,对应341K 也就是说如果一个

文件的大小大于341K,那么它生成的表项 将 不能装入一个 物理块中。

操作系统 第六章 文件管理

解决方法:

(1)将索引表 以链表的形式组织起来

操作系统 第六章 文件管理

(2)多级索引方式

操作系统 第六章 文件管理

unix系统采用的文件物理结构:三级索引结构

操作系统 第六章 文件管理

unix 中分配一个 文件的文件索引表的大小只有40个字节,一个表项 3个字节

也就说只能 有13个表项

操作系统 第六章 文件管理

全章的重点!

操作系统 第六章 文件管理

一个磁盘数据块 (256/4) = 64 个表项

4*256 + 2 * 64 * 256 + 1*64 *64 *256 = 1057KB

操作系统 第六章 文件管理

操作系统 第六章 文件管理

冲突: 多个值对应同一个键

拉链法: 将对应同一个键的值用链表串起来

#文件系统的一致性检查

 

操作系统 第六章 文件管理

表一中:1表示 该块正在使用

表二中:1表示该块处于空闲状态

所以,正常情况下 不能一个物理块 既是空闲 又 在使用。

下图中,物理块2,即没有在使用 又 不是空闲状态, 说明该物理块没有被登记,即已经丢失

操作系统 第六章 文件管理

上图中第5块,两张表中都是1,表一中的1表示 该物理块 正在被使用

表2中的块表示 该物理块 可以被 分配给 其他文件,这样就可能导致两个文件同时向

该物理块写入数据。

操作系统 第六章 文件管理

0x08 外存空间管理

文件系统 对外存 空间的管理: 实际上 就是 对空闲块的组织和管理问题

常用的空闲空间管理方法:

1.空闲区表

2.位示图

3.空闲块链

#1.空闲区表

操作系统 第六章 文件管理

#2.位示图

操作系统 第六章 文件管理

操作系统 第六章 文件管理

例题:

注意:从1开始编号

操作系统 第六章 文件管理

操作系统 第六章 文件管理3

#3.空闲块链:

操作系统 第六章 文件管理

#4.成组链接法

空闲链表法导致 链表很长, 一块丢失就可能造成 整个链条断裂,不利于维护

成组链接法,先将空闲块100块分成一组,然后每个组用链表链接起来。

(每组的第一个空闲块 用于记录下一组的 物理盘块号 和 本组的空闲块数)

操作系统 第六章 文件管理

空闲盘块号栈:这个要读入内存

操作系统 第六章 文件管理

分配算法:

首相将一组空闲块 读入 到 内存中的 空闲盘块号栈中

当系统需要 空闲块 时,就从 此栈  pop  一个 元素,该元素指向一个 物理块

如果 栈中只有 一个 元素了,就检查该元素是否为0

如果为0则表示没有空闲块了

否则,就读取该元素指向的 一组空闲块 ,将其push 到 空闲盘块号栈中

操作系统 第六章 文件管理

释放算法:

当系统产生新的空闲块时,

首先看 栈 中空闲块是否小于100,如果是,则将 新的空闲块直接push到栈中即可

否则,说明栈已经满了,因此将栈中现有块 作为一组,存入磁盘,在栈中保留一个指向

该组的元素即可。

操作系统 第六章 文件管理

例题:

操作系统 第六章 文件管理

(1)2+100+100+99= 301

注意:最后一组的0不算空闲盘块,这里问的是空闲盘块数,而不是物理盘块数

每组的第一个空闲盘块也是指向物理盘块的,但是该物理块中保存了下一组的地址 和 空闲盘块的总数

(2)

分配3个空闲盘块,299,300,301

注意:第300块也被分配了

操作系统 第六章 文件管理

操作系统 第六章 文件管理

操作系统 第六章 文件管理

回收5块:

操作系统 第六章 文件管理

操作系统 第六章 文件管理

操作系统 第六章 文件管理

0x09 磁盘管理

操作系统 第六章 文件管理

磁盘高速缓存:

磁盘:

操作系统 第六章 文件管理

磁盘的构造:

一个盘面上下 两个 磁头

要确定一个物理块的地址:

首先要确定 磁头号,然后确定 磁道号,然后确定扇区号

操作系统 第六章 文件管理

磁盘调度算法:

操作系统 第六章 文件管理

数据传输时间可以忽略。

#磁盘移臂调度算法:

操作系统 第六章 文件管理

例如:

操作系统 第六章 文件管理

答案:建议考试时带上计算器

操作系统 第六章 文件管理

#最短寻道时间优先 Shortest Seek Time First

操作系统 第六章 文件管理

#电梯调度算法

#scan算法

操作系统 第六章 文件管理

例如65 ,这时,磁头正在往 0 方向走,虽然65距离53很近,但是需要等很久。

#look算法

到最远请求就折返

#循环电梯调度算法

操作系统 第六章 文件管理

例题:

操作系统 第六章 文件管理

 

操作系统 第六章 文件管理

总结:

操作系统 第六章 文件管理

#旋转调度算法:

当移动臂找到磁道后,移动臂就不动了,依靠磁盘的旋转来找到对应的扇区

操作系统 第六章 文件管理

操作系统 第六章 文件管理

例题:

当移动 臂已经移动到一个磁道后,影响时间花费就只有 访问扇区号 的先后了

操作系统 第六章 文件管理

本地从小到大访问扇区号即可,因为 有两个6号扇区,可以随机选一个先访问。

因为先下压那个磁头并不会造成花费时间的不同,但是没有被选中的那个

就需要下一圈时才能访问了。

操作系统 第六章 文件管理

操作系统 第六章 文件管理

访问顺序:1 2 4 3  或者 13 42

因为第一圈 2 和 3 只能选一个访问,下一个必须留到第二圈访问

操作系统 第六章 文件管理

#信息的优化分布:

磁盘调度算法可以减少访问时间,优化数据的分布 也可以减少访问时间

物理块分布优化

索引节点分布优化

操作系统 第六章 文件管理

磁盘转一周20ms ,一共8个扇区,转过一个扇区需要2.5s

但是磁盘处理一个扇区的信息需要5ms

所以按照第一种信息排布方式,磁头在读取1号扇区后,需要等待5ms才能继续读2号,

但是磁盘这时并不会停下来等5ms,而是会继续转动,这样一来,磁头就不得不等到

磁盘转第二圈才能读取2号扇区。

所以优化为第二种信息分布方式,磁头在读取1号扇区后,5ms中处理信息的时间 正好

可以用来滑过 4,7两个扇区。

优化方法:处理信息时间能转几个扇区,就在相邻扇区之间间隔几个扇区

第五章测试讲解:1:18 5-14

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/130807.html

(0)
上一篇 2025-08-12 18:33
下一篇 2025-08-12 18:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信