发新话题
打印

请问,关于内核线程的内存描述符

请问,关于内核线程的内存描述符

ULK P274
讲系统中所有经常页表集合中的集合的延迟更新

每当一个高端地址必须被重新映射,内核就更新根目录在swapper_pg_dir住内核也全局目录中的常规页表集合.......

没看出所谓的“延迟”体现在什么地方?
根目录是指什么呢?

哪位能详细讲解一下,多谢~~
顺便再请教一下
进程地址空间的寻找一个空闲区间
如果addr为0,或者前一次搜索失败,搜索的起点就置为用户态线性地址空间的三分之一
ULK 2 P284

三分之一有什么特别的来源么?或者有什么原因没??
内核维持着一组自己使用的页表,驻留在所谓主内核页全局目录(master kernel Page Global Directory)中。系统初始化后,这组页表还从未被任何进程或任何内核线程直接使用;更确切地说,主内核页全局目录的最高目录项部分作为参考模型,为系统中每个普通进程对应的页全局目录项提供模板。
页全局目录放在swapper_pg_dir变量中,
extern pgd_t swapper_pg_dir[1024];

页全局目录由存放于init_mm变量中主内存描述符中的pgd字段描述:
struct mm_struct init_mm = INIT_MM(init_mm);



#define INIT_MM(name) \
237 {                                                       \
238         mm_rb:          RB_ROOT,                        \
239         pgd:            swapper_pg_dir,                 \
240         mm_users:       ATOMIC_INIT(2),                 \
241         mm_count:       ATOMIC_INIT(1),                 \
242         mmap_sem:       __RWSEM_INITIALIZER(name.mmap_sem), \
243         page_table_lock: SPIN_LOCK_UNLOCKED,            \
244         mmlist:         LIST_HEAD_INIT(name.mmlist),    \
245 }

延迟体现在缺页处理,参考P303。
透析真谛,似拨云穿雾;共享智慧,如春风沐浴
http://www.kerneltravel.net
引用:
原帖由 yyfiby 于 2007-8-5 21:29 发表
顺便再请教一下
进程地址空间的寻找一个空闲区间
如果addr为0,或者前一次搜索失败,搜索的起点就置为用户态线性地址空间的三分之一
ULK 2 P284

三分之一有什么特别的来源么?或者有什么原因没??
elf格式的可执行代码中,ld总是从0x8000000开始安排程序的“代码段”,对每个程序都是这样。
透析真谛,似拨云穿雾;共享智慧,如春风沐浴
http://www.kerneltravel.net
引用:
原帖由 陈莉君 于 2007-8-6 11:01 发表
内核维持着一组自己使用的页表,驻留在所谓主内核页全局目录(master kernel Page Global Directory)中。系统初始化后,这组页表还从未被任何进程或任何内核线程直接使用;更确切地说,主内核页全局目录的最高 ...
多谢陈老师~~~
引用:
elf格式的可执行代码中,ld总是从0x8000000开始安排程序的“代码段”,对每个程序都是这样。
还是没搞懂和三分之一有什么联系呢~
劳烦陈老师给笨学生再讲一下~~

thx~
发新话题