《操作系统》——文件管理(上)

《操作系统》——文件管理(上)

一、文件系统基础

(一)初识文件管理

  • 计算机中存放了各种各样的文件,一个文件有哪些属性?
  • 文件内部的数据该怎样组织?
  • 文件之间该如何组织?
  • 从下往上看(操作系统上层是用户),OS应提供哪些功能,才能方便用户、应用程序使用文件?
  • 从上往下看(操作系统下层是裸机纯硬件),文件该如何存放在外存(磁盘上)?
    请添加图片描述

1、文件的属性

  • 文件名:不允许重复
  • 标识符:标识符是唯一标识文件的属性(用户不可见)
  • 类型:.txt
  • 位置:文件存放路径(用户用)、外存中的地址(操作系统用)
  • 大小
  • 创建时间、修改时间
  • 文件所有者
  • 保护信息
    请添加图片描述

2、文件内部的数据应该怎样组织起来

请添加图片描述

3、文件之间该如何组织

请添加图片描述

4、OS向上层提供哪些功能

请添加图片描述
请添加图片描述

5、从上往下看,文件应该如何放在外存

外存磁盘也分为块——磁盘块
如何给文件分配磁盘块?如何管理空闲磁盘块?——文件的物理结构会讨论
请添加图片描述

请添加图片描述

6、其他需要OS实现的文件管理功能

  • 文件共享
  • 文件保护
    请添加图片描述

(二)文件的逻辑结构(文件内部的组织)

文件操作的实现与文件的逻辑结构和物理结构有关
请添加图片描述

1、无结构文件(流式文件)

2、有结构文件(记录式文件)

每行是一个记录,每列是一个数据项,每条记录有一个数据项可作为关键字

请添加图片描述
又可以分为定长记录和可变长记录两种
请添加图片描述

1)顺序文件
  • 可变长/定长
  • 串结构/顺序结构(记录之间是否有序)
  • 顺序存储/链式存储(物理上)

请添加图片描述

  • 是否能够随机存取?
  • 能否快速找到某个关键字对应的记录存放位置?
    请添加图片描述
2)索引文件
  • 为了弥补不定长顺序文件的缺点:不能随机存储,不能快速找到
  • 索引文件本身是定长记录的顺序文件,所以支持随机存取,索引表项按照顺序存放,可以实现快速存取(折半查找)
    请添加图片描述
3)索引顺序文件
  • 索引文件的缺点:索引表会很大,空间利用率低
  • 先给记录分组,一组记录对应一个索引项(索引表的一行)
  • 每个节点是顺序文件(串结构)
  • 索引表项是串结构,无序请添加图片描述
    表长100,平均查找次数=(1+表长)/2=50

请添加图片描述
如果次数还是多——建立多极索引表
请添加图片描述
请添加图片描述

(三)文件目录(文件之间的组织)(文件夹)

1、文件控制块(实现文件目录的关键数据结构)

  • 文件目录是一个有结构文件,每一个记录对应一个文件控制块(FCB),也是一个文件目录项
  • 前情:有结构文件,每一行是一个记录;例如,如果该文件是用作索引表,那么每个记录也叫索引表项;如果该文件是用作文件目录,那么每一个记录即叫文件控制块,也叫文件目录项;在内存管理中,页表中每一行也叫页表项
  • 文件目录也是文件,存放在磁盘块里
  • FCB文件控制块的集合——文件目录
  • FCB的作用:实现按名存取
    请添加图片描述
    对目录的一些操作:
    请添加图片描述

2、目录结构

1)单级目录结构

不允许文件重名
请添加图片描述

2)两级目录结构

主文件目录+用户文件目录

请添加图片描述
缺点:用户不能对自己的文件分类

3)多级目录结构(树形目录结构)

用路径名标识符标识文件
绝对路径:从根目录开始找到文件
相对路径:从当前目录出发找到文件
请添加图片描述
请添加图片描述
但树形结构不利于文件共享,为此引出无环图目录结构

4)无环图目录结构

不同目录可以指向同一个文件或目录,实现文件共享,设置共享计数器
请添加图片描述

3、索引结点(对文件控制块的优化)

让目录表“瘦身”,除了文件名,都放在一个索引结点中,让目录表瘦身,以提升效率
每个磁盘块能存放的目录系增多,所以平均读入磁盘块数减少,I/O次数减少,效率增加
请添加图片描述
请添加图片描述

什么时候文件目录项/索引结点要调入内存?
找到文件名后,把索引结点调入内存,再寻找该文件在外存的位置,再调入该文件

(四)文件的物理结构(对非空闲磁盘块的管理)

不同的物理结构,文件目录存储的数据项不一样,所以每种分配方式要注意目录需要记录哪些内容
请添加图片描述
请添加图片描述

文件块、磁盘块

类似于内存管理中,把进程的逻辑地址空间分页(逻辑地址=页号+块内地址),存放到内存块中,
在外存管理中,把文件的逻辑地址空间分块(逻辑地址=逻辑块号+块内地址),存放到磁盘块中
且外存块(磁盘块)与内存块大小一致,便于I/O操作

文件的逻辑地址、物理地址

