磁盘文件
- 1. 问题提出
- 2. 了解磁盘的物理结构
- 2.1 磁盘大体结构
- 2.2 磁盘的具体物理结构
- 3.对磁盘结构逻辑抽象
- 3.1 OS是通过CSH方法进行扇区的管理的吗?
- 3.2 磁盘逻辑过程
- 4.文件系统
- 4.1 管理思想
- 4.2 区结构
- Boot Block
- Super Block
- Group Descriptor Table
- inode Table & iNode bitmap
- Data Blocks & Blockbitmap
- 4.3 重新理解文件名
- 4.4 如何理解文件的增删改查
- 查 & 删除
- 增
- 4.5 面试题
- 5.软硬连接
- 5.1 制作软硬连接,对比差别
- 5.2 软硬连接的应用场景
1. 问题提出
在语言操作的文件,都是内存级文件,都是被打开的!如果文件没有被打开呢?在哪里?一定不在内存中!只能在磁盘外设等中静静的等待。
磁盘文件,如果没有被打开,如何理解这些文件?没有被打开的文件,有什么问题?
1.如何合理存储文件的问题
2.存储结构主要是为了解决:快速定位,快速读写——磁盘文件也是如此
问题:
a.如何表示一个文件?
b.如何定位一个文件?
c.如何对文件进行写入?
2. 了解磁盘的物理结构
2.1 磁盘大体结构
磁盘是我们计算机上唯一的机械设备!同时它还是外设。
盘片:一个盘片有两个盘面,有一摞盘片叠在一起——存储数据区。
磁头:一个盘面一个磁头,一个磁头负责一个盘面的读取!磁头在马达的控制下前后移动,它们是共进退的。
磁头和盘片之间的距离无限靠近,但没有接触。距离数量级为μm——作用:防止接触,在高速移动的时候摩擦生热,使得数据丢失!
盘片对数据的读取与写入的本质是对盘片每个极小的单元的磁化,用N,S级表示0,1!
2.2 磁盘的具体物理结构
磁盘中存储的基本单元:扇区,512字节 或者 4kb字节;一般所有的磁盘扇区都是512字节
如何定位一个扇区?
CSH法:
首先是确定是哪一个面:对磁头进行编号,编号代表就是哪一个面
接着就是定义磁道:通过磁头的前后移动来改变半径的大小
最后根据扇区的编号确定准确的扇区!
定位完扇区之后就可对该扇区进行管理(0,1读写)——存储数据!
3.对磁盘结构逻辑抽象
3.1 OS是通过CSH方法进行扇区的管理的吗?
如果OS得到任意一个CSH的值,就可以访问任意一个扇区,所以OS同过CSH方法管理磁盘的吗?答案:否!
为什么呢?
①OS是软件,磁盘是硬件,硬件定位一个地址,CSH,但是如果OS使用CSH来管理,万一磁盘的物理结构改变了呢?OS也需要改变——显然这会复杂,所以OS要和硬件之间解耦合!
②一个扇区,512字节,单位IO的基本量也是很小的!硬件:512字节,OS实际进行IO,基本单位是4KB(可以调整)——所以,OS需要有一套新的地址,来进行块结构的管理。
3.2 磁盘逻辑过程
将圆盘展开,就可得到一个线性结构!
将几个扇区合并成4KB的数据块,OS就可以通过结构体数组,对这些数据块进行管理!
4.文件系统
4.1 管理思想
512G的磁盘很大,要怎么管理呢?答案:分而治之!分区,管理好一个区,通过复制粘贴管理剩下的区。区中在分成若干各组!
4.2 区结构
注:Linux ext2文件系统
Boot Block
为开机时,加载操作系统数据的存储块
Super Block
【作用】
存储文件系统所有的属性信息
①文件系统的类型;②整个分组情况。
【注】
Super Block在各个分组之中基本都会存在,而且是统一更新的。
意义:Super Block如果只存储一次,一旦该区域的数据丢失,对导致整个512G文件信息无法使用。多个地方存储,防止数据丢失,多个备份,相互之间恢复!
Group Descriptor Table
组描述符:该组内详细统计的属性信息
inode Table & iNode bitmap
一般而言,一个文件,内部所有属性的集合,存储到一个iNode结点(128字节),一个文件对应一个iNode。其中,即便是一个分区,内部也会存在大量的文件即会存在大量的iNode结点,一个group中,需要有一个区域,来专门保存该group内的所有文件的iNode结点–iNode Table,iNode表。
分组内部,可能会存在多个iNode,需要将iNode区分开来,每一个iNode都会有自己的iNode编号,iNode编号,也属于对应的文件属性ID
iNode bitmap来管理这些iNode结点。0表示没有使用,1表示使用了。
Linux查找文件,需要更据iNode编号,来进行文件查找,包括读取数据!一个iNode对应一个文件,而该文件iNode属性和文件对应的文件数据吗,存在映射关系!
Data Blocks & Blockbitmap
Data blocks 存在多个数据块,一个文件的存储,会用到多个数据块。
blockbitmap:表示数据块是否被使用
4.3 重新理解文件名
4.4 如何理解文件的增删改查
查 & 删除
增
新增iNode结点编号,设置inode bitmap对应编号为1
通过iNode结点中成员变量datablock数组与数据块之间的映射关系,对相关的数据块进行相应的写入。
该数组对应的数据分层分级,通过不同级别的索引,适应文件的存储大小!
4.5 面试题
有没有可能,一个分组,数据块用完了,iNode没有,或者iNode用完了,数据块没有?
答:存在!因为这些是更据概率来提前分区数量的,是写死的,写死必然存在问题!
5.软硬连接
5.1 制作软硬连接,对比差别
软连接是一个独立的连接文件,有自己的iNode number,必定有自己的iNode属性和内容。软连接存放的内容是自己所指向的文件路径!——类似于Windows的快捷方式!
硬连接和目标文件共用一个iNode number,意味着硬连接一定是和目标文件使用一同一个iNode的!硬连接没有独立的iNode!硬连接建立了新的文件名和老的iNode的映射关系!
5.2 软硬连接的应用场景
软连接:方便找到深目录下的文件