本文章基于网课: 2019 王道考研 操作系统
考试复习推荐资料:操作系统复习总结 - 百度文库 (baidu.com)


需要相关电子书的可以关注我的公众号BaretH后台回复操作系统

第一章:操作系统概述
第二章:进程管理
第三章:处理机调度与死锁
第四章:存储器管理
后续章节陆续推出…


五、文件管理

  • 5.1 文件与文件系统
    • 5.1.1 文件的定义
    • 5.1.2 文件的数据组成
    • 5.1.3 文件的属性
    • 5.1.4 文件系统的定义
    • 5.1.5 文件系统操作
    • 5.1.6 文件系统的层次结构
  • 5.2 文件的逻辑结构
    • 5.2.1 无结构文件
    • 5.2.2 有结构文件
    • --- 有结构文件的组织方式
  • 5.3 文件物理结构:外存分配方式
    • -- 基本概念
    • 5.3.1 连续分配方式
    • 5.3.2 链接分配方式
    • 5.3.3 索引分配
  • 5.4 文件目录
    • 5.4.1 文件控制块
    • 5.4.2 目录结构
    • 5.4.3 索引结点
  • 5.5 文件存储空间管理
    • 5.5.1 存储空间的划分与初始化
    • 5.5.2 文件存储空间管理
  • 5.6 文件共享
    • 5.6.1 基于索引结点的共享方式(硬链接)
    • 5.6.2 基于符号链的共享方式(软链接)
  • 5.7 文件保护
    • 5.7.1 口令保护
    • 5.7.2 加密保护
    • 5.7.3 访问控制

文件管理是操作系统提供的功能之一

5.1 文件与文件系统

5.1.1 文件的定义

文件是以计算机硬盘为载体的存储在计算机上的信息集合,可以以文本文档、图片、程序等各种形式存在。

在系统运行时,计算机以进程为基本单位进行资源的调度和分配;而在用户进行的输入、输出中,则以文件为基本单位。大多数应用程序的输入都是通过文件来实现的,其输出也都保存在文件中,以便信息的长期存储及将来的访问。

5.1.2 文件的数据组成

我们从自底向上的方式来定义,文件的组成如下:

  1. 数据项。数据项是文件系统中最低级的数据组织形式,可分为以下两种类型:

    • 基本数据项。用于描述一个对象的某种属性的一个值,如姓名、日期或证件号等,是数据中可命名的最小逻辑数据单位,即原子数据
    • 组合数据项。由多个基本数据项组成
  2. 记录。记录是一组相关的数据项的集合,用于描述一个对象在某方面的属性,如一名考生的报名记录包括考生姓名、出生日期、报考学校代号、身份证号等一系列域
  3. 文件。文件是指由创建者所定义的一组相关信息的集合,逻辑上可分为有结构文件无结构文件两种。在有结构文件中,文件由一组相似的记录组成,如报考某学校的所有考生的报考信息记录,又称记录式文件;而无结构文件则被视为一个字符流,比如一个进制文件或字符文件,又称流式文件

5.1.3 文件的属性

文件具有一定的属性,系统不同,属性也会有所不同,但通常都包括如下属性:

5.1.4 文件系统的定义

当用户将文件用于应用程序的输入、输出时,还希望可以访问文件、修改文件和保存文件等,实现对文件的维护管理,这就需要系统提供一个文件管理系统,操作系统中的文件系统( File system)就是用于实现用户的这些管理要求的

文件系统是操作系统中负责管理和存取文件信息的软件机构,它是由管理文件所需的数据结构和响应的管理软件以及访问文件的一组操作组成

5.1.5 文件系统操作

文件属于抽象数据类型。为了恰当地定义文件,需要考虑有关文件的操作。文件系统提供了一系列系统调用,让我们方便的对文件进行创建重定位删除截断等操作。

1️⃣ 创建文件

2️⃣ 删除文件

3️⃣ 打开文件

打开文件表分为两类,进程的打开文件表和系统的打开文件表:

4️⃣ 关闭文件

5️⃣ 读文件

6️⃣ 写文件

