一、块,页,扇区的区别
由上图可以看出磁盘的结构,以前
硬盘的最小单位是扇区
,通常一扇区为512B,但是现在许多磁盘一个扇区就达到了4KB,那么块的概念从哪里来的呢,实际上块并不存在,他只是因为
文件系统
如果一个扇区一个扇区的读数据太慢,所以在文件系统下提出了块的概念,一块一块的读可以大大提高效率,块大小=扇区大小*2^n。
根据文件系统的不同,一个块可以是两个扇区也可以是四个
。综上所述,
文件读取时的最小单位是块
。
扇区是对硬盘而言,磁盘块是对文件系统而言。
所以文件系统操作文件的最小单位是块,而磁盘的基本单位是扇区。
而操作系统与
内存
打交道时才有了
页
的概念,因为如果采用内存的分页机制,内存被分为大小为4K的页面。也是一种虚拟单位。
综上:操作系统操作内存是以页为基本单位、文件系统操作磁盘是以块为基本单位,而磁盘自身读写是以扇区为基本单位。
二、文件系统中inode与高速缓冲区的作用
2.1 inode
i节点描述:
(1)一个i节点可以有多个文件名来对应它
(2)i节点能描述文件占用的块数
(3)
i节点描述了文件大小和指向数据块的指针
(4)通过i节点实现文件的逻辑结构和物理结构的转换
操作系统通过inode以文件的方式操控磁盘,所以说
inode节点是文件与磁盘的映射,文件系统
通过I节点存取文件数据。
0块:引导块,每块1024B
1块:超级块:
超级快记录了总i节点数,逻辑块数,以及记录他们存在的对应的位图数,操作系统也就是根据超级快来处理该分区的文件操作的。
2块:i节点位图,一位一个inode,1024个字节大小,所以可以表示1024*8-1个inode节点,但是第一位不可以用。
3块:逻辑块位图
4…18:i节点区块
19块:数据块,刚好和Linux文件系统分析之二中提到的数据块开始于第19块吻合。
2.2 重点——inode与block找文件
那么inode是什么呢?
Block是记录文件内容的区域,inode则是记录该文件的属性及其放置在哪个Block之内的信息
。所以,
每个文件都会占用一个inode
。
当Linux系统要查找某个文件时,它会先搜索inode table找到这个文件的属性及数据存放地点,然后再查找数据存放的Block进而将数据取出。
inode数量在一开始已被设定好,其设定方式通常是”硬盘大小/一个容量”,这个容量比Block大一些较佳,例如刚才将Block设为4K,那么这个容量可以设为8K左右。所以,一块1GB的硬盘如果以8K 大小划分它的inode数,则会有131072个inode。一个inode的大小为128Byte,这样,我们就可以清楚地知道,
一个分区被格式化为一个文件系统之后,基本上它一定会有inode table与数据区域两大块,一个用来记录文件的属性信息与该文件存放的Block块,一个用来记录文件的内容。
创建一个文件
后,会
同时创建一个inode和一个block
,inode存放的是文件的属性信息,但是不包括文件名,并存放所对应数据所在的block块的地址的指针;block存放文件的数据,每个block最多存放一个文件,而当一个block存放不下的情况下,会占用下一个block。linux里文件的文件名、文件属性、文件内容是分别存储的:
文件名存放在目录项中,文件属性存放在inode中,文件内容存放在数据块中。
2.3 高速缓冲区
用户在访问磁盘时并不是直接操作硬盘,效率很低,所以引入了高速缓冲区,
高速缓冲区是用户与磁盘的映射结构
。
整个高速缓冲区被分为1024字节大小的缓冲块
,
正好与块设备上的磁盘逻辑块大小相同
,高速缓冲采用hash表和包含所有缓冲块的双向循环链表进行操作管理。