尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

文件系统概论

文件系统概论
📅 发布时间:2026/7/10 1:25:02

1:一个磁头可以定位一个磁道 ,一个磁道包含多个扇区,一批磁头可以确定多个扇区
2:定址顺序:先确定你在哪一个柱面上,然后在确定是在哪一个刺头上,(哪一个扇区)
3:如何定位磁盘中的任何一个扇区
sector array[][][] 三维数组
在c语言/c++中,所有的数组在我们的心目中,只有一维数组 把磁盘想象成一个一位数组
CHS地址就是一个扇区的详细地址
LBA地址:(操作系统逻辑抽象的地址)抽象地址,整个数组,需要物理定义吗? answer:不需要
获取几个参数即可:总容量 扇区大小 柱面 盘面 磁道上有多少个扇区

把操作系统理解成:01二进制数字发送给硬件的包工头

编译器 = 翻译官:把人类代码翻译成 01 机器码(生成二进制);
操作系统 = 工地总管:手里已经有现成 01 指令,合理分配 CPU、内存、硬盘给各个程序,指挥硬件干活;
CPU = 工人:只识别 01 高低电平,执行运算。

硬件工作原理:得到01这些二进制机器码(高电平和低电平)
高级代码 → 编译器生成二进制 01 机器码
→ 操作系统加载程序到内存、分配硬件资源
→ CPU 读取内存中的 01 指令,译码生成内部控制电平
→ CPU 通过总线向外设发送 01 控制信号
→ CPU、外设芯片根据 01 电平组合,驱动电路完成运算、读写、输出等硬件动作

操作系统真正的核心作用(核心 4 点)

  1. 硬件资源统一管理(最核心)
    计算机硬件只有一套 CPU、内存、硬盘、网卡,多个程序同时运行会争抢硬件。
    OS 隔离硬件,统一分配资源:
    内存管理:给每个程序划分独立内存空间,防止程序互相篡改数据;
    进程调度:分时复用 CPU,让多个程序 “同时运行”;
    设备管理:封装磁盘、网卡、显卡驱动,应用不用直接操作硬件寄存器。
  2. 向上提供统一接口,屏蔽底层 01 硬件细节
    应用程序不用写底层二进制指令操控硬件,只需要调用 OS 提供的 API(读写文件、网络发送、打印输出)。
    OS 内部再把 API 请求翻译成底层二进制指令交给 CPU 执行,是中转者,不是 01 生成者。
  3. 程序调度与执行控制
    负责程序加载、创建进程、分配 CPU 时间、回收结束程序资源;
    没有 OS,只能裸机单次运行一段二进制程序,无法多程序并发。
  4. 提供上层基础服务
    文件系统、网络协议栈、权限管理、中断处理、图形界面等,这些功能都需要 OS 统筹实现。


程序到最后就是二进制指令 操作系统也可以看成是二进制指令 这些程序在运行的时候,二进制代码会被加载到内存
唯一直接和内存双向打交道的硬件就是 CPU

有的硬件不在操作系统的调控之下,也可以实现一定的功能
硬件使用:得到二进制指令

小细节变动,大范围改变
你动他了 ,不动他不会变的
高低电平完成指令
二进制码可以控制硬件 可以把二进制代码看成是流(血液),调控全身(要有流思想)想底层问题就会容易一些

一个块由四个扇区构成。一个分区由多少个块构成
Disk MBR(定位操作系统分区表) partion1 partion2 partion3 partion4文件系统是以分区为单位的! 不可以跨一些分区做一些事情

partion (boot sector) (ext2 file system). 文件=文件属性(原数据)+文件内容
EXT* 系列的文件系统,属性和内容是分开存的
block group :
每个文件对一个inode 结构体 这个结构体里面的参数可以指明文件占据哪些块
一个文件可以占据两个block分组(块组)
inode是有位图来表明inode使用情况的
block也是有位图来表明块组(分组)使用情况的
当我们删除一个位的时候,只需要改变两个位图就可以
block bitmap 和 inode bitmap
eg:我们下载一个2g的电影的时候很慢,但是我们删除这个电影的时候很快
磁盘:
1.分区
2.格式化 写入文件系统信息

1.文件系统访问文件,只能通过inode number
2.目录是文件吗?是文件=属性+内容
目录内容保存什么呢?文件名:inode number的映射关系
目录文件:读权限 写权限 创建文件 删除文件
普通文件和目录在磁盘是以同样方式保存的
你想访问一个文件,操作系统,先把你的目录文件打开 查找文件名,找到inode
计算机想要对数据进行操作,这些数据必须到内存

