0
点赞
收藏
分享

微信扫一扫

简述类与对象

北溟有渔夫 03-13 10:30 阅读 2

磁盘文件

通过前一篇文章Linux——系统文件I/O,我们知道了如何对加载在内存中的文件进行读写等操作,并了解了其内在的原理。同时我们也应该清楚,并不是所有的文件都会被加载入内存,而没有被加载入内存的文件,就被存放在磁盘中,称为磁盘文件。现在,就让我们一起来学习磁盘文件的相关知识

本片思维导图:
在这里插入图片描述注:本章思维导图对应的.xmind.png文件都已同步导入至资源,供免费查阅

1. 磁盘的物理结构

在这里插入图片描述

1.1 两个重要的结构

在这里插入图片描述

磁盘的两个重要的物理结构为盘面和磁头

盘面

磁头

1.2 CHS定位法

如何定位一个指定的扇区?我们可以通过这样的步骤:

既然文件存储在磁盘中,那么说到底它也就占用了数个扇区,因此我们就可以通过对文件占用的扇区进行记录,从而将对文件的查找转换为利用CHS定位法对文件所占用扇区进行查找

2. 磁盘的逻辑抽象

2.1 磁盘 -> 线性空间

在这里插入图片描述

我们可以来回忆一下以前听英语听力时用到的磁带,磁带盒里的磁带存储着数据,且是一个圆盘状,我们可以将其和磁盘的盘面类比。如果我们将磁带盒里的磁带都抽出来,那么它就成了数十米的条带。

类似的,我们也可以将磁盘作类似的抽象:将盘面的也像磁带一样展开,这样一个盘面也就成了一个线性的空间,而磁盘就是多个线性空间的组合,也就是一个巨大的线性空间,而这个空间的基本单位就是扇区

可以做出总结:磁盘实际上就是一个巨大的数组,数据的每个下标就是一个扇区

在这里插入图片描述

从而,我们对磁盘文件的管理就转换成了对数组的增删查改

既然扇区是这块线性空间的基本单位,那么空间的每个一下标就对应着一个扇区。我们在前面提到过用CHS定位法找到扇区对应物理结构的位置,同样,我们也需要通过一个扇区编号这种线性地址来确定扇区所在的位置:

通过上面的方法,我们就可以将一个线性地址转换为CHS地址

2.2 数据块

在这里插入图片描述

上面我们提到,磁盘IO的基本单位为一个扇区,也就是514字节,但是文件系统认为,一次之和磁盘交互512字节效率过于低下,因此规定,文件系统IO的基本单位为4Kb,也就是8个扇区。这一基本单位被称为数据块

在这里插入图片描述

从而,文件系统访问磁盘中的文件就变成了对特定数据块的访问,而为了找到指定的数据块,就需要用到LBA地址

2.3 分区与分组

上面我们将磁盘空间分割成了基本单位为4Kb的线性空间,但是由于磁盘大小往往有几百甚至上千GB,数据块的数量太过庞大

因此操作系统对磁盘空间进行管理时需要采用分治策略:

2.3.1 分区的格式化

在这里插入图片描述

我们用鼠标右击电脑中的磁盘文件,可以看到“格式化”这一选项:

在这里插入图片描述

实际上,通常来说磁盘在出厂时就已经被格式化好了。但是如果我们要对这个磁盘进行分区管理(例如将D盘分200G给E盘),我们就要对分区进行格式化操作:

  • 格式化磁盘分区是分区使用前的必要步骤
  • 被格式化后的分区就是一个文件系统
  • 格式化会清空分区原有的数据,因此要注意重要数据的备份

2.3.1 组(group)的管理

在这里插入图片描述

一个组(group)的内容通常由下面这些内容组成:

在这里插入图片描述

为了方便理解这些内容,我们先来回顾一下文件这一概念:

inode Table && inode Bitmap

Data Blocks && Block Bitmap

文件内容和属性的联系:

Group Descriptor Table:

Super Block

2.3.2 目录、文件名与inode

在这里插入图片描述

在Linux中,一切皆文件。因此我们知道目录也是一个文件,因此目录也有它的inodeinode 编号

在这里插入图片描述

而目录的内容,存放的就是目录里面文件名和文件对应inode 编号的映射关系

我们前面提到过,系统查找一个文件时,直接使用的不是文件名,而是该文件的inode 编号,具体过程应该是这样的:

因此我们可以得出这样的结论:

  • 文件的增、删、查、改都是和文件所在的目录有关的
  • 查找一个文件,都要逆向回溯到根目录/,从根目录进行路径解析,从而得到文件的具体位置

有了对inode的理解,我们也可以重新回顾一下目录权限的概念:

2.3.3 重谈文件的新建与删除

新建文件:

删除文件:

注意:

举报

相关推荐

类与对象.

JAVA:类与对象

类与对象java

JAVA//对象与类

Java类与对象

类与对象(上篇)

一、类与对象

0 条评论