Linux的线性地址空间分配 4G线性地址空间分为用户空间和内核空间,内 核空间又分为物理内存区、虚拟内存分配区 高端页面映射区、专用页面映射区和系统保留 映射区 ■线性地址从0X00000000到 OXBFFFFFFF的3G 为用户和内核共同访问,0XC0000000以上的 1G由内核独享,用户态无法访问 ■因此所有进程的页目录的后四分之一均指向内 核页目录的相应目录项。为减小同步的开销, 内核只在处理 page faul时同步用户进程的页 目录项,因此页目录项不一致的情况是有的
Linux的线性地址空间分配 ◼ 4G线性地址空间分为用户空间和内核空间,内 核空间又分为物理内存区、虚拟内存分配区、 高端页面映射区、专用页面映射区和系统保留 映射区 ◼ 线性地址从0x00000000到0xBFFFFFFF的3G 为用户和内核共同访问,0xC0000000以上的 1G由内核独享,用户态无法访问 ◼ 因此所有进程的页目录的后四分之一均指向内 核页目录的相应目录项。为减小同步的开销, 内核只在处理page_fault时同步用户进程的页 目录项,因此页目录项不一致的情况是有的
Linux的线性地址空间分配 虚拟内核态空间lGB) 虚拟用户态空间 进程1的进程2的 进程n的 用户态空用户态空 用户态空 间(3GB)间(3GB) 间(3GB) Linux进程的虚拟空间
Linux的线性地址空间分配
Linux的线性地址空间分布 Memory layout of ELF programs Kernel Virtual Memory memory invisible to user mode code Stack Memory mapped region memory mapped region File-mapping Shared libraries The brk pointer run-time data uninitialized data Initialized data Program text
Linux的线性地址空间分布 Memory mapped region: File-mapping Shared libraries