5.1.6 文件系统的层次结构


5.2 文件的逻辑结构

要清晰的了解文件,还得了解文件内部的组成及数据组织方式,也就是文件的逻辑结构,文件的逻辑结构是从用户观点出发看到的文件的组织形式;不同于文件的物理结构是从实现观点出发看到的文件在外存上的存储组织形式,与存储介质的特性有很大关系

5.2.1 无结构文件

5.2.2 有结构文件

根据有结构文件中各条记录的长度是否相等,可分为定长记录可变长记录两种

— 有结构文件的组织方式

有结构文件中,文件由一组相似的记录组成,那么这些记录间应该如何组织存放呢?按记录的组织形式,有结构文件可分为顺序文件、索引文件、索引顺序文件三种

1️⃣ 顺序文件

2️⃣ 索引文件

3️⃣ 索引顺序文件


5.3 文件物理结构:外存分配方式

文件的物理结构即文件数据在物理存储设备上如何分配和组织的,是从实现观点出发看到的文件在外存上的存储组织形式,与存储介质的特性有很大关系

– 基本概念

文件的分配方式分为三种,讲解之前,我们首先需要了解文件块、磁盘块的概念

5.3.1 连续分配方式

优点

缺点

总结

5.3.2 链接分配方式

链接分配采取离散分配的方式,可以为文件分配离散的磁盘块。分为隐式链接显式链接两种

隐式链接

显式链接

5.3.3 索引分配

如何实现文件的逻辑块号到物理块号的转换?

如果一个磁盘块装不下文件的整张索引表怎么解决?

  • 采用 K 层索引结构,且顶级索引表未调入内存,则访问一个数据块只需要 K + 1 次 读磁盘操作


5.4 文件目录

与文件管理系统和文件集合相关联的是文件目录,它包含有关文件的信息如属性、位置和所有权等,这些信息主要由操作系统进行管理。首先我们来看目录管理的基本要求:从用户的角度看,目录在用户(应用程序)所需要的文件名和文件之间提供一种映射,所以目录管理要实现“按名存取”;目录存取的效率直接影响到系统的性能,所以要提高对目录的检索速度;在共享系统中,目录还需要提供用于控制访问文件的信息。此外,文件允许重名也是用户的合理和必然要求,目录管理通过树形结构来解决和实现

前面介绍了文件内部的逻辑结构,下面介绍多个文件之间在逻辑上是如何组织的,这实际上是文件“外部”的逻辑结构的问题

5.4.1 文件控制块

与进程管理一样,为实现目录管理,操作系统中引入了文件控制块的数据结构

文件控制块(FCB)是用来存放控制文件需要的各种信息的数据结构,以实现“按名存取”。FCB的有序集合称为文件目录,一个FCB就是一个文件目录项。为了创建一个新文件,系统将分配一个FCB并存放在文件目录中,成为目录项

5.4.2 目录结构

1️⃣ 单级目录结构

2️⃣ 双级目录结构

3️⃣ 多级目录结构

4️⃣ 无环图目录结构

5.4.3 索引结点


5.5 文件存储空间管理

5.5.1 存储空间的划分与初始化

一般来说,一个文件存储在一个文件卷中。文件卷可以是物理盘的一部分,也可以是整个物理盘,支持超大型文件的文件卷也可由多个物理盘组成

在一个文件卷中,文件数据信息的空间(文件区)和存放文件控制信息FCB的空间(目录区)是分离的。由于存在很多种类的文件表示和存放格式,所以现代操作系统中一般都有很多不同的文件管理模块,通过它们可以访问不同格式的逻辑卷中的文件。逻辑卷在提供文件服务前,必须由对应的文件程序进行初始化,划分好目录区和文件区,建立空闲空间管理表格及存放逻辑卷信息的超级块

5.5.2 文件存储空间管理

文件存储设备分成许多大小相同的物理块,并以块为单位交换信息,因此,文件存储设备的管理实质上是对空闲块的组织和管理,它包括空闲块的组织、分配与回收等问题

1️⃣ 空闲表法

