linux buffcache

linux buffcache,第1张

要理解下面内容,最好对 *** 作系统存储有一定的了解,包括缺页中断等对于物理内存的使用方式和cpu *** 作硬盘的大概过程等。

linux存在系统buff/cache和CPU cache不同的缓存机制,系统的buff/cache是用于提高硬件IO的 *** 作效率,cpu cache的左右是提高cpu *** 作内存的效率,这摘抄部分关于系统cache的内容,关于cpu内容的后续会补上。

我们在用户层面上对磁盘文件的各种访问,体现在内核里,则最终转化为针对磁盘(块设备)的一系列I/O *** 作。

扇区是块设备的基本单元,也是最小的寻址单元,但是内核却并不是按照扇区来执行磁盘 *** 作,而是于扇区之上又抽象出了一个“块”的概念。内核执行的所有磁盘 *** 作都是按照块来进行的,每个块的大小必须数倍于扇区,而且不能超过一个页面的长度,所以块通常的大小是512Byte、1KB或者4KB。

内核只能基于块来访问物理文件系统,所以与扇区是块设备的最小寻址单元相对应,块也被称为是文件系统的最小寻址单元。一个磁盘块被调入内存时,它需要存储在一个缓冲区中,这个缓冲区就是块在内存中的表示,它在内核中使用structbuffer_head来描述。每个块在内存中都与一个缓冲区相对应,同时都拥有一个buffer_head对象。

内核只能基于块来访问物理文件系统,所以与扇区是块设备的最小寻址单元相对应,块也被称为是文件系统的最小寻址单元。一个磁盘块被调入内存时,它需要存储在一个缓冲区中,这个缓冲区就是块在内存中的表示,它在内核中使用structbuffer_head来描述。每个块在内存中都与一个缓冲区相对应,同时都拥有一个buffer_head对象。

因为内核基于块来访问物理文件系统,而磁盘块与内存中的缓冲区又是一一对应的映射关系,所以为了提高对磁盘的存取效率,内核引入了缓冲区缓存的机制,将通过VFS访问的块的内容缓存在内存中。

在旧版本的内核中,page cache和buffer cache是两个独立的缓存, 前者缓存页,后者缓存块,但是一个磁盘块可以在两个缓存中同时存在,因此除了耗费了额外的内存外,还需要对两个缓存中的内容进行同步 *** 作。 从2.4.10内核开始,buffer cache不再是一个独立的缓存,如图10.8所示的那样,它被包含在page cache中,通过page cache来实现。 对于4KB大小的page来说,根据不同的块大小,它可以包含1~8个缓冲区。

摘自《linux内核修炼之道》

Linux系统中的一切都是从根/目录开始的,并按照文件层次化标准(FHS)采用树形结构来存放文件,以及常见目录的用途。

Linux文件存储结构:

/

/root /bin/boot/dev/etc/home/var/lib/usr/media/tmp/proc

II I

/root/Desktop /root/Media /usr/bin /usr/lib

/boot 开机所需文件-内核、开机菜单以及所需配置文件等

/dev 以文件形式存放任何设备与接口

/etc 配置文件

/home 用户家文件

/bin 存放单用户模式下还可以 *** 作的命令

/lib开机时用到的函数库,以及/bin与/sbin下面的命令要调用的函数

/sbin 开机过程中需要的命令

/media 用于挂载设备文件的目录

/opt 放置第三方的软件

/root 系统管理员的家目录

/srv 一些网络服务的数据文件目录

/tmp 任何人都可使用的共享临时目录

/proc 虚拟文件系统,例如系统内核、进程、外部设备及网络状态等

/usr/local 用户自行安装的软件

/var 主要存放日志等经常变化的文件

linux中SCSI\SATA\U盘的命名规则为/dev/sd[a-p]

硬盘设备是由大量的扇区组成的,每个扇区的容量为512字节。其中第一个扇区保存主引导记录与分区表信息(446字节),分区表64字节,结束字符2字节;其中分区表中每记录一个分区信息就需要占用16字节,这样一来最多只有4个分区信息可以写到第一个扇区中,这四个分区就是主分区。为了解决分区数不够的问题就要将第一个扇区中的分区表中16字节(扩展分区)拿来指向另外一个分区

主分区或扩展分区的编号从1开始,到4结束

逻辑分区的编号从5开始

举个栗子:

主分区1 sda1 主分区2 sda2 主分区3 sda3 扩展分区

I

逻辑分区1 sda5 逻辑分区2 sda6

PS:/dev中sda之所以是a并不是由插槽决定的,而是由系统内核的识别顺序来决定的

PS2:可有手动指定分区的数字编号所以并不能以编号来判定硬盘位置是设备上的第几个

PS3:扩展分区其实并不是一个真正的分区,而更像是一个占用16个字节分区表空间的指针-----一个指向另外一个分区的指针

为什么一般看不见sda4?

通常硬盘分区的二种方式,4p,3p+e,也就是说可以分为4个主分区或者3个主分区加一个扩展分区如果使3p+e的话那么久不存在第4个主分区而是将第四个主分区的位置换为了扩展分区而扩展分区的第一个逻辑分区会被命名为sda5


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7374382.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存