操作系统专栏2-文件系统from小林coding

news2024/9/19 10:57:59

文件系统

  • 文件系统构成
  • 虚拟文件系统
  • 文件的使用
  • 文件的存储
    • 连续存储
    • 非连续空间存放方式
      • 链表方式
      • 索引方式
    • Linux文件的实现方式
  • 空闲分区的管理
  • 文件系统结构
    • 目录的存储
    • 软链接和硬链接

文件系统构成

Linux的设计哲学有一点很重要:一切皆文件,不仅仅是普通的文件和目录,就连块设备,管道,socket都属于文件的范畴
Linux会为每个文件分配两个数据结构:索引节点目录项

  • 索引节点:inode,记录文件的元信息,比如inode编号,文件大小,访问权限,创建时间,数据在磁盘中的位置,同样是文件的唯一标识,索引节点同样占据磁盘空间
  • 目录项:也就是dentry,记录文件名字,索引节点指针以及与其他目录项之间的层级关系,多个目录项关联起来,形成目录结构.与索引节点不同的是,目录项内核维护,不存放在磁盘,而是缓存在内存中

索引节点唯一标识文件,目录项记录文件的名字,实际上目录项与索引节点之间的关系是多对一的,硬链接的实现就是多个目录项中的索引节点指向同一个inode节点,目录不是目录项,目录是一个文件(inode),目录项的inode指针要么指向目录,要么指向文件
在这里插入图片描述
磁盘进行格式化时,会划分三个区域,分别是超级块,索引节点区和数据块区

  • 超级块:存储文件系统的详细信息,比如块大小,块个数以及空闲块
  • 索引节点区,存储索引节点
  • 数据块,存储文件或者目录数据

上述区进入内存的时机是不同的,全部放入的话内存压力过大,加载进内存的时机如下

  • 超级块:文件系统挂载时装载
  • 索引节点区:当文件访问时进入

虚拟文件系统

文件系统种类众多,操作系统希望对用户提供一个同一的接口,引入了虚拟文件系统这个中间层
VFS定义了一组所有文件系统都支持的数据结构和标准接口,这样程序员不需要了解文件系统的工作原理,只需要了解VFS提供的接口即可
在这里插入图片描述
linux提供的文件系统主要有以下三类

  • 磁盘文件系统 :直接把数据存储在磁盘中,比如ext2/3/4 等
  • 内存文件系统:文件系统的数据占用内存空间,代表有/proc,/sys(都是存放内核的统计数据和配置等信息),读写这类文件,实际上读取的是内核中的相关数据
  • 网络的文件系统:访问其他计算机的文件系统,比如NFS等

文件系统需要挂载之后才能使用,比如Linux启动时,会把文件系统挂载在根目录下

文件的使用

用户使用文件的方式如下
在这里插入图片描述
打开文件后,操作系统为每个进程维护一个打开文件表,文件表中的每一项为文件描述符,中间的内容如下

  • 文件指针:跟踪上次读写位置,对打开文件的某个进程来说是唯一的
  • 文件打开计数器:文件关闭时,操作系统必须重用打开文件条目(否则存储压力过大),多个进程打开同一个文件,因此需要记录最后一个关闭的进程,最后一个关闭才删除
  • 文件磁盘位置:文件操作修改数据,信息保存在内存中和,避免每个操作都是裸IO
  • 访问权限:每个进程打开文件都有一个访问模式,以便操作系统允许或者拒绝后续的IO请求

文件的存储

文件的存储有以下两种方案:连续存储和非连续存储

连续存储

文件存放在磁盘连续的空间中,指定起始块位置和长度即可存储和访问文件,缺点磁盘空间碎片(外部碎片)和文件长度不易扩展的缺点

非连续空间存放方式

链表方式

链表方式存放的是离散的文件块,这样存放可以消除磁盘碎片,同时文件的长度可以动态扩展,根据实现方式的不同,链表方式还可以分为隐式连接和显示连接两种

  • 隐式链接:文件头包含第一块和最后一块,每个文件快包含下一个文件块(很像自己实现的带头尾指针的链表)
  • 显示链接:将数据块指针显式的存放在内存的链表中,这样的表格称为FAT

索引方式

索引方式是为每个文件创建一个索引数据块,里面放的是指向文件数据块的指针列表在这里插入图片描述
当一个索引数据块存放不了索引时,有如下两种解决方式
在这里插入图片描述
在这里插入图片描述
上图的方式就是多级索引的雏形了,不过上面是二级索引

优点:

  • 文件创建,增大,缩小很方便
  • 不会有碎片问题
  • 支持顺序读写的随机读写

Linux文件的实现方式

