我在读LINUX内存管理源代码时,碰见一个表示一段虚拟地址区域的数据结构vm_area_struct。其定义为:struct vm_area_struct {struct mm_struct * vm_mm;/* VM area parameters */unsigned lon...
全文
回复(6) 2002-11-28 15:43 来自版块 - LINUX&UNIX核心开发
表情
donotgo谢谢UNIX1998(2002-11-30 18:58)
unix1998就是vm_start》PAGE_SIZE。 含义就是偏移啊。但是这个值是会变的。 你可以在源代码中理解它。 我不知道该怎么详细的给你说,我想是不是你考虑多了呢? (2002-11-30 17:50)
donotgoUNIX1998,非常谢谢你的回答。我不懂的是PGOFF的具体的含义。例如vm_mm是该虚拟内存区域所属的虚存空间。vm_start是该虚存的起始地址(属于该区域)。vm_end是该虚存的终止地址(不属于该区域)。vm_next是下一个区域的指针。vm_page_prot、vm_...(2002-11-29 16:57)
unix1998因为页大小为4k,所以必须是4k的整数倍。右移12位,保证最后12位是0. (2002-11-29 10:23)
donotgoUNIX1998:你写的我都能用SOURCE INSIDE查到,我不明白的是它的具体含义是什么?是不是该vm_area_struct的开始地址vm_start》PAGE_SIZE?还是有其它的具体含义?我在多个函数中看见对它的赋值,但我看不懂它的含义,一般的分析源代码的书上也是一...(2002-11-28 17:47)
unix1998offset in PAGE_SIZE units, *not* PAGE_CACHE_SIZE #define PAGE_SIZE (1UL << PAGE_SHIFT) PAGE_SHIFT=12(2002-11-28 15:55)

返回顶部