目录是文件 目录=文件属性(拥有者,所属组,权限)+文件内容
内容应该保存什么呢?? inode number->partion->指定文件
我们平常查找文件使用的是文件名称,但是文件名称并没有被写进inode结构体的属性当中
所以目录文件里面保存的是文件名称和inode的映射关系
新建一个文件,就会在这个对应的目录文件中写入inode和文件名的对应关系
这个时候要是你没有这个目录的写权限,这个时候就不可以进行文件的创建
要是没有目录文件的读权限,这个时候你就找不到对应的文件
站在磁盘的角度上,在存储方式上,普通文件和目录的存储方式是一模一样的

二进制里只有普通运算指令 + 触发系统调用的陷阱指令;
程序不能直接调用操作系统底层函数,只能通过系统调用号向内核发起请求,由内核代为执行底层逻辑。

纸上演算(算法逻辑)= 编译器语法分析、代码优化;
拿笔、翻本子、开灯、拿草稿纸(资源 / 硬件操作)= 系统调用,必须依赖外界(操作系统)帮忙。

程序编译好的二进制指令中没有调用底层硬件的方法

我们可以编写一段程序来查看目录文件中的文件内容
在目录文件的文件内容中不允许出现同名文件,该目录下的目录文件和其他文件不可以重名
/home/whb/code/118/linux/code/lesson/dir
我们打开dir的时候,就需要把lesson code linux 118 code whb home
从左向右依次打开 这个就叫做路径解析 每一次都是从根目录开始解析
/文件名inode文件内容是已知的。操作系统开机的时候就需要被确定!否则就会报错
任何一个linux文件,都直接或者间接包含一个路径
ls -li hello.txt 这个操作没有包含路径啊,这个咋知道我打开的是哪个路径下的hello.txt文件的
因为环境已经记录了此时的路径 echo $PWD
所有文件,都必须有路径(只关注绝对路径),包括普通文件和目录
shell进程cwd 由不同的角色提供 linux任何一个文件都要从根目录开始解析
要是打开每一个文件都要从根目录开始解析 这个时候就会出现路径缓存

os要对缓存的目录内容进行管理 先描述,在组织
struct denty 只在内存中存在 普通目录或者文件中来的 组织方式:核心数据结构:多叉树多数据结构,把目录结构组织在内存中
我们可以根据文件名,在一个分区中,获取任意一个文件所在的位置和属性内容
你怎么确定,你的文件在哪一个分区中呢
一块磁盘,要被用户使用,应该经过哪些步骤
1.分区
2.格式化 (想每一个分区写入文件系统(各种位图信息,标志位等等))
3.格式化完成的这些信息在linux中是无法被使用的。 linux系统中,分区需要进行挂载
挂载(把指定的分区,和linux系统中指定的目录关联起来)
因为和目录关联起来,就可以通过进入目录,表示进入特定分区

解析目录的时候看最近的挂载点。从而确定分区。 第一个inode 展开这个inode之后就可以看到目录里面的内容 解析目录就是看目录对应的inode的文件属性和问价内容
struct dentry 核心存三样东西:
当前这一层的文件名;
父目录 dentry、子目录链表,构成目录树;
指向对应 inode 的指针;
外加引用计数用于缓存管理。

硬链接的时候 ,两个文件名,两个独立的struct dentry,指向同一个inode

创建一个目录的时候,inode计数是2 因为.这个文件与目录文件进行了硬链接 要是还有下级目录的话,这个时候inode链接计数就会是3 文件本身 (.) (…)
要是一个文件目录的inode计数是18 这个时候就是16个路径下目录文件

相关新闻

  • 2026工业电源采购攻略:分享充电器厂家怎么选择方法,优质防水电源厂家推荐,分析裸板电源厂哪家好 - 栗子测评
  • Build Variants 构建变体
  • 2026常州及周边文信授权全屋定制商家实测盘点 - 互联网科技品牌测评

最新新闻

  • 全屋WiFi怎么选?Mesh和WDS差别巨大,别再白花冤枉钱
  • 2026年7月最新万国龙湖杭州上城天街维修保养服务电话 - 万国中国官方服务中心
  • 还在为网络中断发愁?tchMaterial-parser让电子课本随时随地为你服务
  • 16-首屏卡在启动页-把初始化任务分级放到可控链路
  • OpenClaw-CN国内免翻墙配置指南:全链路国产化部署
  • 运算符,简单学!

日新闻

  • OpenClaw本地化部署:xParse文档解析引擎实战指南
  • 蓝牙 5.4 协议栈深度解析:从 HCI 到 L2CAP 的 7 层数据流
  • PyTorch nn.CrossEntropyLoss 实战:3种权重设置与标签平滑对比(附代码)

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号