Linux2.6-4G的线性地址空间的分配与使用
2016-06-13 00:00
344 查看
一、4G线性空间的使用
1.0-3G属于用户空间,无论是用户态还是内核态都可以寻址,但是内核一般不访问这里的数据
3-4G属于系统空间,只有内核态的进程才可以访问。
二、系统空间
1.3G-4G的系统空间的使用
(1)3G ----- 3G+high_memory:对前896MB RAM进程映射的线性地址
(2)high_memory ----- PKMAP_BASE:非连续内存区。两个区间之间有4KB或8KB的空隔,是为了捕获对内存的越界访问
(3)PKMAP_BASE ----- FIXADDR_START:永久内核映射
(4)FIXADDR_START ----- 4G:固定映射的线性地址
2.高端内存的页框的内核映射 ----- 物理地址中的ZONE_HIGHMEM怎么与系统空间中的128MB建立映射?
(1)永久内核映射
原理:使主内核页表中的一个专门的页表来建立映射,最多可映射2MB或4MB(开启PAE)
缺点:如果页表是没有空闲的项来建立这种映射,就会阻塞当前进程,因此不能用于中断处理程序或可延迟函数
(2)临时内核映射
原理:每个CPU包含13个窗口,高端内存的任意一页页框可以通过一个窗口来建立映射。
这13个窗口仅限于当前内核控制路径使用,因此在使用过程中不能被阻塞
优点:从不阻塞当前进程
缺点:同时只能建立13个,数量比较少。且使用它的内核控制路径不能阻塞
(3)非连续内存分配
每个非连续内存区用一个vm_struct来描述符,
分配时,先申请一个vm_struct,并为其分配页框,最后修改页内核使用的页表
四、
只要处于内核态的一个进程为“高端”线性地址修改了页表项,就相应地更新系统中所有进程页表集合中相应的表项
每一个高端地址必须被重新映射时,内核就更新主内核页全局目录中的常规页表集合
三、用户空间
1.0 - 3G的用户空间的分配
从0G开始依次是代码段、数据段、BSS段,从3G往下是堆栈
通过mm_struct来管理其线性空间,每一个区间用vma_struct来表示。vma_struct构成一棵红黑树
进程所拥有的线性地址不重叠
1.0-3G属于用户空间,无论是用户态还是内核态都可以寻址,但是内核一般不访问这里的数据
3-4G属于系统空间,只有内核态的进程才可以访问。
二、系统空间
1.3G-4G的系统空间的使用
(1)3G ----- 3G+high_memory:对前896MB RAM进程映射的线性地址
(2)high_memory ----- PKMAP_BASE:非连续内存区。两个区间之间有4KB或8KB的空隔,是为了捕获对内存的越界访问
(3)PKMAP_BASE ----- FIXADDR_START:永久内核映射
(4)FIXADDR_START ----- 4G:固定映射的线性地址
2.高端内存的页框的内核映射 ----- 物理地址中的ZONE_HIGHMEM怎么与系统空间中的128MB建立映射?
(1)永久内核映射
原理:使主内核页表中的一个专门的页表来建立映射,最多可映射2MB或4MB(开启PAE)
缺点:如果页表是没有空闲的项来建立这种映射,就会阻塞当前进程,因此不能用于中断处理程序或可延迟函数
(2)临时内核映射
原理:每个CPU包含13个窗口,高端内存的任意一页页框可以通过一个窗口来建立映射。
这13个窗口仅限于当前内核控制路径使用,因此在使用过程中不能被阻塞
优点:从不阻塞当前进程
缺点:同时只能建立13个,数量比较少。且使用它的内核控制路径不能阻塞
(3)非连续内存分配
每个非连续内存区用一个vm_struct来描述符,
分配时,先申请一个vm_struct,并为其分配页框,最后修改页内核使用的页表
四、
只要处于内核态的一个进程为“高端”线性地址修改了页表项,就相应地更新系统中所有进程页表集合中相应的表项
每一个高端地址必须被重新映射时,内核就更新主内核页全局目录中的常规页表集合
三、用户空间
1.0 - 3G的用户空间的分配
从0G开始依次是代码段、数据段、BSS段,从3G往下是堆栈
通过mm_struct来管理其线性空间,每一个区间用vma_struct来表示。vma_struct构成一棵红黑树
进程所拥有的线性地址不重叠
相关文章推荐
- linux0.12-文件系统-底层通用函数
- Linux0.12-文件系统-系统调用接口
- linux中内存泄漏的检测(二)定制化的malloc/free
- Linux0.12初始化程序
- Linux2.6物理内存管理
- Linux2.6设备管理
- Linux0.12-内存寻址
- Linux0.12中断处理
- centos升级git与及通过git通过ssh克隆代码
- Linux系统下Tar文件安装方法
- linux下infer环境搭建
- SecureCRT访问 VMWare CentOS7
- Linux运维人员成长之路必学书籍资料推荐
- Linux进程关系
- (一)JAVA CPU占用过高问题排查(linux)
- linux命令和工具
- linux 内核编译
- cobbler部署centos7
- Linux设备驱动开发环境搭建
- 【Linux】tar指令用法