.net 获取网站域名,网站后台风格,网络工程专业学什么,网络营销推广方式有几种标题#xff1a;[Linux] 层层深入理解文件系统——#xff08;3#xff09;磁盘组织组织存储的文件 个人主页水墨不写bug 目录
一、磁盘中的文件
1#xff09;磁盘的物理结构
2#xff09;磁盘的CHS寻址法
3#xff09;磁盘的空间管理
二、磁盘如何组织存储文件
三… 标题[Linux] 层层深入理解文件系统——3磁盘组织组织存储的文件 个人主页水墨不写bug 目录
一、磁盘中的文件
1磁盘的物理结构
2磁盘的CHS寻址法
3磁盘的空间管理
二、磁盘如何组织存储文件
三、透彻的看待文件系统 四、文件分区的创建 正文开始
一、磁盘中的文件 在之前我们谈论的文件是都是已经被加载到内存中的文件但是我们需要知道内存中的文件仅仅只是计算机内部文件的小部分只有小部分文件会被加载到内存中运行大部分文件还是会被存储在磁盘中本文谈论的文件就是存储在磁盘中的文件。
1磁盘的物理结构 计算机只认识二进制所以我们自然需要一个可以高效存储二进制数据的结构。磁盘就是这样的结构中的一种。常见的磁盘类似于我们小时候见到的光盘但是磁盘是有多个盘面的并且每一个盘面都可以读写数据。 磁盘可以存储二进制数据本质是磁盘的每一小单元可以表示两种不同的状态这每一个小单元就是一个一个的带磁性的单位提前规定好哪一个磁性对应的0哪一个磁性对应1就可以实现存储数据了。 磁盘是一个多个盘面的结构每个盘面都对应有一个磁头磁头就是进行数据读写的装置。盘片的两面都可以读写。磁盘本质是一个机械设备通过马达的转动和磁头的移动来定位扇区定位磁道。
2磁盘的CHS寻址法
在磁盘的结构中有几个概念 盘面就是数据存储在哪一个面由于每个盘面都有一个对应的磁头所以盘面在定位中等价于磁头Header。 磁道磁盘的盘面上会一圈一圈的向外扩展出一个一个的磁道磁道就是一个圆环圆柱Cylinder因为盘面确定后只需要确定磁道就可以了也就是只需要确定是哪一个同心圆柱就可以了所以称为圆柱。 扇区Sector扇区就是一个磁道上的一部分扇形与圆环的相交部分在确定扇区后磁道就是一个扇环暂且这样称呼。 磁盘读写的单位是扇区 512字节对于特殊的磁盘可能会有更大的读写单位。 盘面磁道扇区的关系 1盘面 n磁道 m扇区 我们想要打开一个文件就需要确定这个文件的位置这就需要
CHS定址法 只要依次确定文件位于的盘面磁道扇区即可确定这个文件的位置。 想要理解好CHS定址法的工作原理我们首先需要了解磁盘的存储结构。
3磁盘的空间管理 你小时候一定见过磁带磁带存储信息是一条一条的可以被拉直我们可以把磁盘看成一条线性的空间也就是把磁盘拉直那么磁盘就成为了一个长数组。操作系统读取的基本单位是按照扇区的所以这个数组的每个基本单位就是一个扇区。 所以文件就是很多个扇区的下标 假设一个盘面有1000个扇区有10个磁道每个磁道有100个扇区。如果随意给我们一个数组下标比如3210我们就可以通过计算就可以得到这个文件的CHS地址 3210/1000 3 表明在下标为3盘面 3210%1000 210210/100 2表示在下标为2的磁道 210%100 10 表示在下标为10的扇区。 于是我们就可得出结论文件位于 “3盘面 2磁道 10扇区” 对于操作系统而言一次读取512字节太小了所以一般而言操作系统未来和磁盘进行交互的时候读取的基本单位是4KB 8*sector 4KB 8个连续的扇区 我们把这8个连续的扇区称为 “块”。 所以文件是由很多个块构成的 于是对操作系统而言读取数据就可以以块为基本单位了。 我们只要知道一个块地址以及整个磁盘的总大小那么有多少个块每一个块的块号如何从块地址逻辑区块地址Logical Block Address, LBA转化到CHS地址全都知道了 二、磁盘如何组织存储文件 磁盘一般比较内存比较大800GB/1TB等如果直接管理不容易。所以磁盘需要进行分区。 我们的PC的C、D、E盘都是一个硬盘分区后产生的一个个分区。 这样一来只要能管理好一个分区就一定能管理好整个磁盘因为管理方法是可以直接照搬的。 对于一个分区的管理操作系统还是采用分组的方法在一个分区内部分组然后就只需要管理好一个组就可以管理好一个分区自然就可以管理好一整个磁盘了。 对于一个分区需要先写入文件系统的管理资源才能在磁盘中进行文件管理。这个过程称为“格式化”。 对于一个分区内部不是直接划分为一个个的分组而是有一定的组织逻辑的 接下来分别介绍这些区域的作用 我们知道文件 内容 属性 Data blocks就是存储文件的内容的位置而inode table是存储文件属性的位置。 inode是一个大小确定的结构体里面存储文件的属性信息比如有文件的大小文件的权限文件的创建者文件的ACM时间修改、保存、访问等。需要注意indoe内部不包含文件名称 一般而言inode有一个固定的大小 比如128字节所以无论是怎么样的文件都可以用inode存储文件的属性信息。 接下来介绍上面的区域的作用 Block Groupext2文件系统会根据分区的大小划分为数个Block Group。而每个Block Group都有着相同的结构组成。 超级块Super Block存放文件系统本身的结构信息。 记录的信息主要有bolck 和 inode的总量未使用的block和inode的数量一个block和inode的大小最近一次挂载的时间最近一次写入数据的时间最近一次检验磁盘的时间等其他文件系统的相关信息。Super Block的信息被破坏可以说整个文件系统结构就被破坏了 GDTGroup Descriptor Table块组描述符描述块组属性信息。 块位图Block BitmapBlock Bitmap中记录着Data Block中哪个数据块已经被占用哪个数据块没有被占用。 inode位图inode Bitmap每个bit表示一个inode是否空闲可用。 i节点表:存放文件属性 如 文件大小所有者最近修改时间等。 数据区存放文件内容。占有大部分空间 到这里我们对文件系统的有了基本的理解。那么如何理解文件的增删查改呢
创建一个新文件主要有一下4个操作 1. 存储属性 内核先找到一个空闲的i节点这里是263449。内核把文件信息记录到其中。 2. 存储数据 该文件需要存储在三个磁盘块内核找到了三个空闲块200,500900。将内核缓冲区的第一块数据复制到200下一块复制到500以此类推。 3. 记录分配情况 文件内容按顺序300,500,800存放。内核在inode上的磁盘分布区记录了上述块列表。 4. 添加文件名到目录 一个目录的内容本质是文件名与inode的对应关系。 新的文件名abc。linux如何在当前的目录中记录这个文件 内核将入口263449abc添加到目录文件。文件名和inode之间的对应关系将文件名和文件的内容及属性连接起来。 三、透彻的看待文件系统 当我们想要找到指定的文件那么一定需要先找到文件所在的目录接下来才可以打开这个目录根据目录的内容文件名与inode的对应关系给出文件名称对用户而言是通过文件名来进行文件管理的找到文件对应的inode。得到了文件的inode就可以对文件进行任何操作了。 但是这里有一个前提条件找到文件所在的目录 文件所在的目录如何找到 由于目录也是文件所以上面的过程会被重复进行于是会发现这就是一个递归的过程。直到最终找到根目录根目录的inode是已经规定好的所以不需要再找。 上面的这个过程称为逆向的路径解析。这也就解释了为什么在Linux中对文件操作无论是C/C的文件操作还是系统调用都需要带上路径的原因 由于这个过程使用非常频繁所以Linux会对这个路径系统进行缓存目的为了提高效率。 四、文件分区的创建 我们可以手动创建一个分区具体指令不是本文的重点所以不再列出。重要的是inode是在一个分区内部才是有效的。但是分区有多个操作系统是如何区分不同的分区呢因为只有区分了分区操作系统才可以根据我们提供的文件名进一步转化为inode来查找我们需要的文件。 操作系统如何区分不同的分区 分区在创建之后需要格式化最重要的是需要把这个分区挂载到一个目录中。挂载的这一操作就决定了这个分区的位置信息一串字符串。我们如果有很多个分区需要把分区挂载到不同的目录下。 我当时在哪个目录里我就在哪个分区下 这就解释了Linux可以区分不同分区的inode的原因。 完·~ 未经作者同意禁止转载