mordorwww 发表于 2016-02-19 12:23

回复 10# bensenq



HI bensenq兄,

当内核在各个进程上下文下运行时,各进程不需要更新自己页目录/页表的内核部分的vmalloc区域的页目录/页表么?
内核vmalloc区域会产生pagefault,这个至少在2.6内核是如此的


   

nswcfd 发表于 2016-02-19 17:37

ULK里对vmalloc的部分有过描述,由于调用vmalloc分配内存的进程(通常在init module的时候)跟使用该内存的进程未必是同一个,需要init_mm来中转一下。

另外,vmalloc分配的时候,页面是已经分配好的,只是page table相关的条目只能在当前进程和init_mm的上下文修改。
如果在其它进程的上下文访问vmalloc的内存,首次应该会产生page fault,只是这次fault之后,不需要分配页面(不允许睡眠的根本原因?),只需要根据init_mm修正一下当前进程的页表即可。

印象中是这么个过程,没有实际check过,如果有错误,勿怪。

wp22_justdo 发表于 2016-02-23 16:40

本帖最后由 wp22_justdo 于 2016-02-23 23:12 编辑

11111111111111111111111111111111
页: 1 [2]
查看完整版本: 驱动模块加载的致命问题