Horizon2012 发表于 2011-09-03 17:55

后备高速缓存作用??

“设备驱动程序常常会反复地分配很多同一大小的内存块。既然内核已经维护了一组拥有同一大小内存块的内存池,那么为什么不为这些反复使用的块增加某些特殊的内存池呢?实际上,内核的确实现了这种形式的内存池,通常称为后备高速缓存.”

在LDD上看到这句话,可是看了几遍都不知道后备高速缓存作用??请问有哪位知道呢??怎么觉得这句话翻译得很别扭的??


CAIYUE10720795 发表于 2013-05-25 13:51

后备高速缓存池是给那些经常需要小空间的驱动程序使用的,这是为了保证内存资源的使用率。实际上,一般内存分配都是调用__get_free_pages()来分配内存,但是这种分配机制都是按页分配,当然如果需求量较大,这是一种不错的方法,但是对于小量的内存申请,就大大浪费了内存资源,因为即使是一个字节,也会给你分配一个页。这就诞生了slabe 后备高速缓存机制,总体是申请若干了页,但是将这些页分成若干小单位的内存,这样就大大提高了资源的利用率。kmalloc() 申请内存时,就是从高速缓冲中申请内存,还有很多使用实例。

weed_hz 发表于 2013-08-30 09:40

那kmalloc() 和kmem_cache_create都是高速缓存,他们又有什么异同呢?

archer239915 发表于 2013-09-06 20:41

你用kmalloc分配内存时可能会睡眠,因为底层会换出页得到你需要的内存。但是后备高速缓存是提前分配好的一些相同大小的内存块,你需要时执行分配
就不会再睡眠了。而且在内存使用效率上也更好一些。

seehearfeel 发表于 2013-09-23 17:49

可以看下英文原版的描述,另外了解一下内存分配的相关东西就明白了。
页: [1]
查看完整版本: 后备高速缓存作用??