操作系统(五)| 文件系统上 结构 存取方式 文件目录 检索

系列文章如下

学习过程中一定要有系统观念(知识框架,每一章开头都会有一个思维导图),知道目前自己在学习的是哪一板块的内容,和前面有什么样的联系

操作系统的很多知识点前后都是联系非常紧密的,去一点一点理解而不是死记硬背会学习的非常愉快的!!!

操作系统相关文章

概述,初步了解操作系统功能及其一些概念

操作系统(一)| 概述 作业 批处理 OS运行环境要求 基本特征-CSDN博客

进程管理部分,重头戏

操作系统(二 )| 进程控制 进程状态 进程描述 进程控制 进程同步互斥-CSDN博客

操作系统(三)| 进程管理上 进程状态 同步 互斥-CSDN博客

操作系统(三)| 进程管理下 经典进程问题分析 线程 死锁-CSDN博客

内存管理部分

操作系统(四)| 内存管理 实存储器管理 虚拟存储器管理 分页 分段式管理-CSDN博客

文件系统管理部分

操作系统(五)| 文件系统上 结构 存取方式 文件目录 检索-CSDN博客

操作系统(六)| 文件系统下 文件使用 共享 保护-CSDN博客

设备管理部分

操作系统(七)| 设备管理-- 端口 驱动程序 基本I/O控制 磁盘I/O-CSDN博客



在这里插入图片描述

1 文件系统概述

为什么引入文件系统

​ 长期保存(大量的)数据

​ 方便用户使用

文件是有名字的记录在外存中的一组有逻辑意义的数据项序列

什么是文件系统

文件系统是OS中用来管理文件的那一部分软件

文件系统功能

统一管理文件的存储空间,实施存储空间的分配与回收
实现文件信息的共享,提供文件的保护和保密措施
实现文件的按名访问
访问的透明性:用户不关心文件的物理位置和存储结构
向用户提供一个方便使用的接口,提供对文件系统操作的命令
提供与I/O的统一接口

文件分类:

Unix系统将文件分为3类:
普通文件(regular):ASCII或二进制文件
目录文件(directory)
特殊文件:设备文件,管道,套接字(socket),符号链接等

2 文件的结构与存取方式

文件是存在磁盘上的

2.1 磁盘

磁盘有扇片 磁道 扇区

扇区——磁盘最小可寻址单元

簇——存储块,固定数量的扇区

  • 平均存取时间

​ T=平均寻道时间+平均旋转等待时间+数据传输时间(有时候忽略不计)

​ 其中

​ 平均寻道时间——磁头寻找到指定磁道所需要的平均时间(大约5ms)

​ 平均旋转等待时间——指定扇区旋转到磁头下方所需要的平均时间(约4-6ms)

  • 磁盘响应时间=平均存取时间+排队时间+控制器时间

在这里插入图片描述

注意想明白这里的0.5的来源

2.2 文件的物理结构

2.2.1 连续结构

文件的数据存放在若干连续的物理块中
在这里插入图片描述

优点:

简单,只要记住首块的地址和文件长度即可
支持顺序存取和随机存取
顺序存取速度快
所需的磁盘寻道时间最少

缺点:

不利于文件的动态增长
若预留空间:浪费,而且预先不知道文件的最大长度
否则需要重新分配和移动
不利于文件内容的插入和删除
存在外部碎片问题

2.2.2 链式结构

一个文件的数据存放在若干不连续的物理块中,各块之间通过指针连接,
每个物理块指向下一个物理块

在这里插入图片描述

优点

提高了磁盘空间利用率
不存在外部碎片问题
有利于文件的插入和删除
有利于文件的动态扩充

缺点:
随机存取相当缓慢
需要更多的寻道时间
链接指针占用一定的空间

改进变形

FAT表

文件分配表FAT的一种实现:
磁盘的每个分区包含一个FAT,分区中的每个盘块在其中占有1项(以块号为索引),指出文件中下一块的块号。
在目录项中包含文件首块的块号。

在这里插入图片描述

2.2.3 索引结构

一个文件的数据存放在若干不连续的物理块中,系统为每个文件建立一个专用数据结构–索引表。
索引表存放逻辑块号与物理块号的对应关系
一个索引表就是磁盘块地址(块号)数组,其中第i个条目存放的是逻辑块号i对应的物理块号
文件目录的目录项中指出索引表的物理地址

在这里插入图片描述

优点:保持了链接结构的优点,又避免了其缺点
既能顺序存取,又能随机存取
能满足文件动态增长、插入、删除的要求
能充分利用外存空间
缺点
索引表本身带来了系统开销

UNIX文件系统采用的是多级混合索引结构。
每个文件的索引表为13个索引项
最前面10项直接登记存放文件数据的物理块号(直接寻址)
如果文件大于10块,则利用第11项指向一个物理块,该块中最多可放256个文件物理块的块号(一次间接寻址)。对于更大的文件还可利用第12和第13项作为二次和三次间接寻址
UNIX中采用了三级索引结构后,文件最大可达16M个物理块

索引表的组织方式

如果文件很大,索引表较大,超过了一个物理块,就必须考虑索引表的组织方式,即怎么去存储索引表

