Linux中有关内核用户空间的思维导图,包括字节空间分类、虚拟内核空间到物理空间的映射、内核映像、虚拟内存实现机制间的关系
树图思维导图提供 内核用户空间思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 内核用户空间思维导图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:d662b8b4941d14375b4ed23d8c2d0700
内核用户空间思维导图思维导图模板大纲
内核空间
将最高的 1G 字节(从虚拟地址 0xC0000000 到 0xFFFFFFFF),供内核使用
用户空间
将较低的 3G 字节(从虚拟地址 0x00000000 到 0xBFFFFFFF)
内核空间中存放的是内核代码和数据,而进程的用户空间中存放的是用户程序的代码和数据
不管是内核空间还是用户空间,它们都处于虚拟空间中
内核空间占据了每个虚拟空间中的最高 1G 字节,但映射到物理内存却总是从最低地址(0x00000000)开始
对内核空间来说,其地址映射是很简单的线性映射,0xC0000000就是物理地址与线性地址之间的位移量,在 Linux代码中就叫做 PAGE_OFFSET
宏__pa()仅仅把一个内核空间的虚地址映射到物理地址,而决不适用于用户空间,用户空间的地址映射要复杂得多
定义
内核的代码和数据
当系统启动时,Linux 内核映像被安装在物理地址 0x00100000 开始的地方
1MB 开始的区间(第 1M留作它用)
在正常运行时, 整个内核映像应该在虚拟内核空间中
连接程序在连接内核映像时,在所有的符号地址上加一个偏移量 PAGE_OFFSET
内核映像在内核空间的起始地址就为 0xC0100000
进程的页目录 PGD(属于内核数据结构)就处于内核空间中
该目录的起始地址在内核空间中是虚地址,但 CR3 所需要的是物理地址,这时候就要用__pa()进行地址转换
内存分配和回收机制
地址映射机制
缓存和刷新机制
请页机制
交换机制
内存共享机制