当前位置: 技术问答>linux和unix
进程在内核态执行时的cr3寄存器是什么
来源: 互联网 发布时间:2017-03-22
本文导语: 本帖最后由 lonewolfxw 于 2012-11-14 22:05:50 编辑 虚拟内存空间分为用户部分和内核部分,用户进程只能使用页表访问用户部分的虚拟地址,且使用mm_struct的pgd置cr3寄存器的值,供分页部件查找实现共线性地址到物理地址...
论坛等级太低,限制最多只能给100分的,希望大家帮忙
|
fork的时候copy_mm()是通过memcpy(mm, oldmm, sizeof(*mm))将父进程的mm_struct整个copy过去的,所以父子进程的内核页表的内容也是一样的
但是,当某个进程通过vmalloc()分配了一段新的非连续内存时,内核页表的变化并不是立通知内核中所有的其他进程,而只是更新了主内核页表init_mm.pgd(也就是swapper_pg_dir),当其他某个进程访问到这段新的非连续内存时,会产生page fault, 中page fault处理中检查init_mm.pgd中是否存在相应的内容,如果存在,则将主内核页表里相应的项copy到内程页表,如果不存在,内核crash.
但是,当某个进程通过vmalloc()分配了一段新的非连续内存时,内核页表的变化并不是立通知内核中所有的其他进程,而只是更新了主内核页表init_mm.pgd(也就是swapper_pg_dir),当其他某个进程访问到这段新的非连续内存时,会产生page fault, 中page fault处理中检查init_mm.pgd中是否存在相应的内容,如果存在,则将主内核页表里相应的项copy到内程页表,如果不存在,内核crash.
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。