2️⃣ 空闲链表法

将所有空闲盘区拉成一条空闲链,根据构成链所用的基本元素不同,可把链表分成两种形式 空闲盘块链 和 **空闲盘区链 **

空闲盘块链的分配与回收:

空闲盘块链将磁盘上的所有空闲空间以盘块为单位拉成一条链。当用户因创建文件而请求分配存储空间时,系统从链首开始,依次摘下适当数目的空闲盘块分配给用户。当用户因删除文件而释放存储空间时,系统将回收的盘块依次插入空闲盘块链的末尾。这种方法的优点是分配和回收一个盘块的过程非常简单,但在为一个文件分配盘块时可能要重复多次操作

空闲盘曲链的分配与回收:

空闲盘区链将磁盘上的所有空闲盘区(每个盘区可包含若干盘块)拉成一条链。在每个盘区上除含有用于指示下一个空闲盘区的指针外,还应有能指明本盘区大小(盘块数)的信息。分配盘区的方法与内存的动态分区分配类似,通常采用首次适应算法。在回收盘区时,同样也要将回收区与相邻接的空闲盘区合并

3️⃣ 位示图法

位示图利用二进制的一位来表示磁盘中一个盘块的使用情况,磁盘上所有的盘块都有一个进制位与之对应。当其值为“0”时,表示对应的盘块空闲;当其值为“1”时,表示对应的盘块已分配

位示图法的分配与回收:

4️⃣ 成组链接法

空闲表法和空闲链表法都不适用于大型文件系统,因为这会使空闲表或空闲链表太大。UNIX系统中采用的是成组链接法,这种方法结合了空闲表和空闲链表两种方法,克服了表太大的缺点。其大致思想是:把顺序的n个空闲扇区地址保存在第一个空闲扇区内,其后一个空闲扇区内则保存另一顺序空闲扇区的地址,如此继续,直至所有空闲扇区均予以链接。系统只需要保存一个指向第一个空闲扇区的指针。假设磁盘最初全为空闲扇区,其成组链接如图所示。通过这种方式可以迅速找到大批空闲块地址

表示文件存储器空闲空间的“位向量”表或第一个成组链块,以及卷中的目录区、文件区划分信息都需要存放在辅存储器中,一般放在卷头位置,在UNⅨ系统中称为超级块。在对卷中的文件进行操作前,超级块需要预先读入系统空闲的主存,并且经常保持主存超级块与辅存卷中超级块的一致性


5.6 文件共享

文件共享使多个用户(进程)共享同一个文件,系统中只需保留该文件的一个副本。若系统不能提供共享功能,则每个需要该文件的用户都要有各自的副本,会造成对存储空间的极大浪费。现代常用的两种文件共享方法如下图所示:

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

5.6.2 基于符号链的共享方式(软链接)


5.7 文件保护

为了防止文件共享可能会导致文件被破坏或未经核准的用户修改文件,文件系统必须控制用户对文件的存取,即解决对文件的读、写、执行的许可问题。为此,必须在文件系统中建立相应的文件保护机制。

文件保护通过口令保护、加密保护和访问控制等方式实现。其中,口令保护和加密保护是为了防止用户文件被他人存取或窃取,而访问控制则用于控制用户对文件的访问方式。

5.7.1 口令保护

5.7.2 加密保护

5.7.3 访问控制

