操作系统内核地址空间与Procfs实用工具解析
1. 不同架构的内核地址空间
在操作系统中,不同架构的内核地址空间有着各自独特的布局。以下是几种常见架构的内核地址空间情况:
| 架构 | 起始地址 | 关键区域 | 大小 |
| — | — | — | — |
| sun4u | 0x0 | 内核堆、文件系统缓存等 | 不同区域大小各异,如2GB、256MB等 |
| sun4d | 0x0 | 内核堆、文件系统缓存等 | 部分区域大小为251MB、32MB等 |
| sun4m | 0x0 | 内核堆、文件系统缓存等 | 包含100MB、16MB等不同大小区域 |
| x86 | 0x0 | 内核映射、文件系统缓存等 | 存在4MB等大小的区域 |
对于x86架构,默认情况下,内核加载地址为0XE0000000。若要将内核加载到其他地址,可在开放引导模拟器中设置kernelbase参数。降低kernelbase的值会减小可用进程地址空间的大小,但会增加可用的内核虚拟内存量,这在具有大物理内存的系统中可能是必要的。
下面是这些架构内核地址空间的简单流程图:
graph LR classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px; classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px; A([开始]):::s