当前位置: 首页 > news >正文

文件系统概论

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个路径下目录文件

http://www.jsqmd.com/news/1157731/

相关文章:

  • 六、在zephyr上配置sdmmc和fatfs演示
  • deepx-code:终端原生AI编程工作流操作系统
  • 建造者模式和模板方法模式的区别
  • 雷达中国官方售后服务中心|服务电话及详细地址权威信息通知(2026年7月最新) - 亨得利官方服务中心
  • AI率爆表怎么办?10款降AI率软件实测(含免费降ai率工具)真实避坑指南
  • 2026年长春企业老板力荐公司法律师 5家实战精选推荐 - 本地品牌推荐
  • 孩子数学“计算总出错“不是粗心,真相只有这一个
  • 芯片电路能耗与散热控制方法与原理
  • 变增益运算放大器(PGA)原理与应用:动态范围扩展与信号调理技术
  • RBAC 权限模型演进解析:从RBAC0到RBAC3的4种模型对比与选型指南
  • 2026常州及周边文信授权全屋定制商家实测盘点 - 互联网科技品牌测评
  • Build Variants 构建变体
  • 前端转AI全栈,6-9个月落地实战!收藏这份专属学习路线,轻松实现职业升级
  • Spring Boot 3 + Vue 3 + MySQL 智能灌溉系统源码 前后端分离 实战项目
  • Ouch 0.8.1 官方版下载(夸克网盘,SHA256校验)
  • 2026年现阶段厦门旋转货柜公司盘点:蓝兴泰科技为何备受关注? - 品牌鉴赏官2026
  • 2026工业电源采购攻略:分享充电器厂家怎么选择方法,优质防水电源厂家推荐,分析裸板电源厂哪家好 - 栗子测评
  • 2026医院供电配套采购参考,医用隔离电源工厂资质盘点,医用隔离变压器、医用隔离电源哪家好怎么选 - 栗子测评
  • 无刷直流电机 PWM 频率与电感选择:50kHz下电流纹波降低30%的3个关键参数
  • 2026 年最佳恶意软件清除软件推荐:多款软件各有亮点,助你守护设备安全!
  • 延伸音(Tension)应用指南:属七和弦5种常用Tension音搭配与省略五音原则
  • 智能阅卷系统OCRAutoScore:让AI帮你批改试卷,节省90%阅卷时间
  • 伯爵中国官方售后服务中心|服务电话及完整官方地址权威信息声明(2026年7月更新) - 亨得利官方服务中心
  • C语言语法笔记
  • 从零搭建高效Linux虚拟机:网络、磁盘与增强功能配置全解析
  • ESP32 Arduino 经典蓝牙 SPP 通信实战:2节点自动配对与LED控制(附完整代码)
  • 【0基础嵌入式学习日志】Day15:位操作、GPIO 寄存器模拟与 LED 控制
  • PagedAttention失效诊断与DeepSeek V4推理优化实战
  • 2026双叠自锁垫圈使用成本怎么降低
  • 猫抓浏览器插件:新手到专家的视频下载完全指南