操作系统学习笔记 第五章:文件管理(王道考研)相关推荐

  1. 《Go语言圣经》学习笔记 第五章函数

    <Go语言圣经>学习笔记 第五章 函数 目录 函数声明 递归 多返回值 匿名函数 可变参数 Deferred函数 Panic异常 Recover捕获异常 注:学习<Go语言圣经> ...

  2. Programming Entity Framework-dbContext 学习笔记第五章

    ### Programming Entity Framework-dbContext 学习笔记 第五章 将图表添加到Context中的方式及容易出现的错误 方法 结果 警告 Add Root 图标中的 ...

  3. 操作系统学习笔记 第六章:设备管理(王道考研)

    本文章基于网课: 2019 王道考研 操作系统 考试复习推荐资料:操作系统复习总结 - 百度文库 (baidu.com) 需要相关电子书的可以关注我的公众号BaretH后台回复操作系统 第一章:操作系 ...

  4. 操作系统学习笔记 第四章:存储器管理(王道考研)

    本文章基于网课: 2019 王道考研 操作系统 考试复习推荐资料:操作系统复习总结 - 百度文库 (baidu.com) 需要相关电子书的可以关注我的公众号BaretH后台回复操作系统 第一章:操作系 ...

  5. 操作系统学习笔记 第三章:处理机调度与死锁(王道考研)

    本文章基于网课: 2019 王道考研 操作系统 考试复习推荐资料:操作系统复习总结 - 百度文库 (baidu.com) 需要相关电子书的可以关注我的公众号BaretH后台回复操作系统 第一章:操作系 ...

  6. 【计算机网络】学习笔记:第五章 传输层【王道考研】

    基于本人观看学习b站王道计算机网络课程所做的笔记,不做任何获利 仅进行交流分享 特此鸣谢王道考研 若有侵权请联系,立删 如果本篇笔记帮助到了你,还请点赞 关注 支持一下 ♡>

  7. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第五章:中级控件

    第 5 章 中级控件 本章介绍App开发常见的几类中级控件的用法,主要包括:如何定制几种简单的图形.如何使用几种选择按钮.如何高效地输入文本.如何利用对话框获取交互信息等,然后结合本章所学的知识,演示 ...

  8. 《Android深度探究HAL与驱动开发》学习笔记----第五章

    第五章 搭建S3C6410开发板的测试环境 开发板是开发和学习嵌入式技术的主要硬件设备. 主要学习了搭建S3C6410开发板的测试环境.首先要了解到S3C6410是一款低功耗.高性价比的RISC处理器 ...

  9. muduo学习笔记 - 第五章 高效的多线程日志

    第五章 高效的多线程日志 日志有两种意思: 诊断日志 交易日志 本章讲的是前一种日志,文本的供人阅读的日志,通常用于故障诊断和追踪,也可用于性能分析. 日志通常要记录: 收到的每条消息的id(关键字段 ...

最新文章

  1. diamond源码阅读-diamond-client
  2. Python示例-Logging
  3. React Native移动开发实战-4-Android平台的适配
  4. 使用 Tye 辅助开发 k8s 应用竟如此简单(五)
  5. 计算机专业毕业后现状,计算机专业怎么样_毕业生道出现状_“千万”别学
  6. 面向搜索引擎的内容管理系统(CMS)设计
  7. Html 点透镂空遮罩,swift 实现遮罩部分区域“挖洞”效果和点击事件穿透
  8. Windows下FFmpeg各版本库文件下载
  9. Top10机器学习开源项目发布,历时一个月评出 | 附GitHub地址
  10. 项目清理和删除svn信息(转)
  11. Slog76_用一个简单的游戏演示与数据库的交互(微信小程序之云开发-全栈时代6)...
  12. 黑马程序员 HTTP协议简介
  13. 二重积分matlab算法,基于MATLAB的二重积分计算方法
  14. 简易个人所得税计算器
  15. html改变按钮形状6,6个HTML5/CSS3按钮悬停边界旋绕动画
  16. TLS完美前向保密(perfect forward secrecy)翻译
  17. OpenCV4探索学习:OpenCV-4.1.0 Samples官方示例说明
  18. HashMap结构图及特点
  19. 搁浅一笺思念,静候几度时光。
  20. Qt入门开发__贪吃蛇小游戏

热门文章

  1. 【Docker】Docker的三大核心组件
  2. 记录一次http请求失败的问题分析
  3. python 浮点数未解之谜
  4. Springboot 利用AOP编程实现切面日志
  5. Python多线程调试
  6. dockerfile kafka
  7. Tensorflow安装问题: Could not find a version that satisfies the requirement tensorflow pip命令...
  8. TensorFlow用法
  9. deeplearning搜索空间
  10. NVIDIA Nsight Systems CUDA 跟踪