日期:2014-05-16  浏览次数:20728 次

Linux高速缓存详解(一)

个人学习总结,不保证正确性。。。


在Linux高速缓存概述中介绍了Linux 0.11中的高速缓存的基础结构,这一部分将详细分析Linux高速缓存部分的相关函数。

[数据结构]
这里介绍下另外和高速缓存相关的数据结构,高速缓存散列表、空闲链表指针free_list以及等待在缓存块上的指针buffer_wait。它们定义分别如下:(代码来源buffer.c)
struct buffer_head * hash_table[NR_HASH];
static struct buffer_head * free_list;
static struct task_struct * buffer_wait = NULL;
struct buffer_head * start_buffer = (struct buffer_head *) &end;
int NR_BUFFERS = 0;

hash_table就是之前介绍过的缓存散列表,散列函数定义如下
#define _hashfn(dev,block) (((unsigned )(dev^block))%NR_HASH)
#define hash(dev,block) hash_table[_hashfn(dev,block)]