Linux 为每个进程维护一个单独的虚拟地址空间,如下图所示。
- 内核虚拟内存包含内核中的代码和数据结构。
- 内核虚拟内存的某些区域被映射到所有进程共享的物理页面,例如每个进程都共享内核的代码和全局数据结构。
- Linux 也将一组连续的虚拟页面(大小等于系统中 DRAM 的总量)映射到相应的一组连续的物理页面。例如:访问页表,或对设备执行IO操作,这些设备被映射到特定物理内存位置时。
- 内核虚拟内存的其它区域包含每个进程的独有数据,例如页表,内核在进程的上下文中执行代码时使用的栈,以及记录虚拟地址空间当前组织的各种数据结构。