smartlu 发表于 2004-2-25 16:16:43

高速缓存的困惑

高速缓存的硬件基础是memory吧,为了解决少访问磁盘,
但可以用write back 或者write throngh 策略,
不要高速缓存(毕竟其占用了memory的空间),直接用内存管理的统一策略来管理整个memory。
高速缓存在linux中的意义应该是什么呢?采用hash结构是为了什么?
我看这段总是觉得高速缓存和通常的内存相比没什么优点?很困惑!

kakuyou 发表于 2004-2-25 16:44:21

你是说磁盘数据缓存还是高速缓存?

高速缓存是一种访问速度超快的内存,因为主存的访问速度与cpu的执行速度相比就好像乌龟和飞机,大部分时间CPU都是在等待内存访问,所以把数据放在高速缓存里执行当然要比放在主存里执行快。

任何策略都只有一个目的,让CPU尽量访问高速存储设备而少去访问低速设备,CPU相对于系统的其它部件实在是太快了。

smartlu 发表于 2004-2-25 23:45:14

当然说的是磁盘的,或者应该叫缓冲区?!
不是cache,cache和memory物理上不是一种材料,
但是磁盘的数据缓存就是物理上memory中的一部分
我个人觉得并没有必要,linux和windows在这上面的处理方法完全不同,
我想linux的磁盘性能好,但为什么好,没有从原理上看出来,
请高手指点!

wxlwxl 发表于 2004-2-26 11:34:43

我理解的是所谓的缓存是将已经没有用处的内存块不马上释放,而是放在缓存中,它的数据结构都存在只是其内容没有意义。当再次需要这样的一个数据结构时直接从缓存中取出,填充其数据结构就可以了,而不用从slab或者buddy再次分配

kakuyou 发表于 2004-2-26 12:23:35


不是cache,cache和memory物理上不是一种材料,

不是一种材料有什么关系,一样可以map到4g的地址空间里。

但是磁盘的数据缓存就是物理上memory中的一部分


什么意思呢?你是说用统一的地址空间访问吗? 如果想让cpu直接访问一块数据,这是必须的阿。

smartlu 发表于 2004-2-28 16:55:40

感谢两位的回复,我有点明白了,针对硬盘的缓冲区可以是硬盘自带的,也可以使操作系统划分的内存中的一部分,这样做主要是因为硬盘的读写大部分时间用于寻道,充分的利用缓冲区,一次读写做大数据量的操作。也就是说一次读写10k的数据要比10次分别读写1k的数据访问硬盘的时间要少很多。
个人理解,欢迎讨论

muddog 发表于 2004-3-1 17:25:19

磁盘高速缓冲主要是为了减少物理寻道时间,
充分利用对连续扇区重复访问率高的优势打造的
如果磁盘没有磁头移动象ram那样,那高速缓冲就没必要了
页: [1]
查看完整版本: 高速缓存的困惑