news 2026/10/16 22:30:44

【操作系统】7.ETX文件系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【操作系统】7.ETX文件系统
  • 磁盘
  1. 扇区

512字节,存储的最基本单位

  1. 柱面

磁盘存储由几个磁片构成,多个扇区构成一个圆,多个圆构成一个柱面

  1. 磁头

读取数据,以扇区为单位

由于只有一个传动臂,带动多个磁头,多个磁头读取一个柱面

柱面->磁头->扇区就可以定位到一个扇区,CHS地址

但是一个扇区定位要三个数字,较大需要简化

  1. 逻辑结构

类似于磁带,将扇区可以从圆形拉成直线结构

此时,可以由一个数字,LBA地址,算出对应CHS地址

一个面可以看成一个数组,一个扇面可以看成二位数组,而二维数组可以拉成一维

因此,一维的存储是以柱面为最小单元的

缓存可以让数据同时写入磁盘,让数据连续,加快磁盘读取速度

  • 文件系统
  1. 块

由于扇区太小,效率太低,因此将8个扇区分成一个4kb的块

文件系统以块为单位

  1. 组

将此案存储分成30GB的组

  1. 组的构成
  1. data blocks:存储文件内容(占大部分)
  2. inode table:存储文件属性

linux中任何文件都要用一个结构体记录属性,大小固定,为128字节

但是不存储文件名字

一个数据块会保存在32个inode中,且每个inode都有自己的编号

因此可以用编号找到对应位置

在ll后面加上-i选项

  1. block bitmap和inode bitmap

分别用位存储data位置,inode位置每一个块是否存储信息

删数据时将两个清零即可,因此数据还能恢复

  1. GDT

存储data block等区域的开始结束位置

  1. super block

存一个大分区的信息

不是每一个组都有,就起到备份作用,损坏可以恢复

  1. 目录

Linux的目录也和文件一样属性存在inode table中,目录名字存在data blocks上,同时目录下的文件名字也存在这

因此,可以用目录做出文件的名字和inode的互相映射表

打开对应文件就需要他的目录的内容区做出inode,名字映射表,以用名字就可以打开对应文件

因此,目录打开需要上一句目录……最后就一直到了根目录

指令如ls code.c就会自动补全路径再打开

  1. 文件树

如果打开什么文件都要从根目录开始找,那么就要一直对磁盘进行IO操作,效率过低

因此,系统会将历史打开的文件保存在内存的一颗树里,节点为struct deny

同时,这个节点还存在链表,哈希中,可以通过其它形式快速找到,打开

find ~ -name test.c

第一次输入这个指令,在文件中找test文件会停一下才能出结果

但是第二次会快很多

用户提供文件名,进程提供路径,再合并去寻找

  1. 分区

在上面,可以用inode找到对应文件,但是inode不是跨分区的

挂在:分区一定要和对应目录相关联,就叫挂载在对应的分区中

可以通过要找的文件的目录匹配挂载的分区

  1. inode节点和数据的映射

在inode节点中,共有15个指针指向文件

前12个直接指向4kb大小的文件分区,共48K

第13个指向2级分区,可以指向1mb

第14个指向3级分区,指向256mb数据

第15个指向4级分区,指向64gb数据

同时,数据可以跨组存储,以存下大文件

  • 软硬链接
  1. 软链接

ln -s test.txt soft.txt

两个文件的inode值不一样,不是一个文件

可以看成快捷方式,快速查看对应文件

  1. 硬链接

ln test.txt hard.txt

Inode一样,为同一个文件

可以备份文件

中间的数字在链接后会变为2,相当于引用计数

一个路径数字显示为2

原因:在路径里有一个.文件,就是路径的硬链接,inode值一样

同理,在路径里再新建路径,计数又会+1,因为子目录有..文件,就是当前目录的硬链接

  1. 限制

用户不能给目录建立硬链接

因为怕形成环,遍历时形成死循环

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/16 17:16:42

Python3模块导入方法及搜索路径详解

Python3模块是组织代码、实现代码复用的核心机制。理解模块的导入机制和工作原理,能帮助你构建更清晰、更易维护的项目结构。在实际开发中,合理使用标准库和第三方模块可以极大提升开发效率,避免重复造轮子。 如何导入Python3模块 导入模块最…

作者头像 李华
网站建设 2026/10/13 12:58:23

httpx库异步爬虫实战对比aiohttp

在 Python 异步网络请求领域,aiohttp 曾长期占据主流地位,而 httpx 的出现凭借更简洁的 API、原生支持 HTTP/1.1 和 HTTP/2 以及与 requests 高度相似的语法,成为异步爬虫开发的新选择。本文将从实战角度出发,对比 httpx 与 aioht…

作者头像 李华
网站建设 2026/10/13 13:50:26

json的几种标准格式

JSON 的几种标准格式(以及最常见的实际使用变体) JSON(JavaScript Object Notation)本身在官方标准(RFC 8259 / ECMA-404)中只有一种核心语法,但在实际使用中,因为不同的场景、约定…

作者头像 李华
网站建设 2026/10/10 11:48:37

2026年技巧:用抖音训练测试AI模型

AI测试的新纪元 随着2026年AI技术加速渗透测试领域,抖音海量用户行为数据成为训练AI模型的黄金资源。软件测试从业者可借此预测公众号内容热度,优化测试策略,提升内容质量与用户粘性。本文将从专业视角解析热度机制,并提供数据驱…

作者头像 李华
网站建设 2026/10/15 3:41:38

开源工具如何让测试报告美感飙升200%:专业解析与实战指南

在软件测试领域,报告不仅是项目成果的展示,更是团队协作和决策的基石。然而,传统报告往往因格式呆板、数据堆砌而缺乏吸引力,导致关键信息被淹没。开源工具的崛起正颠覆这一局面,通过自动化美化功能,将报告…

作者头像 李华
网站建设 2026/10/10 16:13:02

情感化工具设计:让测试报告不再冰冷

当测试报告遇上情感化设计 在软件测试领域,报告常被视为冰冷的文档——充满技术术语却缺乏人情味。然而,公众号内容热度分析显示,情感化元素是引爆流量的核心:情感类文章(如职场压力、人际冲突)阅读量稳定…

作者头像 李华