索引表的组织方式:
(1)连续方式
索引表占用多个连续的盘块
(2)链接方式
索引表按照链式结构组织,占用多个不连续的盘块
(3)多级索引(多重索引)
例如,二级索引:将一个大文件的所有索引表(二级索引)的地址放在另一个索引表(一级索引)中
此外,还有三级索引等。

题目

设每个盘块4kB,每个盘块号4B,则采用3次间址可表示的文件最大长度为 [4T] B。

2.3 文件的存取方式

主要有顺序存取和随机存取两种。
1 顺序存取
对文件中的数据按逻辑顺序进行读/写的存取方式
2 随机存取
对文件中的数据按任意顺序进行读/写的存取方式
3 按键(key)存取:如DBMS

还与介质有关

3 文件目录

3.1 基本概念

几个基本的概念

1 文件控制块

文件控制块是操作系统为管理文件而设置的数据结构,存放了为管理文件所需的所有相关信息(文件属性)

基本信息:文件的名字、地址(起始物理块号)、长度、结构(逻辑结构、物理结构)、类型
存取控制信息:文件属主(owner)、存取权限或口令
使用信息:共享计数,文件的建立、修改日期等

2 文件目录

把所有的FCB组织在一起,就构成了文件目录
即文件控制块的有序集合

3 目录项
构成文件目录的项目(目录项就是FCB)

4 目录文件

为了实现对文件目录的管理,通常将文件目录以文件的形式保存在外存,
这个文件就叫目录文件
目录主要是为了系统快速实现“按名访问”而引入的,
查目录是文件系统最频繁的操作,因此目录的合理组织很重要

3.2 目录结构

单级目录结构

为所有文件建立一个目录文件(组成一线性表)
优点:简单,易实现

缺点:
限制了用户对文件的命名(容易出现“命名冲突”)
顺序检索文件时,平均检索时间长
不利于对文件的共享

多级目录结构

对二级目录简单扩充可得三级或三级以上的多级目录结构,
即允许每一级目录中的FCB要么指向文件,要么指向下一级子目录。
这是当今主流OS普遍采用的目录结构
优点:
层次结构清晰,便于管理和保护;有利于文件分类;
能较好地避免重名问题;提高了文件检索速度;有利于访问权限的控制

3.3 文件目录检索

访问文件时,必须首先确定读写文件的地址,需要下列2步:
(1)目录检索:根据文件名,查目录,确定文件的起始地址。
(2)文件寻址:确定所要访问文件内容的起始位置(地址)。

3.3.1 目录检索

文件的“按名存取”是通过查目录实现的,系统按照文件的路径名检索
基本的目录检索技术主要有:
线性检索法
Hash方法
为了加快目录检索,许多系统引入当前目录(工作目录)、相对路径名等。

文件寻址

根据目录项(FCB)中记录的文件物理地址等信息,
求出文件的任意记录或字节在存取介质上的地址
文件寻址与文件的物理结构和逻辑结构以及设备的物理特性有关
文件的内容是以块为单位存储的。
但存取文件时,对于记录式文件,是以逻辑记录为单位提出存取要求的,因此,
存储介质上的物理块长度与逻辑记录的长度是否匹配直接影响到对文件的寻址

3.4 文件目录的实现

当查找文件时候,需要依次将存放目录的物理块装入内存,逐一比较文件名,直到找到为止

例如:文件说明占128B,每块512B,则每块可存放4个目录项

设目录文件占用的盘块数是N个,则要找到一个目录项,
平均需要读入多少个盘块?(N+1)/2块

把文件说明信息(FCB)都放在目录项中的缺点:
查找文件缓慢,因为目录项较大
文件目录平常放在外存中,当文件很多时,可能占用大量的外存物理块

但实际上我们文件检索只需要文件名,不需要那么多其他的信息

所以我们将文件说明分成两部分 把FCB分成两部分

1 符号目录项——包括文件名,文件号

2 基本目录项——除文件名以外的所有信息

目录项分解法的典型实现

1 符号文件目录+基本文件目录

2 目录项 +I 节点

Unix/Linux采用此方法,它把符号目录项称为目录项,而把基本目录项称为I节点(Index node,索引节点),这样,目录项中的文件号就是I节点号。

举例一个查找过程

一个文件存在根目录下的wang目录下,若获得这个文件的I结点号,需要读几个磁盘物理块

注意 I节点只存储当前目录或者文件的信息!!!

I节点存的物理块号(如果是目录的话,就是目录项的地址,如果是文件的话,则是文件的首地址)!!!

首先根据根目录的I节点号以及内存中的I节点与物理块号的对应关系,可以知道根目录I节点的地址,去读这个地址的内容(第一次读物理块读取),即是获得了根目录的目录项的地址,去读根目录的目录项(第二次物理块读取)可以知道wang对应的I节点物理地址,读wang的I节点地址内容(第三次读取)可以知道wang的目录项地址,读wang目录项地址就可以获得文件a.c的I节点号(第四次读取)

如果是索引的话 获得的地址不是物理块地址,而是索引表地址,所以需要每一个获取地址都增加一次,总共六次

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值