Linux高速缓存概述

本文介绍了Linux内核中的数据缓冲区高速缓存,详细阐述了高速缓冲区的工作原理,包括如何减少磁盘存取频率以及数据结构的设计,如buffer_head结构及其重要字段的解释。
摘要由CSDN通过智能技术生成
[数据缓冲区高速缓存]
内核通过保存一个称为数据缓冲区高速缓存的内部数据缓冲区池来试图减小对磁盘的存取频率。高速缓冲含有最近被使用过的磁盘块的数据
在Linux内核0.11中,它默认最多支持16M的物理内存。对系统内存的分配情况如下:Linux内核占用物理内存最前段的一部分。随后是高速缓冲区,它的最高内存地址为4MB。高速缓冲区被显示内存和ROM BIOS分成两段。剩余的内存部分称为主内存区,当然若系统中还存在RAM虚拟盘,则主内存区前段还要扣除虚拟盘所占的内存空间。示意图如下。

[高速缓冲区的工作原理为]
     当内核从磁盘中读取数据时,内核试图先从高速缓冲中读。如果数据已经在该高速缓冲中,则内核可以不必从磁盘上读。如果数据不在该高速缓冲中,则内核从磁盘上读数据,并将其缓冲起来。
     写操作与之类似,要往磁盘上写的数据也被暂存于高速缓冲中,以便如果内核随后又试图读它时,它能在高速缓冲中。内核也通过判定是否数据必须真的需要存储到磁盘上,或数据是否是将要很快被重写的暂时性数据,来减少磁盘写操作的频率。

[高速缓存的数据结构]
     整个高速缓存由很多缓存块组成,在Linux 0.11版本中,整个高速缓存由307块高速缓存块组成。每个缓存块主要由两部分组成:1、被缓存的数据部分;2、标识该缓存块信息的部分。将标识该缓存块信息的部分称为缓存头,buffer_head。在buffer_head中由指针指向被缓存的数据buffer_data。每个高速缓存块的组成示意图如下
    
buffer_data指向的缓存数据大小是与文件系统上一个逻辑块的大小相对应的。也就是说,在对数据进行缓存的时候,是以逻辑块为单位的。Linux 0.11中高速缓存相关的数据结构如下所示(代码来自于fs.h)
struct  buffer_head {
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值