首页
社区
课程
招聘
[求助]linux系统可以在512MB内存运行吗?
发表于: 2015-9-19 20:39 4868

[求助]linux系统可以在512MB内存运行吗?

2015-9-19 20:39
4868
  请教linux系统可以在512MB内存运行吗?因为书上说:系统空间占据了虚存空间的最高1G字节,在物理内存是从最低的0地址开始,以0xC0000000做一下偏移,便完成了地址映射。这句话是不是等同于说:物理内存的低1G空间,必须给内核留着。那512MB或1G内存,用户进程岂不没有一点自己的空间?那不就跑不了用户程序了吗?
  还有个问题是,反正1G都是自己的,为什么不直接使用物理地址,还要0xC0000000偏移一下?

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

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 2155
活跃值: (29)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
windows的内存地址空间最高2G还是系统内核呢。。。
内存地址空间4G范围,难道还真的要插上4G内存条才能运行?
LZ需要理解物理内存和虚拟内存的区别,同时需要理解内存管理,分段、分页、页面置换等等等等。
建议找本书看看吧,《linux内核完全注释》就可以,网上有pdf,还是彩色的插图呢。
2015-9-19 21:51
0
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
请问楼主看的是哪本书?求书名~
2015-9-19 21:55
0
雪    币: 13
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
《Linux内核源代码情景分析》。
2015-9-19 22:08
0
雪    币: 90
活跃值: (91)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这个问题真蛋疼
别说512了, 8M都行
2015-9-19 22:27
0
雪    币: 689
活跃值: (422)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
6
在虚拟机里装ubuntu server版,设置成512M内存,启动起来内存还剩300多M,你可以试试
其他的问题实在是太深层次了,我也不是很懂.但是你要分清两个概念,应用程序所用的内存不是直接使用物理内存,会被操作系统做一次虚拟映射,使用内存映射,即使只有512M,应用程序跑起来也会得到4G的空间,但是,这是虚拟的.
2015-9-20 10:56
0
雪    币: 6825
活跃值: (1570)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
是可以运行的,操作系统并不是一次全部载入内存,采用分页机制,需要哪个部分再载入就可以
2015-9-20 12:17
0
雪    币: 13
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
嗯,用户进程里面使用的是逻辑地址(0x0-0xBFFFFFFF),经过MMU的段式映射、页式映射,分别得到线性地址、物理地址,这个我理解。
就是看到对系统空间的描述时,我晕了:



我不理解的是这2句话是什么意思:
① “对于系统空间而言,给定一个虚拟地址x,其物理地址是从x中减去PAGE_OFFSET”
    内核虚拟地址x - PAGE_OFFSET = 物理地址? 物理地址不是MMU根据段寄存器和程序中的逻辑地址经过段式映射、页式映射,得到的吗?
② “当然,CPU并不是通过这里所说的计算方法进行地址映射的,__pa()只是为内核代码中为知道与一个虚地址对应的物理地址时提供方便”
    这句话不矛盾吗?CPU不通过这种方法映射,也能将内核中某个虚拟地址x映射成和__pa(x)同样的结果吗?
上传的附件:
2015-9-20 12:22
0
雪    币: 689
活跃值: (422)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
9
对于第一个问题,你看紧接着的一句话,就是第二条红线下的那句话,第二个问题我不是很明白
2015-9-27 22:31
0
游客
登录 | 注册 方可回帖
返回
//