非常详细!操作系统:【文件系统概述】

在这里插入图片描述

在这里插入图片描述

🌈个人主页:godspeed_lucip
🔥 系列专栏:OS从基础到进阶


  • 1 文件系统概述
    • 1.1 文件管理应该解决的问题
      • 1.1.1 文件属性
      • 1.1.2 文件数据的组织
      • 1.1.3 文件之间的组织
      • 1.1.4 向上提供的功能
      • 1.1.5 总结
    • 1.2 文件应该怎么存放在外存中
    • 1.3 其他问题
    • 1.4 总结
  • 2 文件目录
    • 2.1 总览
    • 2.2 文件控制块
      • 2.2.1 什么是目录文件
      • 2.2.2 什么是文件控制块
      • 2.2.3 文件目录快的作用
      • 2.2.4 目录需要提供的功能
    • 2.3 目录结构
      • 2.3.1 单文件目录结构
      • 2.3.2 两级目录结构
      • 2.3.3 多级目录结构(树形目录结构)
      • 2.3.4 无环图目录结构
    • 2.4 索引结点(FCB的改进)
      • 2.4.1 概述
      • 2.4.2 索引结点示意图
      • 2.4.3 索引结点提升的效率
    • 2.5 总结
  • ⚔3 文件的基本操作
    • 3.1 总览
    • 3.2 几种基本操作
      • 3.2.1 创建文件
      • 3.2.2 删除文件
      • 3.2.3 打开文件
      • 3.2.4 关闭文件
      • 3.2.5 读文件
      • 3.2.6 写文件
    • 3.3 总结
  • 4 文件共享
    • 4.1 总览
    • 4.2 基于索引结点的共享方式(硬链接)
      • 4.2.1 什么是索引结点
      • 4.2.2 解释
    • 4.3 基于符号链的共享方式(软链接)
      • 4.3.1 解释
      • 4.3.2 示意图
      • 4.3.3 注意
    • 4.4 总结
  • 5 文件保护
    • 5.1 总览
    • 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 总结
  • 🕮6 总结


1 文件系统概述

1.1 文件管理应该解决的问题

image1

1.1.1 文件属性

image2

1.1.2 文件数据的组织

image3

1.1.3 文件之间的组织

image4

1.1.4 向上提供的功能

image5

1.1.5 总结

image6

1.2 文件应该怎么存放在外存中

image7
image8
image9

1.3 其他问题

image10

1.4 总结

image11

2 文件目录

2.1 总览

image1

2.2 文件控制块

2.2.1 什么是目录文件

打开一层目录,都可以看到里面的文件内容,比如:
image2
那么操作系统会为每一层文件都建立一个目录文件,如图
image3
这张表记录了文件名(最重要)、文件存放的物理位置(最重要)、文件类型等等很多的信息。当我们打开一个文件时,实际上操作系统内部发生的事情为:
image4

2.2.2 什么是文件控制块

目录文件中的一条记录就是一个文件控制块(FCB)。如图
image5

2.2.3 文件目录快的作用

(1)存储基本信息
image6
(2)实现映射
image7

2.2.4 目录需要提供的功能

image8

2.3 目录结构

2.3.1 单文件目录结构

主要存在于早期操作系统,整个系统中只有一个目录表,每个文件都占一个目录项。
image9

2.3.2 两级目录结构

image10
示意图如下所示:
image11
允许不同用户的文件重名,但是用户不可以对自己的文件进行分类,不太方便。
image12

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

(1)示意图
是现在大多计算机普遍使用的目录结构
image13

(2)绝对路径
image14

(3)相对路径
image15
image16
总而言之,相对路径可以提升操作系统的效率

2.3.4 无环图目录结构

(1)树形结构的缺点
image17

(2)示意图
image18
简而言之,在无环图目录结构中,允许多个文件名指向同一个文件,这样就可以实现文件的共享。

(3)如何删除共享文件?
image19

(4)注意
image20

2.4 索引结点(FCB的改进)

2.4.1 概述

在之前介绍的目录文件中,每一个FCB都存储了文件的很多信息,但是实际上当操作系统在查找文件时,需要的唯一信息是文件名。此时就可以对目录文件进行瘦身。

2.4.2 索引结点示意图

image21
索引结点指针指向索引结点,它存储了文件的除文件名以外的所有信息。