在这里插入图片描述
根据文件的大小,存放的方式有所变化

  • 如果存放文件所需的数据块小于 10 块,则采用直接查找的方式
  • 如果存放文件所需的数据块超过 10 块,则采用一级间接索引方式
  • 如果前面两种方式都不够存放大文件,则采用二级间接索引方式
  • 如果二级间接索引也不够存放大文件,这采用三级间接索引方式

那个索引节点inode包含13个指针,10个直接指向数据块的,第11个指向一级索引的,第12个指向二级索引的,第13个指向三级索引的

空闲分区的管理

磁盘的空闲分区也需要进行管理,几种常见的管理方式如下

  • 空闲表法:为所有的空闲空间建立一张表,表内容为空闲区的第一个块号和空闲区块的个数,如果空闲区比较多的情况下,表的开销巨大
  • 空闲链表法:使用链表的方式管理空闲空间,每个空闲的块中有下一个指针指向空闲块
  • 位图法:位图利用二进制来表示磁盘中一个盘块的使用情况,值为0表示对应的盘块空闲,值为1表示对应的盘块已分配,linux系统即是采用位图的方式进行磁盘空间的管理,不仅是空闲磁盘空间的管理,还有inode空闲区间的管理

文件系统结构

Linux使用位图的方式管理空闲空间,用户创建新文件时,Linux通过inode的位图找到空闲可用的inode,进行分配,存储数据时,通过块的位图找到空闲的块并分配,一个页的位图最多能表示128Mb的数据,远远小于文件的大小,Linux提出了一个块组的概念
在这里插入图片描述

目录的存储

Linux将目录存储成了文件,甚至可以使用vim打开,普通的文件保存的是文件数据,目录文件保存的是目录中一项一项的文件信息
在这里插入图片描述

软链接和硬链接

硬链接和软链接用于提供文件共享使用功能,实现方式不相同
硬链接是多个文件目录项中的索引节点指向同一个inode,由于inode无法跨越文件系统,所以硬链接无法跨域文件系统,并且仅当所有硬链接和源文件被删除时,源文件才会被真正的删除
在这里插入图片描述
软链接相当于重新创建了一个文件,这个文件的inode独立,不过这个文件的内容是另一个文件的路径,因此软练可以跨越文件系统.
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据可视化与机器学习建模:心力衰竭预测_企业科研_论文科研_毕业设计

数据分析与可视化 心力衰竭或心血管疾病 (CVD) 是全球第一大死因,每年夺去大约1790 万人的生命,占全球所有死亡人数的 31%。 大多数心血管疾病可以通过使用全民策略解决烟草使用、不健康饮食和肥胖、缺乏身体活动和有害使用酒精等行为风险因素来预防…

【云原生】k8s组件架构介绍与K8s最新版部署

个人主页:征服bug-CSDN博客 kubernetes专栏:kubernetes_征服bug的博客-CSDN博客 目录 1 集群组件 1.1 控制平面组件(Control Plane Components) 1.2 Node 组件 1.3 插件 (Addons) 2 集群架构详细 3 集群搭建[重点] 3.1 mi…

Spring入门-技术简介、IOC技术、Bean、DI

前言 Spring是一个开源的项目,并不是单单的一个技术,发展至今已形成一种开发生态圈。也就是说我们可以完全使用Spring技术完成整个项目的构建、设计与开发。Spring是一个基于IOC和AOP的架构多层j2ee系统的架构。 SpringFramework:Spring框架…

GridFsTemplate实现文件管理

目录 需求分析解决方案实现步骤添加maven`spring-boot-starter-data-mongodb`配置文件`GridFsTemplate`实现临时文件和正式文件存储桶分离创建`GridFsTemplateUtil`工具类管理文件的上传、下载和删除创建`GridFsTemplateFileController`控制器暴露上传、下载和删除接口总结需求…

学习gRPC(一)

gRPC 简介 根据官网的介绍,gRPC 是开源高性能远程过程调用(RPC)框架,可以在任何环境中运行。它可以有效地连接数据中心内部和数据中心之间的服务,并为负载平衡、跟踪、运行状况检查和身份验证提供支持。同时由于其建立…

SAP RSA与RBA,业务需求与技术实现间的桥梁

1. 背景 SAP相关的缩略语很多,抛开背景说RSA与RBA,一定会让大家产生无数的联想。今年介绍的RSA与RBA是SAP最新企业架构方法论中的两个概念,听起来高大上,但其实其初衷和想法都是很容易理解的。话不多说,开始。 2. SA…

C++设计模式之访问者模式

C访问者设计模式 文章目录 C访问者设计模式什么是设计模式什么是访问者设计模式该模式有什么优缺点优点缺点 如何使用 什么是设计模式 设计模式是一种通用的解决方案,用于解决特定的一类问题。它是一种经过验证的代码组织方式,可以帮助开发人员更快地实…

