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

本文涉及的产品
访问控制,不限时长
简介: 非常详细!操作系统:【文件系统概述】



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 什么是文件控制块

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

2.2.3 文件目录快的作用

(1)存储基本信息

(2)实现映射

2.2.4 目录需要提供的功能

2.3 目录结构

2.3.1 单文件目录结构

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

2.3.2 两级目录结构

示意图如下所示:

允许不同用户的文件重名,但是用户不可以对自己的文件进行分类,不太方便。

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

(1)示意图

是现在大多计算机普遍使用的目录结构

(2)绝对路径

(3)相对路径

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

2.3.4 无环图目录结构

(1)树形结构的缺点

(2)示意图

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

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

(4)注意

2.4 索引结点(FCB的改进)

2.4.1 概述

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

2.4.2 索引结点示意图

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

2.4.3 索引结点提升的效率

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

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

2.5 总结

⚔3 文件的基本操作

3.1 总览

3.2 几种基本操作

3.2.1 创建文件

(1)创建文件会进行create系统调用,需要传入的几个主要参数为:

(2)操作系统在处理create系统调用时进行的工作

3.2.2 删除文件

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

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

3.2.3 打开文件

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

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

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

(3)打开文件表

①用户的打开文件表

每个用户都有一个自己的打开文件表,其内容如图:

其中,读写指针记录用户目前对文件的读取位置。用户对文件的操作不可以超出打开文件表中的访问权限字段。

用户表中的系统表索引号与系统表中对应文件的索引号相同。

②系统的打开文件表

在操作系统内,有一张打开文件的总表,其基本结构如图

打开计数器的值表示这个文件此时被多少个进程打开了,设置这个表项的好处为:

3.2.4 关闭文件

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

3.2.5 读文件

(1)读文件时进程需要做的事

①进行read系统调用

②指明打开哪个文件(打开文件表中的索引号)

③指明读入多少数据

④指明读入的数据要放在内存中的什么位置

(2)读文件时操作系统做的事

①从进程提供的读指针指向的外存中,将进程指定大小的数据读入进程指定的内存区域中。

3.2.6 写文件

与读文件的操作类似

(1)写文件时进程需要做的事

①调用操作系统提供的write系统调用

②指明写回哪个文件(打开文件表中的索引号)

③指明写回多少数据

④写回外存的数据在内存中的位置指针

(2)写文件时操作系统做的事情

①从用户指针的内存区域中,将指定大小的数据写回到指定的外存区域内

3.3 总结

4 文件共享

4.1 总览

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

4.2.1 什么是索引结点

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

4.2.2 解释

(1)示意图

(2)在不同用户的目录中的索引结点指针指向同一个索引结点,这样就是先了文件共享。

(3)此外,索引结点中还必须增加一个额外变量count:

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

4.3.1 解释

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

4.3.2 示意图

4.3.3 注意

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

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 例子

(1)常用的文件操作

(2)访问控制列表

5.4.3 精简的访问列表

(1)为什么要有精简的访问列表?

当系统内用户很多时,访问控制列表可能会很长,会造成比较大的开

(2)解释

而系统会管理分组的信息,例如哪些用户属于哪些分组

(3)例子

5.5 总结

🕮6 总结

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

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

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

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

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

相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
相关文章
|
3月前
|
存储 算法 安全
操作系统之文件系统的奥秘
【9月更文挑战第19天】本文将深入探索操作系统中不可或缺的组件——文件系统,揭示其工作原理与实现细节。我们将通过浅显的语言和生动的比喻,一步步解析文件系统如何组织数据、管理存储空间,并确保数据的完整性和安全性。文章不仅适合初学者构建基础概念,也能帮助有经验的开发者更深入地理解文件系统的高级特性。
|
18天前
|
安全 Linux 数据安全/隐私保护
深入Linux操作系统:文件系统和权限管理
在数字世界的海洋中,操作系统是连接用户与硬件的桥梁,而Linux作为其中的佼佼者,其文件系统和权限管理则是这座桥梁上不可或缺的结构。本文将带你探索Linux的文件系统结构,理解文件权限的重要性,并通过实际案例揭示如何有效地管理和控制这些权限。我们将一起航行在Linux的命令行海洋中,解锁文件系统的奥秘,并学习如何保护你的数据免受不必要的访问。
|
1月前
|
存储 安全 大数据
深入浅出操作系统:文件系统的秘密
【10月更文挑战第35天】本文将揭示文件系统背后的奥秘,从其基本概念到复杂的实现机制。我们将一起探索文件系统的结构和原理,并了解它如何影响我们的日常计算体验。通过简单的例子和比喻,文章旨在使读者对文件系统有一个清晰而深刻的理解,就像甘地所言:“你必须成为你希望在世界上看到的改变。”让我们一起成为理解操作系统的先行者。
|
6月前
|
存储 Linux 数据处理
探索Linux操作系统的内核与文件系统
本文深入探讨了Linux操作系统的核心组件,包括其独特的内核结构和灵活的文件系统。文章首先概述了Linux内核的主要功能和架构,接着详细分析了文件系统的工作原理以及它如何支持数据存储和检索。通过比较不同的文件系统类型,本文旨在为读者提供一个关于如何根据特定需求选择合适文件系统的参考框架。
|
7月前
|
存储 Unix Linux
手写操作系统(4)——计算机是如何启动的?BIOS、GRUB、文件系统......
手写操作系统(4)——计算机是如何启动的?BIOS、GRUB、文件系统......
134 1
|
3月前
|
存储 缓存 文件存储
探索操作系统中的文件系统管理
【9月更文挑战第25天】在数字世界的海洋中,操作系统是指引我们航行的灯塔。它不仅管理着硬件资源,还维护着软件的秩序。本文将深入探讨操作系统中一个至关重要的部分——文件系统管理。我们将从基础概念出发,逐步深入到文件系统的设计与实现,最后通过代码示例来直观展示文件系统的操作。让我们一起揭开文件系统管理的神秘面纱,理解其背后的逻辑与奥秘。
|
4月前
|
编解码 Linux 程序员
深度探索Linux操作系统 —— 构建根文件系统2
深度探索Linux操作系统 —— 构建根文件系统
51 12
|
4月前
|
Linux Shell 网络安全
深度探索Linux操作系统 —— 构建根文件系统1
深度探索Linux操作系统 —— 构建根文件系统
61 6
|
4月前
|
存储 人工智能 数据管理
深入理解Linux操作系统之文件系统管理探索人工智能:从理论到实践的旅程
【8月更文挑战第30天】在探索Linux的无限可能时,我们不可避免地会遇到文件系统管理这一核心话题。本文将深入浅出地介绍Linux文件系统的基础知识、操作命令及高级技巧,帮助你更有效地管理和维护你的系统。从基础概念到实践应用,我们将一步步揭开Linux文件系统的神秘面纱。
|
4月前
|
存储 算法 Unix
OS—文件系统
OS—文件系统
61 0