[Linux内存]——内核地址空间
来源:互联网 发布:淘宝集市店怎样注册 编辑:程序博客网 时间:2024/06/16 16:10
一,为什么需要高端内存
答:对于32位机器,linux虚拟内存最大为4G,其中3-4G空间是用作内核空间,考虑到如果物理内存大于1G,那么物理内存不能得到完全的映射, 因此,Linux 规定“内核直接映射空间” 最多映射 896M 物理内存,ARM体系架构上有高端内存的概念,不过不是固定在896M以上的区域~
答:对于32位机器,linux虚拟内存最大为4G,其中3-4G空间是用作内核空间,考虑到如果物理内存大于1G,那么物理内存不能得到完全的映射, 因此,Linux 规定“内核直接映射空间” 最多映射 896M 物理内存,ARM体系架构上有高端内存的概念,不过不是固定在896M以上的区域~
二,linux内核地址空间
linux虚拟地址3G到4G的空间为内核地址空间,内核空间是由内核负责映射,他并不会跟着进程改变,是固定的。
1,3G---3G+896M是直接映射区,该区域的线性地址和物理地址存在线性转换关系:线性地址=3G+物理地址。
2,3G+896M---3G+896M+120M为动态内存映射区,该区域由内核函数vmalloc来分配,特点是:线性空间连续,但是对应的物理空间不一定连续。vmalloc分配的线性地址所对应的物理页可能处于低端内存,也可能处于高端内存。
3,接下来4M为永久内存映射区,该区域可访问高端内存。访问方法是使用alloc_page(_GFP_HIGHMEM)分配高端内存页或者使用kmap函数将分配到的高端内存映射到该区域。4,最后4M为固定映射区,该区域和4G的顶端只有4k的隔离带,其每个地址项都服务于特定的用途,如ACPI_BASE等
注:以上的值不是固定的,在各个不同平台上或者各个不同实现上可能都是不同的~
0 0
- [Linux内存]——内核地址空间
- linux内存管理mmu-内核地址空间
- linux内核地址空间和高端内存
- linux内核——进程地址空间
- linux内核笔记——内核地址空间
- linux用户空间与内核空间—高端内存详解
- Linux内核地址空间
- linux内核地址空间
- Linux内核地址空间
- Linux内核学习6:内存管理(2)-进程地址空间
- Linux 内核空间地址映射 高端内存 总结
- 《Linux内核设计与实现》——进程地址空间
- linux 内核—进程的地址空间(1)
- linux内核-内存地址
- Linux内存管理(五)——内核空间管理
- Linux内核-进程地址空间
- Linux内核地址空间分布
- Linux内核--内核地址空间分布和进程地址空间
- MATLAB金融工具箱(一)--快速入门
- USB架构浅谈
- 进程与线程的一个简单解释——图文类比
- DLL分配的内存如何在EXE里面释放
- Android实现批量添加联系人到通讯录
- [Linux内存]——内核地址空间
- Java中一种字符串的内存管理方法
- build.prop优化项目
- 后缀数组 BZOJ 1031: [JSOI2007]字符加密Cipher
- 阅读repo脚本
- 收藏一些好网站
- 海量数据的算法面试题
- xml形式数据解析
- Git学习笔记(二)