linux0.11-高速缓冲区(buffer)底层原理

高速缓冲区在Linux0.11中作为内存与IO设备间的桥梁,减少直接磁盘操作,保护设备。缓冲区位于内核区和主内存之间,由缓冲头和缓冲块组成,通过哈希表和空闲链表管理。内核使用特定函数查找和管理缓冲块,确保数据正确读写。当需要释放缓冲块时,会唤醒等待的进程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件系统-高速缓冲区:

首先我们为什么需要高速缓冲区而不是直接访问块设备中的数据。这是因为,IO设备和内存之间的读写速度不匹配而且有一点数据需要写入或者读出磁盘就访问磁盘,磁盘很快就会损坏,而高速缓冲区就起了一个中间过程的作用,把数据存在高速缓冲区中,需要读取磁盘上的数据时,尝试匹配高速缓冲区中的数据,匹配成功了,那就直接从高速缓冲区中取数据,然后内核再来操作,如果要存入数据,也是先经过缓冲区,再存入磁盘。这样就避免了每次都对IO设备进行操作。

高速缓冲区在整个物理内存中的位置处于内核区和主内存区之间。这里引用《linux0.11代码完全注释》中的图。
这里写图片描述
在高速缓冲区内部,分成了两个部分,一个是缓冲头结构,另一个是缓冲块。每个缓冲块的大小与块设备上的磁盘逻辑块的大小相同,而缓冲头结构用于连接起缓冲块,以及设置一些属性。结构如图:
这里写图片描述

那么内核要使用缓冲块时,是怎么和物理设备对应起来的呢?就比如向某个设备写了一些数据,存储在缓冲块中,这个缓冲块怎么才能把数据写入磁盘中。答案是在缓冲头结构中存储了块设备号和缓冲数据的逻辑块号,它们一起唯一确认

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值