linux下扇区、块、页的区别+inode与高速缓冲区在linux文件系统的作用
一、块,页,扇区的区别
由上图可以看出磁盘的结构,以前硬盘的最小单位是扇区,通常一扇区为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表和包含所有缓冲块的双向循环链表进行操作管理。
相关文章
- [Linux] linux文件系统学习
- 【Linux】linux之如何清理磁盘空间
- [shell]Linux脚本开头#!/bin/bash和#!/bin/sh是什么意思以及区别
- Linux┊理解devfs、sysfs、udev、tmpfs等各种文件系统
- Linux基础之linux常用命令之文本替换
- Linux基础之linux服务器服务器间拷贝文件
- Linux RAID1和RAID5的区别
- 【Linux 内核】调度器 ⑧ ( 进程优先级源码 includelinuxschedprio.h | 进程分类 | 实时进程 | 普通进程 | 进程优先级数值 | 0 ~ 99 实时进程 )
- linux 文件名称前后缀操作函数----取目录函数dir、取文件名称函数notdir、取后缀函数suffix、取前缀basename、加后缀函数addsuffix、加前缀addprefix、连接函数join
- linux的find和grep区别?
- Linux traceroute打印到网络主机的路由包跟踪
- L63.linux命令每日一练 -- 第九章 Linux进程管理命令 -- runlevel、init和service
- L52.linux命令每日一练 -- 第八章 Linux磁盘与文件系统管理命令 -- resize2fs和fsck
- L48.linux命令每日一练 -- 第七章 Linux用户管理及用户信息查询命令 -- last、lastb和lastlog
- Linux下Camera驱动结构
- 嵌入式Linux开发,Ubuntu下交叉编译内核报错:error while loading shared libraries: /lib/x86_64-linux-gnu/libc++.so:
- Linux/Android下获取当前进程ID、进程名、进程路径
- linux bash shell 正则表达式
- Linux启动流程与模块管理