首页
社区
课程
招聘
[讨论]创建一个进程到底需要多少内存开销??
发表于: 2008-12-9 00:49 4980

[讨论]创建一个进程到底需要多少内存开销??

2008-12-9 00:49
4980
我是这么计算页表所花的内存的:
每个进程有4GB的地址空间 内存管理的最小单位是4KB
那个也就是说有4*1024*1024 / 4 =1MB 的个表项

如果每个表项占用  10 个字节(这是我个假设的,有可能更多)
那个每创建一个进程,光 页表就花去了10*1MB=10MB的内存????

不知道我这样认为对不对????我十分困惑,求高人指点迷津!!!!!!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
首先,页表是由页目录和页表项组成,页目录每个条目4B,共1024个,每个页表目录项指向1024个页表项,而每个页表项占用4B,所以按你的假设,应该是共4KB+4MB的内存~

但是呢,每个进程不会用到4GB那么多内存,所以也不会存在那么多的页表,应该是随着进程需要的内存大小增加,而增加页表大小~
2008-12-9 22:51
0
雪    币: 267
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3

但是呢,每个进程不会用到4GB那么多内存,所以也不会存在那么多的页表,应该是随着进程需要的内存大小增加,而增加页表大小~


老兄,首先谢谢你的回答!!!可是,有资料证明你的说法吗????还是自己这么想的???
因为事关 学习,所以不敢贸然相信...

我知道应用程序是不可能得到4GB的物理内存的,但是,进程访问4GB虚拟内存中的任何一个地址都是有可能的...如果不先做好页表项以提供地址映射,程序如何运行??

如果是动态增加页表大小 的话???那系统是如何管理  所有页表所占的那部分内存???那不还得建数据结构对这部分内存进程管理??我实在是想不通啊???
2008-12-9 23:37
0
雪    币: 267
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
没有回复??顶起来!!!!!!!
2008-12-10 18:40
0
游客
登录 | 注册 方可回帖
返回
//