2.4.3 索引结点提升的效率

(1)使用FCB的访问磁盘次数
image22

(2)使用索引结点的访问磁盘次数
image23

2.5 总结

image24

⚔3 文件的基本操作

3.1 总览

image1

3.2 几种基本操作

3.2.1 创建文件

(1)创建文件会进行create系统调用,需要传入的几个主要参数为:
image2
(2)操作系统在处理create系统调用时进行的工作
image3

3.2.2 删除文件

(1)删除文件会进行delete系统调用,需要传入的几个主要参数为:
image4

(2)操作系统在处理delete系统调用时的工作
image5

3.2.3 打开文件

(1)打开文件会进行open系统调用,需要传入的几个主要参数为:
image6

(2)操作系统在处理open系统调用时的工作
image7
为什么要将目录项复制到”打开文件表“?这样做的话,用户在之后1再次操作文件就不要重新指定目录了,这样可以加快访问速度

(3)打开文件表
①用户的打开文件表
每个用户都有一个自己的打开文件表,其内容如图:
image8
其中,读写指针记录用户目前对文件的读取位置。用户对文件的操作不可以超出打开文件表中的访问权限字段。
用户表中的系统表索引号与系统表中对应文件的索引号相同。

②系统的打开文件表
在操作系统内,有一张打开文件的总表,其基本结构如图
image9
打开计数器的值表示这个文件此时被多少个进程打开了,设置这个表项的好处为:
image10

3.2.4 关闭文件

选择关闭文件时操作系统做的事:
image11

3.2.5 读文件

(1)读文件时进程需要做的事
①进行read系统调用
②指明打开哪个文件(打开文件表中的索引号)
③指明读入多少数据
④指明读入的数据要放在内存中的什么位置

(2)读文件时操作系统做的事
①从进程提供的读指针指向的外存中,将进程指定大小的数据读入进程指定的内存区域中。

3.2.6 写文件

与读文件的操作类似

(1)写文件时进程需要做的事
①调用操作系统提供的write系统调用
②指明写回哪个文件(打开文件表中的索引号)
③指明写回多少数据
④写回外存的数据在内存中的位置指针

(2)写文件时操作系统做的事情
①从用户指针的内存区域中,将指定大小的数据写回到指定的外存区域内

3.3 总结

image12

4 文件共享

4.1 总览

image1

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

4.2.1 什么是索引结点

是文件的一种物理结构,文件的具体信息(物理地址、文件权限等等)放在索引结点中,而文件表中只存放文件名与指向索引结点的指针。这样可以加快检索文件的速度

4.2.2 解释

(1)示意图
image2
(2)在不同用户的目录中的索引结点指针指向同一个索引结点,这样就是先了文件共享。
(3)此外,索引结点中还必须增加一个额外变量count:
image3

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

4.3.1 解释

与硬链接中直接使用指针指向文件不同,软链接是新建一个文件,此文件中存放共享文件的路径(称为link文件)

4.3.2 示意图

image4

4.3.3 注意

当共享文件被删除时,该link文件实际上也随机失效(联想Windows下的快快捷方式)

4.4 总结

image5

5 文件保护

5.1 总览

image1

5.2 口令保护

5.2.1 解释

image2

5.2.2 优缺点

image3

5.3 加密保护

5.3.1 解释

image4

5.3.2 例子

image5

5.3.3 优缺点

用户只需要记住自己的密码就可以了
image6

5.4 访问控制

5.4.1 解释

image7
当某个用户对文件执行操作时,操作系统会首先查看访问控制列表,确认用户有该操作的权限。

5.4.2 例子

(1)常用的文件操作
image8
(2)访问控制列表
image9

5.4.3 精简的访问列表

(1)为什么要有精简的访问列表?
当系统内用户很多时,访问控制列表可能会很长,会造成比较大的开
(2)解释
image10
而系统会管理分组的信息,例如哪些用户属于哪些分组
(3)例子
image11

5.5 总结

image12

🕮6 总结

操作系统,如默默守护的守夜者,无声地管理硬件与软件的交流,为计算机创造和谐秩序。

它是无形的引导者,让复杂的任务变得井然有序,为用户提供无忧体验。

操作系统的巧妙设计,让计算机变得更加智能高效,让人与科技之间的交流更加顺畅。

