TrollInstallerX:iOS 14-16.6.1 TrollStore安装神器的高效部署指南

核心内容摘要

智能客服系统返回商品的技术实现与优化:从AI辅助开发到生产环境部署
Autosar脚本编辑:涵盖BSW与MCAL配置的高级定制方案

Qwen3-0.6B踩坑记录:新手避坑少走弯路指南

理解硬件

1磁盘及其物理结构磁盘属于外设相较于内存来说磁盘的容量大、价格便宜缺点就是速度慢。

一下是磁盘正常和被打开的样子以及它的物理结构。

2磁盘的存储结构一个磁盘有多个盘片每个盘片都有两盘面这两面互不影响都可以储存。

磁盘的一个个盘面又有许多的磁道磁道本身是一个圆环被径向切分成若干扇区这些扇区就是最小的读写的单元一个扇区标准是512Byte(实际要看具体的磁盘)。

在存储时会找到对应的柱面柱面指的是所有盘面上、相同编号的磁道在三维空间中共同构成的一个虚拟圆柱面。

选定柱面就相当于选定了所有盘面上的同编号磁道再通过选择对应的磁头确定磁道然后通过盘片的旋转找到对应的扇区之后磁头发出电改变磁场方向用不同的磁场方向表示二进制的 0 和 1从而完成数据记录。

3磁盘的逻辑结构以下是磁带大家应该都认识它它的储存方式在逻辑上与磁盘类似。

我们可以把一个个的磁道看成和磁带一样把他拉直之后就变成了以扇区为基础的一维数组。

而柱面逻辑上我们把它看成一个圆柱面把它展开之后就变成了一个二维数组。

而整个盘有多个柱面的把这些柱面都展开之后组合在一起就成了一个三维数组。

引⼊⽂件系统

引⼊块概念操作系统在进行读写的过程中并不会一个一个扇区的去读写这样效率太低了因此操作系统一般是一次连续读取多个扇区这些连续的多个扇区就组成了一个”块“。

“块”的大小一般是4kb的“块”是文件储存的最小单位。

引⼊分区概念Linux下的分区其实和Windows的CDE盘差不多分区从实质上说就是对硬盘的⼀种格式化。

但是Linux的设备 都是以⽂件形式存在那是怎么分区的呢柱⾯是分区的最⼩单位我们可以利⽤参考柱⾯号码的⽅式来进⾏分区其本质就是设置每个区的起 始柱⾯和结束柱⾯号码。

此时我们可以将硬盘上的柱⾯分区进行平铺将其想象成⼀个⼤的平⾯如下图所⽰

引⼊inode概念文件文件内容文件属性而inode里存储的就是文件的各种属性inode一般都是128Byte或256Byte后面我们以128Byte来讲。

值得注意的是inode里并不包含文件名而且文件内容和属性也是分开存储的。

inode里有一个i_block数组有15个指针每个指针存储的都是数据块/索引快的物理块号i_block的前12个指针都指向具体的块第十三个指针指向一个存储数据块号的索引块一个块有4kb除以一个指针的4字节就可以存储1024个块也就是4Mb的内存。

第14个指针指向二级索引块一个二级索引块就能对应1024个一级索引块有4Gb的内存。

第15个指针指向三级索引块三级索引块又对应1024个二级索引块有4Tb的内存这就是Linux如何解决大文件的问题。

ext2 ⽂件系统

宏观认识ext2⽂件系统将整个分区划分成若⼲个同样⼤⼩的块组 (Block Group)如下图所⽰。

只要能管理⼀个分区就能管理所有分区也就能管理所有磁盘⽂件。

Block Groupext2⽂件系统会根据分区的⼤⼩划分为数个Block Group。

⽽每个Block Group都有着相同的结构组 成。

政府管理各区的例⼦

块组内部构成

超级块Super Block存放⽂件系统本⾝的结构信息描述整个分区的⽂件系统信息。

记录的信息主要有bolck 和 inode的总量未使⽤的block和inode的数量⼀个block和inode的⼤⼩最近⼀次挂载的时间最近⼀次写⼊数据的时间最近⼀次检验磁盘的时间等其他⽂件系统的相关信息。

Super Block的信息被破坏可以说整个⽂件系统结构就被破坏了

GDTGroup Descriptor Table块组描述符表描述块组属性信息整个分区分成多个块组就对应有多少个块组描述符。

每个块组描 述符存储⼀个块组 的描述信息如在这个块组中从哪⾥开始是inode Table从哪⾥开始是Data Blocks空闲的inode和数据块还有多少个等等。

块位图Block BitmapBlock Bitmap中记录着Data Block中哪个数据块已经被占⽤哪个数据块没有被占⽤

inode位图Inode Bitmap每个bit表⽰⼀个inode是否空闲可⽤。

i节点表(Inode Table)管理文件的inode的表inode的编号是整个分区为单位的所以不用担心分组的问题。

Data Block数据区存放⽂件内容也就是⼀个⼀个的Block。

根据不同的⽂件类型有以下⼏种情况对于普通⽂件⽂件的数据存储在数据块中。

对于⽬录该⽬录下的所有⽂件名和⽬录名存储在所在⽬录的数据块中除了⽂件名外ls -l命令 看到的其它信息保存在该⽂件的inode中。

Block 号按照分区划分不可跨分区。

⽬录与⽂件名和路径解析我们平常访问文件都是使用文件名但是inode里并没有文件名啊这盖如何理解呢实际上目录也是文件使用文件的属性也跟普通文件一样由inode存储但是目录的内容存储的是目录下的文件名和inode的映射关系。

所以想要打开文件就必须要有文件名获得对应的inode号但是想要打开该目录下的文件就要得到该文件的inode号想要获得目录的ionde号就要得到上级目录的inode号如此反复到根目录/由与根目录的inode是已知的所以在递归回去就能得到目标文件的inode号了。

路径缓存Linux 遵循一切皆文件的设计思想目录本质是存储文件名与 inode 映射关系的特殊文件并非不存在真正的目录。

如果每次通过路径访问文件时都从磁盘读取目录文件并逐层解析会带来大量 I/O效率极低。

为了加速路径查找Linux 虚拟文件系统 VFS 在内存中维护了目录项缓存dcache使用struct dentry结构体表示每个目录项。

目录项之间以父子关系形成层级结构内核在进行路径解析时会优先从 dcache 中逐层查找目标路径。

如果缓存中不存在对应目录项内核会从磁盘的目录文件中读取数据创建新的 dentry 并加入缓存当内存紧张或目录项长期未被访问时内核会通过回收机制如 LRU淘汰不常用的目录项避免缓存占用过多内存。

软硬连接

硬链接软连接和硬链接其实都是使用ln来实现的只不过具体方式不同硬链接一般是ln 文件名 硬链接名它并不会创建新的文件也不会分配新的 inode多个硬链接共用同一个 inode 号。

硬链接的本质是为同一个 inode 在目录中增加一条新的文件名映射相当于给文件添加别名而不是对文件内容进行备份。

软链接软连接一般是通过ln -s 文件名 硬链接名软连接文件的实际就是源文件的完整路径字符串它其实就相当于Windows下的快捷方式。

糖心VLOG破解免费版-糖心VLOG破解免费版应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123