关键问题:操作系统如何把文件逻辑地址(逻辑块号,块内地址)映射为物理地址(物理块号,块内地址)
块内地址类似于偏移地址,只需要转换块号即可
请添加图片描述

请添加图片描述

1、连续分配

逻辑块号——>物理块号
优点:

  1. 可以随机访问
    请添加图片描述
  2. 磁头移动距离短,移动时间短,顺序读写速度快
    请添加图片描述
    缺点
  3. 不方便拓展
  4. 空间利用率低,空闲块无法被利用,磁盘碎片,但可以用紧凑

请添加图片描述
请添加图片描述
请添加图片描述

2、链接分配

1)隐式链接
  1. 只支持顺序访问,不支持随机访问
    如何实现逻辑块号到物理块号的转变

请添加图片描述
2. 支持扩展文件,不会有碎片

请添加图片描述

2)显式链接

把指针显示地存放在文件分配表FAT中
文件末尾指针-1
一个 磁盘对应一个FAT,开机时读入内存
FAT常驻内存,每个表项长度相同
因为FAT在内存,所以访问物理块不必读磁盘
物理块号可以隐含
请添加图片描述
可以顺序访问,也可以随机访问,无外部碎片,方便拓展
如何实现逻辑块号到物理块号的转变
请添加图片描述

请添加图片描述
默认隐式链接

3、索引分配

为每个文件建立索引表,记录了文件的各个逻辑块对应的物理块
类似于内存管理中的页表——建立逻辑页面到物理页之间的映射关系
索引表存放在磁盘中的索引块,文件数据存放在磁盘中的数据块
根据目录中的索引块,找到磁盘中的索引表,根据索引表找到各个逻辑块对应的物理块号
索引表的逻辑块号可以隐含

如何实现逻辑块号到物理块号的转变
请添加图片描述

请添加图片描述
如果一个磁盘块放不下一个文件的索引表,该怎么办?

1)链接方案

请添加图片描述

2)多层索引(类似于多级页表)

访问一个目标磁盘块需要几次访问磁盘
请添加图片描述

3)混合索引

请添加图片描述
请添加图片描述
请添加图片描述

(五)文件的物理结构VS逻辑结构

  • 逻辑结构是用户看到的,用户自己建立的结构,用户看到的文件都是连续的,索引关系也是用户自己建立的
  • 物理结构是操作系统看到的,无论用户建立什么结构的文件,操作系统都把文件分城小块,分配到磁盘块中,并且实现逻辑地址到物理地址的转换

请添加图片描述
请添加图片描述

  1. 文件的逻辑结构(文件内部)——索引结构——索引关系
  2. 文件的逻辑结构(文件之间)——目录(也是文件)——每个目录项是FCB——存放在磁盘
    ——引入索引结点为了让目录表瘦身——索引结点存放在外存,需要时调入内存
  3. 文件的物理结构(如何存放在磁盘)——连续分配
    ——链接分配——显式链接——FAT文件分配表(一个磁盘一张)——存放在内存
    ——索引分配——为每个文件建立索引表(一个文件一张)——存放在磁盘的索引块

文件目录也是文件,用的时候调入内存,访问磁盘的意思也是把磁盘块调入内存,就是I/O工作

(六)文件存储空间管理(对空闲磁盘块的管理)

1、存储空间的划分与初始化

磁盘分为不同的文件卷,每个文件卷分为目录区和文件区
可以由多个磁盘组成一个文件卷
请添加图片描述

2、几种管理方法(类似于内存的动态分区分配)

  • 用什么方式记录、组织空闲块?

  • 如何分配空闲磁盘块?不同的算法(首次适应、最佳适应、最坏适应)

  • 如何回收空闲磁盘块?

1)空闲表法

请添加图片描述

2)空闲链表法

请添加图片描述

(1)空闲盘块链——以盘块为单位

请添加图片描述

(2)空闲盘区链——以盘区为单位

请添加图片描述

3)位示图法

请添加图片描述
请添加图片描述

4)成组链接法

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

(七)文件的基本操作(操作系统向上提供的几个基本功能)

调用某种系统调用
请添加图片描述

1、创建文件

请添加图片描述

2、删除文件

请添加图片描述

3、读文件

请添加图片描述

4、写文件

5、打开文件

两种打开文件表
把索引号
请添加图片描述
请添加图片描述

6、关闭文件

请添加图片描述
请添加图片描述

(八)文件共享

复制和共享的区别

请添加图片描述

1、基于索引结点的共享方式(硬链接)

请添加图片描述

2、基于符号链的共享方式(软连接)

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

(九)文件保护

1、口令保护

请添加图片描述

2、加密保护

请添加图片描述

3、访问控制

每个文件有一个访问控制吧ACL
记录,各个用户可以对文件执行哪些操作
请添加图片描述
精简访问控制表——把用户分组

请添加图片描述请添加图片描述

(十)文件系统的层次结构

用户接口:文件的操作
文件目录系统:文件目录
存取控制模块:文件保护
逻辑文件系统与文件信息缓冲区:文件逻辑结构
物理文件系统:文件物理结构
辅助分配模块:文件存储空间管理
设备管理模块:磁盘管理
请添加图片描述
请添加图片描述

(十一)文件系统实例

请添加图片描述
请添加图片描述
请添加图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值