第7章获取内存-Read.doc

第7章获取内存-Read.doc

第7章 获取内存 到目前为止,我们总是用kmalloc和kfree来进行内存分配。当然,只用这些函数的确是管理内存的捷径。本章将会介绍其他一些内存分配技术。但我们目前并不关心不同的体系结构实际上是如何进行内存管理的。因为内核为设备驱动程序提供了一致的接口,本章的模块都不必涉及分段,分页等问题。另外,本章我也不会介绍内存管理的内部细节,这些问题将留到第13章“Mmap和DMA”的“Linux的内存管理”一节讨论。 kmalloc函数的内幕 kmalloc内存分配引擎功能强大,由于和malloc函数很相似,很容易就可以学会。这个函数运行得很快-一除非它被阻塞-一它不清零它获得的内存空间;分配给它的区域仍存放着原有的数据。在下面几节,我会详细介绍kmalloc函数,你可以将它和我后面要介绍的一些内存分配技术作个比较。 优先权参数 kmalloc函数的第一个参数是size(大小),我留在下个小节介绍。第二个参数,是优先权,更有意思,因为它会使得kmalloc函数在寻找空闲页较困难时改变它的行为。 最常用的优先权是GFP_KERNEL,它的意思是该内存分配(内部是通过调用get_free_pages来实现的,所以名字中带GFP)是由运行在内核态的进程调用的。也就是说,调用它的函数属于某个进程的,使用GFP_KERNEL优先权允许kmalloc函数在系统空闲内存低于水平线min_free

文档评论(0)

1亿VIP精品文档

相关文档