QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1097|回复: 2

请教一个Linux内存分配的问题

[复制链接]
发表于 2004-9-2 15:12:10 | 显示全部楼层 |阅读模式
我看的是2.4.0的版本,是浙大出的那本内核源代码情景分析
看到存储管理的有关内存分配的地方有点不懂
首先,Linux将4G的虚存空间(32位地址)分成“系统空间”(0xC0000000-0xFFFFFFFF))和“用户空间”(0x00000000-0xBFFFFFFF),其中系统空间是从物理地址的0开始分配的。
而且在系统空间中可以通过__pa(x)(将虚拟地址转换为物理地址)和__va(x)(将物理地址转换为虚拟地址)进行地址转换
#define __pa(x) ((unsigned long)(x)-PAGE_OFFSET //PAGE_OFFSET=0xC00000000
也就是虚拟地址的0xC0000000对应的物理地址是0

但是,剩下的用户空间的分配我有点搞不明白了
书中有个地方说“在内核对用户虚存空间的使用中,堆栈在用户区的顶部,从上向下延伸,而进程的代码和数据都是自底向上分配空间”
是不是说堆栈段是从用户区顶部0xBFFFFFFF开始向虚存地址减少的方向分配,而数据段和代码段是从虚拟地址的0x00000000开始向着地址增大的方向分配的?
还有,在vm_area_struct中vm_start是不是一定是比vm_end小?

谢谢!
 楼主| 发表于 2004-9-4 14:39:12 | 显示全部楼层
等了2天了,没人理我。
回复

使用道具 举报

发表于 2004-9-12 22:20:11 | 显示全部楼层
你自问的都自答了还让别人说什么
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-16 05:44 , Processed in 0.043148 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表