linux内核地址空间与用户地址空间的差别

来源:互联网 发布:oppor94g网络设置在哪 编辑:程序博客网 时间:2024/05/24 15:36
本文仅限在i386平台下讨论一般情况。

1、用户线性地址空间范围0-3G,内核线性空间范围3G-4G。
2、内核总是立即满足内核空间的物理内存分配,并且分配结果对所有进程可见;而对于用户空间的内存分配请求,linux总是先保留用户线性地址空间的一段区域,然后修改页表项使这段线性区域都指向一页内容全为0的全局只读物理页。当进程写入这段线性区域时,将会产生一个缺页异常,这时系统才会为对应的线性地址分配物理页面,并且把物理页对应的页表项置为可写。为了保持和全局只读物理页内容一致,新分配的物理页内容也会全置为0。
3、用户线性空间是不可靠的,一般情况下它会随着进程的切换而改变(在lazy TLB切换下除外);而内核线性空间对所有的进程都一样,不会随着进程的切换而改变。