mordorwww 发表于 2016-07-13 09:12

内核线程有独立的mm页表和 cr3么

内核线程有独立的mm cr3么
switch时要切换CR3
内核线程调用do_exit
似乎应该有

captivated 发表于 2016-07-14 13:23

是,必须有,其实内核的观点来说只有 task, 每个可以调度的实体都是一个 task_struct 的实例。

mordorwww 发表于 2016-07-14 15:41

captivated 发表于 2016-07-14 13:23 static/image/common/back.gif
是,必须有,其实内核的观点来说只有 task, 每个可以调度的实体都是一个 task_struct 的实例。

主要是因为内核线程没有用户内存区页表,只有内核内存区页表,而内核内存区页表所有线程进程都是一样的
所以这里可能不止一种选择?

nswcfd 发表于 2016-07-15 09:44

发散一下,有没有可能kernel thread借用某个普通进程(例如当前被它preempt掉的进程)的页表?
当然它需要独立的kernel stack。

zhanglong71 发表于 2016-07-18 13:31

nswcfd 发表于 2016-07-15 09:44 static/image/common/back.gif
发散一下,有没有可能kernel thread借用某个普通进程(例如当前被它preempt掉的进程)的页表?
当然它需要 ...

从已有的资料看,kernel thread就是借用某个普通进程的页表。似乎就是当前CPU上运行的前一个进程的页表

nopatch 发表于 2016-08-13 21:45

回复 5# zhanglong71

对,LKD上有讲这个问题。
我翻翻书,撸撸代码,然后贴相关的代码上来。


   
页: [1]
查看完整版本: 内核线程有独立的mm页表和 cr3么