目录
文件,按照有没有被进程打开可以分为内存级文件和磁盘级文件。被某个进程打开的文件需要加载到内存,OS为了管理这些文件,会设立struct file结构体,还有进程PCB中的files指针指向结构体中的文件描述符表,存储进程打开的struct file的地址,这是之前所了解的内存级文件。
若一个文件没有被任何进程打开,则应该存储在磁盘中,我们接下来要了解的就是这部分磁盘级文件。
磁盘的结构
1. 内存:掉电易失存储介质 磁盘:永久性存储介质
2. 磁盘通过是否磁化来表示01,从而存储二进制数据,而磁化性是通过磁头改变的。向磁盘写入,本质就是改变盘面上的磁化性,即磁化或未磁化。
3. 如上图,磁盘存储数据的基本单位是扇区,一个扇区传统为512字节,即0.5KB。
4. CHS寻址:C表示磁道(柱面),H表示盘面,S表示扇区。也就是,通过盘片的旋转和磁头的左右摆动,确定哪一个磁道,哪一个盘面,哪一个扇区。即可找到磁盘中的任何一个扇区,即可通过磁头读写该扇区。这是磁盘物理上的的寻址方式。
磁盘的抽象(虚拟,逻辑)结构
操作系统为了更好地管理访问磁盘中的数据,将磁盘的这种物理上的圆形结构抽象为线性数组结构,数组的每个元素都是一个扇区,即sector disk[1024*1024*N],这样访问某一个扇区,只需要知道数组下标即可。这种称为LBA (Logical Block Addressing)逻辑块寻址模式。只需要将LBA转化为CHS,即可访问到磁盘的任何一个扇区。
分区
抽象为线性的数组结构之后,一个磁盘很大因此很难管理,所以操作系统将其进行分区操作。分为若干个区之后,对磁盘的管理->对一个小分区的管理。(每个分区的大小不一定相同)
对于每一个小分区,都有如上结构,一个Boot Block和若干个块组Block Group。
Boot Block称为启动块,存储了磁盘的分区信息和启动信息等...每个分区都存储一份是备份的作用
块组Block Group是磁盘分区后的基本单位。相当于对每个分区又进行了划分,下面主要了解块组的组成。
Block Group 块组:
前言:
1. 文件 = 内容 + 属性。Linux在磁盘上存储文件时,是将内容和属性分开存储。
2. inode是一个128字节的空间,保存的是对应文件的属性,属性中有一个inode编号字段。一般而言,一个文件,一个inode,一个inode编号。