【操作系统】第十二章文件系统

简介: 【操作系统】第十二章文件系统

12.1基本概念


不同的操作系统,有不同的文件系统,还可能有多个文件系统

一、文件系统与文件

文件系统:一种用于持久性存储的系统抽象

image.png

需要注意:

一首音乐和一张图片都是一个文件,都是以文件的形式存放在硬盘上的,但是和桌面级不一样,但是读写命名创建的形式都是一样的。

文件:文件系统中一个单元的相关数据在操作系统中的抽象


二、文件系统的功能

1、分配文件磁盘空间

1)管理文件夹(那一块属于哪一个文件)

2)管理空闲空间(哪一块是空闲的)

3)分配算法(策略)


2、管理文件集合

1)定位文件及其内容

用户如何去找到这个文件

2)命名:通过名字找到文件的接口

通过路劲的名字找到这个问价

3)最常见:分层文件系统

文件是否需要分层,一个目录

4)文件系统类型(组织文件的不同方式)


3、提供的遍历级特征

1)保护:分层来保护数据安全

2)可靠性/持久性:保持文件的持久即使发生奔溃,媒体错误,双击等


三、文件和块

image.png

文件的属性一般会包含在文件头或者是文件块上,用以保存基本的属性。


四、文件描述符

1、文件的使用模式:

打开这个文件之后,为了更容易的进行读写操作,会返回一个文件描述符。其代表了文件给应用程序做访问和控制。

image.png

文件描述符不仅仅是一个数据,操作系统对代开的文件会有一个表,称为打开文件表,而返回的文件描述符就是表的索引。文件描述符指出了这个表中的第几项代表了这个文件,里面有很多的文件信息。

image.png


2、元数据来管理打开文件:

1)文件指针:指向当前最近的一次读写的位置

2)文件打开次数:多少个进程打开了这个文件,也就是文件打开的次数,文件是共享资源,允许多个进程打开同一个文件。

3)文件磁盘位置:缓存数据访问信息

4)访问权限:每个程序的访问模式信息

image.png

image.png

image.png

五、目录

1、目录的介绍

通过分层的方式,进行存储,使层次更加的清晰简洁

image.png

2、目录的操作

image.png

3、如何存储目录的文件

(根据文件系统不同而有所差异)

image.png

4、路径的遍历

路径是有目录和最后的目的文件所构成,这个路径的遍历开销比较大。有缓存机制来加快这个效率。

image.png

5、文件系统的挂载

挂载文件系统的挂载点用户看到的是一个目录,但是是特殊的文件。mount是挂载的命令。unmount是卸载的命令。操作比较简单。

image.png


六、文件别名

也就是一个文件有多个名字

image.png

两种实现方法:硬链接和软链接

1)硬链接:多个文件项指向一个文件

2)软链接:这个文件的内容是另一个文件的路径

image.png

如果将有效的文件删掉了:

对于硬链接来说,只是引用技术减1,只有当引用技术变成了0,这个文件才彻底删除。

而对于软链接来说,这个别名将成为一个“悬空指针”。

image.png


七、文件系统的种类

下面对文件系统种类做简单介绍:

image.png

ext2/3/4是主要的文件系统,存储在磁盘或者是光盘上。

日志文件系统的读操作或者是写操作要不是完成,要么不被完成,在中间进行的基础中是不会被大段的。

网络文件系统只要在局域内,就可以很容易的访问另外一个机器上面的数据。

虚拟文件系统,linux下的proc可以看见中断的次数等等内核信息。

image.png


12.2虚拟文件系统


问题:为什么使用虚拟文件系统?

如果让应用程序针对不同的文件系统写出应用程序,就会很复杂。通过操作系统实现了,利用其提供的接口,通过一层虚拟文件系统层,屏蔽了底层具体文件系统的差异性,从而可以使得其可以访问不同的文件系统,适用面更好。

image.png

1、虚拟文件系统的目标

屏蔽具体文件系统的差异性,给上层提供统一的接口,可以完成基本的文件的操作读写打开关闭等等,也就是对所以不同文件系统的抽象。


2、虚拟文件系统的功能:

1)提供相同的文件和文件系统的接口

2)管理所有文件和文件系统关联的数据结构

3)高效查询例程,遍历文件系统

4)与特定文件系统模块的交互

需要注意:

虚拟文件系统不在具体的磁盘上,而是在内存中,由操作系统所创建。


3、几个控制块介绍

1)卷控制块:每个文件系统都有一个总控制块,卷控制块/超级块(Unix:superblock)

每个文件系统一个

文件系统详细信息

块/块大小、空余块、计数/指针等

2)文件控制块:每一个具体的文件其实也需要一定的元数据和特征,所以有一个文件控制块(Unix:vnode or inode)

每个文件一个

文件详细信息

许可,拥有者,大小,数据库位置等等

3)目录节点:目录里面的内容是里面的文件,文件的内容是内容,所以目录节点会有所不同,目录节点(linux:dentry)

每个目录一个(目录和文件)

将目录项数据结构及树型布局编码成树型数据结构

指向文件控制块,父节点,项目列表等

这些概念可以够成一个抽象的文件系统图。

首先有一个总控制节点,这之下管理一堆目录,目录可以管理子目录或文件,文件里面是具体的数据(数据块),这些数据都是放在磁盘里面的。

image.png

4、文件系统的数据结构

卷控制块(每个文件系统一个)

文件控制块(每个文件一个)

目录节点(每个目录项一个)

这些都会映射到磁盘里面的一个或多个扇区,文件里面的数据也会放在扇区里面。


5、问题:这些内容什么会后加载到内存?

卷控制块:当文件系统挂载时进入内存

文件控制块:当文件被访问时进入每次

目录节点:在遍历一个文件路劲时进入内存

image.png

通过vol总控制块可以找到目录,而通过目录可以找到子目录或者是文件,而通过文件控制块可以最终找到想要寻找的数据。


11.3数据缓存


由于访问磁盘速度比较慢,所在内存中会存在一块缓存。

1、数据缓存需要考虑的内容

image.png

希望基于分页的一个缓存机制,使得数据更好给上层程序更好的访问。

image.png

image.png

总的来说

缓存是为了进程执行更加的高效,为了减少硬盘的访问次数,减少运算时间。


12.4打开文件的数据结构


讲得太水,没什么好写的,感觉可以跳过


12.5文件分配


image.png


12.6空闲空间分配


image.png

还有位图,扫描实现。


12.7多磁盘管理-RAID


作用:提高磁盘访问的效率

RAID0

image.png

数据并访问,提高吞吐率


RAID1

image.png

向两个硬盘写入同样的数据,镜像数据提高可靠性


RADI3

image.png

奇偶校验以bit来作奇偶校验,其他045都是以块来作并行校验


RADI4

image.png

4个盘分区并行访问,1个盘来进行奇偶校验从而恢复达到容错


RADI5

image.png

校验是均匀的,访问是并行的,但是只能纠错一个


12.8磁盘调度


(这里是最简单的情况)

磁盘的结构:

image.png

io请求调度算法:

1、请求先来先执行

image.png

2、寻道移动最少

image.png

3、Scan扫描方法

先上到头,然后再下来,双方向。

image.png

4、单向扫描

只在一个方向上扫描,然后瞬间跳会最高点

image.png

5、C-SCAN

到请求的最后一点就返回

image.png


参考链接:https://www.bilibili.com/video/av6538245

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