全网最强大的工具箱—utools介绍及分享

今天来介绍一个相见恨晚的PC端工具——utools,什么是utools?用其自身的话来说:“uTools是一个极简、插件化、跨平台的现代化桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。”,体验了下,好用且强大&…

vi编辑器的使用二

vi光标命令 vi的查找命令 /string 查找字符串 n 继续查找N 反向继续查找支持正则表达式比如:/^the /end$ vi替换命令 利用:s命令可以实现字符串的替换usage:范围 s/old str/new str (s代表替换。没有指定范围则默认指的是当前行) : s/str1/str2/: s/…

装修小程序,开启装修公司智能化服务的新时代

随着数字化时代的来临,装修小程序成为提升服务质量和效率的关键工具。装修小程序旨在为装修公司提供数字化赋能、提高客户满意度的智慧装修平台。通过装修小程序,装修公司能够与客户进行在线沟通、展示设计方案、提高服务满意度等操作。 装修小程序的好处…

抄写Linux源码(Day2:构建调试环境)

我们计划把操作系统运行在 qemu-system-x86_64 上,使用 gdb 调试 经过 RTFM,可以使用 qemu-system-x86_64 -s -S 让 qemu 在启动之后停住 接着在另一个窗口运行 gdb,输入命令 target remote localhost:1234,即可连接qemu并调试运…

【数据结构】图文并茂,通过逻辑图带你轻松拿捏链表,实现各种接口功能

君兮_的个人主页 勤时当勉励 岁月不待人 C/C 游戏开发 Hello,米娜桑们,这里是君兮_,我们接着之前讲过的顺序表来继续介绍初阶数据结构的内容,今天给大家带来的是有关链表的基本知识和各种接口功能的实现 好了,废话不多说&#x…

STM32(HAL)串口中断接收

目录 1、简介 2 基础配置 2.1.1 SYS配置 2.1.2 RCC配置 2.2 串口外设配置 2.3 项目生成 3、KEIL端程序整合 1、简介 本文对HAL串口中断函数进行介绍。 2 基础配置 2.1.1 SYS配置 2.1.2 RCC配置 2.2 串口外设配置 2.3 项目生成 3、KEIL端程序整合 首先在main.c文件中进行…

Pytorch入门学习——快速搭建神经网络、优化器、梯度计算

我的代码可以在我的Github找到 GIthub地址 https://github.com/QinghongShao-sqh/Pytorch_Study 因为最近有同学问我如何Nerf入门,这里就简单给出一些我的建议: (1)基本的pytorch,机器学习,深度学习知识&a…

深入理解 Java Bean 的生命周期及各个阶段解析

目录 引言:一、什么是Java Bean二、Bean的生命周期概述三、Bean的创建阶段四、属性设置阶段初始化阶段六、使用阶段七、销毁阶段 引言: Java Bean是Java编程中经常使用的重要概念,它是可重用、可移植、可序列化的组件。在Java开发中&#xf…

绝杀 GETPOST 嵌套的 JSON 参数

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于Web应用程序中的数据传输。在HTTP数据包信息传递时,JSON扮演着非常正常的角色,因为它是一种通用的数据格式,可以被多种编程语言和应用程…

Linux远程连接mysql 出错plugin caching_sha2_password could not be loaded:

问题描述: 今天使用SQLyog远程连接mysql时出错plugin caching_sha2_password could not be loaded问题。 但在本地cmd 进入命令行窗口:输入命令连接远程连接mysql,发现可以顺利连接。 主要问题是 MySQL可视化工具(如&#xff1a…

Excel技巧 - 管理规则设置一行变色

如何设置某一列单元格的值大于一个值时,该单元格所在的一整行都变色呢? 1、先框选内容区域,点击开始,条件格式,新建规则 2、如果销量大于20,则该行都变为绿色 编辑格式选择:使用公式确定要设置…

Centos7 如何用命令直接更改配置文件里面内容

环境: Centos7.7 问题描述: Centos7 如何用命令直接更改配置文件里面内容 ifcfg-bond1文件里面DNS想替换改成114 解决方案: 1.使用sed命令 sed -i -e "s:匹配参数.*:匹配参数替换后的内容:g" 对应的文件路径本案例命令 se…

2022年全国硕士研究生入学统一考试管理类专业学位联考写作试题——解析版

四、写作:第56~57小题,共65分。其中论证有效性分析30分,论说文35分。 56.论证有效性分析:分析下述论证中存在的缺陷和漏洞,选择若干要点,写一篇600字左右的文章,对该论证的有效性进…