在每一次启动中,它如信任的伙伴,带领我们进入数字世界的奇妙旅程。

渴望挑战操作系统的学习路径和掌握进阶技术?不妨点击下方链接,一同探讨更多操作系统的奇迹吧。我们推出了引领趋势的💻OS专栏:《OS从基础到进阶》 ,旨在深度探索OS的实际应用和创新。🌐🔍

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/460439.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端异步相关知识总结

目录 一、同步和异步简介 同步(按顺序执行) 异步(不按顺序执行) 异步出现的原因和需求 二、实现异步的方法 回调函数 Promise 生成器Generators/ yield async await 三、promise和 async await 区别 概念 两者的区别 …

Nacos1.X源码解读(待完善)

目录 下载源码 注册服务 客户端注册流程 注册接口API 服务端处理注册请求 设计亮点 服务端流程图 下载源码 1. 克隆git地址到本地 # 下载nacos源码 git clone https://github.com/alibaba/nacos.git 2. 切换分支到1.4.7, maven编译(3.5.1) 3. 找到启动类com.alibaba.na…

zzzzzzzzzzzzzzzzz

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 磁盘满的本质分析 专栏:《Linux从小白到大神》 | 系统学习Linux开发、VIM/GCC/GDB/Make工具…

机器学习系列——(十六)回归模型的评估

引言 在机器学习领域,回归模型是一种预测连续数值输出的重要工具。无论是预测房价、股票价格还是天气温度,回归模型都扮演着不可或缺的角色。然而,构建模型只是第一步,评估模型的性能是确保模型准确性和泛化能力的关键环节。本文…

linux(redhat)重置root密码

首先将root密码改成几乎不可能记住的密码 [rootexample ~]# echo fheowafuflaeijifehowf|passwd --stdin root Changing password for user root. passwd: all authentication tokens updated successfully.重启系统,进入救援模式 出现此页面,按e键 lin…

编程实例分享,手表养护维修软件钟表维修开单管理系统教程

编程实例分享,手表养护维修软件钟表维修开单管理系统教程 一、前言 以下教程以 佳易王钟表维护维修管理系统软件V16.0为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 左侧为导航栏, 1、系统设置:可以设置打…

【平衡小车入门】(PID、FreeRTOS、hal库)

本篇博客记录自己复刻的平衡小车 前言一、硬件需求二、最终效果三、整体流程第一步:stm32通过DRV8833电机驱动模块使用PWM驱动直流减速电机第二步:理解PID算法在平衡小车中的应用第三步:PID调参 四、源代码获取 前言 从代码上看,…

Codeforces Round 260 (Div. 1)A. Boredom(dp)

最开始写了一发贪心wa了,然后这种选和不选的组合优化问题,一般是考虑动态规划 d p [ i ] [ 0 ] : dp[i][0]: dp[i][0]:表示第i个数不选的最大值 d p [ i ] [ 1 ] : dp[i][1]: dp[i][1]&#xf…

JavaScript 入门 完整版

目录 第一个知识点:引入js文件 内部引用: 外部引用: 第二个知识点:javascript的基本语法 定义变量: 条件控制(if - else if - else) 第三个知识点:javascript里的数据类型、运算符: 数字类型 字符串类型 布尔…

算法之双指针系列1

目录 一:双指针的介绍 1:快慢指针 2:对撞指针 二:对撞指针例题讲述 一:双指针的介绍 在做题中常用两种指针,分别为对撞指针与快慢指针。 1:快慢指针 简称为龟兔赛跑算法,它的基…

前端JavaScript篇之对闭包的理解

目录 对闭包的理解用途循环中使用闭包解决 var 定义函数的问题 对闭包的理解 闭包是指一个函数能够访问并操作其词法作用域(定义时所在的作用域)之外的变量的能力。它可以通过在一个函数内部创建另一个函数来实现。内部函数可以访问外部函数的局部变量、…

学生速看:免费领取一台阿里云学生服务器2024申请入口

2024年阿里云学生服务器免费领取,先完成学生认证即可免费领取一台云服务器ECS,配置为2核2G、1M带宽、40G系统盘,在云服务器ECS实例过期之前,完成实验与认证任务,还可以免费续费6个月,阿里云百科aliyunbaike…