当前位置: 技术问答>linux和unix
关于linux进程地址空间
来源: 互联网 发布时间:2017-03-28
本文导语: 我想问下,在linux中,一个进程的地址空间是0~3g内核是3g~4g 问题:内核的地址是不是所有的进程都是共享的啊?如果是这样,如果某个进程通过系统调用陷在内核这样,会不会影响到别的进程的内核空间?? ...
我想问下,在linux中,一个进程的地址空间是0~3g内核是3g~4g
问题:内核的地址是不是所有的进程都是共享的啊?如果是这样,如果某个进程通过系统调用陷在内核这样,会不会影响到别的进程的内核空间??
问题:内核的地址是不是所有的进程都是共享的啊?如果是这样,如果某个进程通过系统调用陷在内核这样,会不会影响到别的进程的内核空间??
|
内核在初始化阶段将3-4G的内核空间与0-1G的物理内存建立映射关系,并初始化swapper_pg_dir的后768项(即3-4g的全局页目录基址)并将0-767项目初始为0.
之后内核所有的页面分配都是基于swapper_pg_dir, 不同的进程由于其虚拟地址不同,其分配的页面也不同。 当然内核在某一个页面已分配的情况下,不会再次将其分配出去。
之后内核所有的页面分配都是基于swapper_pg_dir, 不同的进程由于其虚拟地址不同,其分配的页面也不同。 当然内核在某一个页面已分配的情况下,不会再次将其分配出去。
|
我想问下,在linux中,一个进程的地址空间是0~3g内核是3g~4g
A: kernep space和user space是可以在menuconfig中设置,例如进程的地址空间是0~2GB内核是2GB~4GB。
问题:内核的地址是不是所有的进程都是共享的啊?如果是这样,如果某个进程通过系统调用陷在内核这样,会不会影响到别的进程的内核空间??
A: 是,所以会有内核锁和禁止抢占。