免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4623 | 回复: 9
打印 上一主题 下一主题

[内核入门] linux系统可以在512MB内存运行吗? [复制链接]

论坛徽章:
13
15-16赛季CBA联赛之八一
日期:2016-07-08 21:00:1415-16赛季CBA联赛之同曦
日期:2017-02-15 14:26:1515-16赛季CBA联赛之佛山
日期:2017-02-20 14:19:2615-16赛季CBA联赛之青岛
日期:2017-05-07 16:49:1115-16赛季CBA联赛之广夏
日期:2017-07-30 09:13:1215-16赛季CBA联赛之广东
日期:2018-07-05 22:34:3615-16赛季CBA联赛之江苏
日期:2018-09-03 12:10:2115-16赛季CBA联赛之上海
日期:2018-09-25 03:49:2215-16赛季CBA联赛之广东
日期:2018-09-25 04:09:12
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-09-19 21:08 |只看该作者 |倒序浏览
本帖最后由 _nosay 于 2015-09-19 21:50 编辑

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

论坛徽章:
16
天秤座
日期:2014-08-17 11:27:4215-16赛季CBA联赛之青岛
日期:2017-02-27 17:06:3015-16赛季CBA联赛之广夏
日期:2017-02-08 13:34:58白银圣斗士
日期:2015-11-30 20:57:05冥斗士
日期:2015-12-01 09:49:10嗜杀者
日期:2015-12-01 09:49:10白银圣斗士
日期:2015-11-27 23:56:51神斗士
日期:2015-12-01 09:49:10嗜杀者
日期:2015-12-01 09:49:10青铜圣斗士
日期:2015-12-01 09:49:10白银圣斗士
日期:2015-11-25 14:19:53黄金圣斗士
日期:2015-11-24 10:43:13
2 [报告]
发表于 2015-09-19 23:50 |只看该作者
本帖最后由 Jean_Leo 于 2015-09-19 23:51 编辑

1、可以在512M的内存上运行;
2、通常32位的系统,最高1GByte的虚拟内存是内核的,注意是虚拟内存;
3、最高1GByte的虚拟内存是内核的,并非代表这1GByte内存都必须映射到物理内存上面,通常超过1GByte物理内存的情况下会这么做,但是少于这个内存的环境,是不会这么做的;
4、用户进程还是有3GByte的虚拟内存空间可用的,这点不必担心,至于分配给进程的虚拟内存是否映射物理内存,具体是按需映射的;
5、至于偏移到0xC0000000做映射,个人觉得是历史原因导致的,具体我也不懂;
6、为什么不直接用物理内存?假设内核独占了所有内存,那么看来很多人都得在内核态写应用程序了,如果不做映射进行虚拟规划的话,个人的第一直觉是应用程序的可移植性会很差。
——以上是个人的一点愚见。

论坛徽章:
13
15-16赛季CBA联赛之八一
日期:2016-07-08 21:00:1415-16赛季CBA联赛之同曦
日期:2017-02-15 14:26:1515-16赛季CBA联赛之佛山
日期:2017-02-20 14:19:2615-16赛季CBA联赛之青岛
日期:2017-05-07 16:49:1115-16赛季CBA联赛之广夏
日期:2017-07-30 09:13:1215-16赛季CBA联赛之广东
日期:2018-07-05 22:34:3615-16赛季CBA联赛之江苏
日期:2018-09-03 12:10:2115-16赛季CBA联赛之上海
日期:2018-09-25 03:49:2215-16赛季CBA联赛之广东
日期:2018-09-25 04:09:12
3 [报告]
发表于 2015-09-20 12:33 |只看该作者
本帖最后由 _nosay 于 2015-09-20 12:34 编辑
Jean_Leo 发表于 2015-09-19 23:50
1、可以在512M的内存上运行;
2、通常32位的系统,最高1GByte的虚拟内存是内核的,注意是虚拟内存;
3、最 ...





我不理解的是这2句话是什么意思:
① “对于系统空间而言,给定一个虚拟地址x,其物理地址是从x中减去PAGE_OFFSET”
    内核虚拟地址x - PAGE_OFFSET = 物理地址? 物理地址不是MMU根据段寄存器和程序中的逻辑地址经过段式映射、页式映射,得到的吗?
② “当然,CPU并不是通过这里所说的计算方法进行地址映射的,__pa()只是为内核代码中为知道与一个虚地址对应的物理地址时提供方便”
    这句话不矛盾吗?CPU不通过这种方法映射,也能将内核中某个虚拟地址x映射成和__pa(x)同样的结果吗?

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-08-19 06:20:002015亚冠之本尤德科
日期:2015-08-31 23:24:47
4 [报告]
发表于 2015-09-20 14:34 |只看该作者
第一个问题:这种说法是指的直接映射的区域,也就是896M以内的虚拟空间。
该部分虚拟地址与物理地址相差PAGE_OFFSET,它也确实是由页表建立的映射,页表里面建立的就是这种对应关系。

第二个问题:作者想说的是程序员在使用时,可借助__pa进行地址转换,但实际上MMU做的工作要远远比这个复杂的多。

论坛徽章:
13
15-16赛季CBA联赛之八一
日期:2016-07-08 21:00:1415-16赛季CBA联赛之同曦
日期:2017-02-15 14:26:1515-16赛季CBA联赛之佛山
日期:2017-02-20 14:19:2615-16赛季CBA联赛之青岛
日期:2017-05-07 16:49:1115-16赛季CBA联赛之广夏
日期:2017-07-30 09:13:1215-16赛季CBA联赛之广东
日期:2018-07-05 22:34:3615-16赛季CBA联赛之江苏
日期:2018-09-03 12:10:2115-16赛季CBA联赛之上海
日期:2018-09-25 03:49:2215-16赛季CBA联赛之广东
日期:2018-09-25 04:09:12
5 [报告]
发表于 2015-09-20 14:57 |只看该作者
本帖最后由 _nosay 于 2015-09-20 15:11 编辑
夕阳下的孤影 发表于 2015-09-20 14:34
第一个问题:这种说法是指的直接映射的区域,也就是896M以内的虚拟空间。
该部分虚拟地址与物理地址相差PA ...


虚拟地址与物理地址的对应,是由内核事先安排,CPU只是完成在这种安排下通过虚拟地址找到物理地址,而内核之所以有自信把自己使用的地址安排到固定的物理地址,不担心这些物理地址已经被映射到用户进程的虚拟地址,那是因为它比用户进程先运行,而且不会被换出。是这样吗?

另外再请教个问题:如果一个应用程序需要很多内存,会把896MB以下的物理内存映射给该应用进程吗?那这个应用进程执行一段时间后,如果释放了1G地址以上的物理空间,内核又需要申请内存时,由于896MB以内的内存被占用太多,会不会把1G以上的物理内存拿来用?如果会就是通过高端内存来访问的吧?

论坛徽章:
20
程序设计版块每日发帖之星
日期:2015-08-17 06:20:00程序设计版块每日发帖之星
日期:2016-07-16 06:20:00程序设计版块每日发帖之星
日期:2016-07-18 06:20:00每日论坛发贴之星
日期:2016-07-18 06:20:00黑曼巴
日期:2016-12-26 16:00:3215-16赛季CBA联赛之江苏
日期:2017-06-26 11:05:5615-16赛季CBA联赛之上海
日期:2017-07-21 18:12:5015-16赛季CBA联赛之青岛
日期:2017-09-04 17:32:0515-16赛季CBA联赛之吉林
日期:2018-03-26 10:02:16程序设计版块每日发帖之星
日期:2016-07-15 06:20:0015-16赛季CBA联赛之江苏
日期:2016-07-07 18:37:512015亚冠之萨济拖拉机
日期:2015-08-17 12:21:08
6 [报告]
发表于 2015-09-21 11:22 |只看该作者
这是哪本书里的插图?

论坛徽章:
13
15-16赛季CBA联赛之八一
日期:2016-07-08 21:00:1415-16赛季CBA联赛之同曦
日期:2017-02-15 14:26:1515-16赛季CBA联赛之佛山
日期:2017-02-20 14:19:2615-16赛季CBA联赛之青岛
日期:2017-05-07 16:49:1115-16赛季CBA联赛之广夏
日期:2017-07-30 09:13:1215-16赛季CBA联赛之广东
日期:2018-07-05 22:34:3615-16赛季CBA联赛之江苏
日期:2018-09-03 12:10:2115-16赛季CBA联赛之上海
日期:2018-09-25 03:49:2215-16赛季CBA联赛之广东
日期:2018-09-25 04:09:12
7 [报告]
发表于 2015-09-21 16:46 |只看该作者
nswcfd 发表于 2015-09-21 11:22
这是哪本书里的插图?


《Linux内核源代码情景分析》里面的。

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:15程序设计版块每日发帖之星
日期:2015-09-21 06:20:002015亚冠之卡尔希纳萨夫
日期:2015-09-22 14:11:11程序设计版块每日发帖之星
日期:2015-09-25 06:20:00每日论坛发贴之星
日期:2015-09-25 06:20:00
8 [报告]
发表于 2015-09-22 18:56 |只看该作者
当年512M内存的安卓手机一大票

论坛徽章:
13
15-16赛季CBA联赛之八一
日期:2016-07-08 21:00:1415-16赛季CBA联赛之同曦
日期:2017-02-15 14:26:1515-16赛季CBA联赛之佛山
日期:2017-02-20 14:19:2615-16赛季CBA联赛之青岛
日期:2017-05-07 16:49:1115-16赛季CBA联赛之广夏
日期:2017-07-30 09:13:1215-16赛季CBA联赛之广东
日期:2018-07-05 22:34:3615-16赛季CBA联赛之江苏
日期:2018-09-03 12:10:2115-16赛季CBA联赛之上海
日期:2018-09-25 03:49:2215-16赛季CBA联赛之广东
日期:2018-09-25 04:09:12
9 [报告]
发表于 2015-09-23 09:12 |只看该作者
cascle 发表于 2015-09-22 18:56
当年512M内存的安卓手机一大票


其实我本意不是问能不能,不过还是感谢你参与回答

论坛徽章:
13
15-16赛季CBA联赛之八一
日期:2016-07-08 21:00:1415-16赛季CBA联赛之同曦
日期:2017-02-15 14:26:1515-16赛季CBA联赛之佛山
日期:2017-02-20 14:19:2615-16赛季CBA联赛之青岛
日期:2017-05-07 16:49:1115-16赛季CBA联赛之广夏
日期:2017-07-30 09:13:1215-16赛季CBA联赛之广东
日期:2018-07-05 22:34:3615-16赛季CBA联赛之江苏
日期:2018-09-03 12:10:2115-16赛季CBA联赛之上海
日期:2018-09-25 03:49:2215-16赛季CBA联赛之广东
日期:2018-09-25 04:09:12
10 [报告]
发表于 2015-09-24 13:14 |只看该作者
Jean_Leo 发表于 2015-09-19 23:50
1、可以在512M的内存上运行;
2、通常32位的系统,最高1GByte的虚拟内存是内核的,注意是虚拟内存;
3、最 ...


你好,你和夕阳下的孤影的回答对我帮助很大,我现在的理解是这样:
内核将系统空间安排到实际内存的低1G空间,目的是什么?为什么不是高1G呢?
① 为什么必须划分系统空间和用户空间?
   用户进程进入内核,不要误以为是切换到“内核进程”,而是该用户进程进入了“内核态”,CPU还是按照该用户进程的PGD、PT内容进行地址映射,所以存在这样一个划分,“告诫”每个用户进程将3G-4G空间按统一规律映射,才可以共享内核的“服务”。
② 系统空间空间为什么要映射到低1G物理空间?
   这个问题简单,物理内存可能比较小,比如256MB,只有0-256MB的物理空间。
③ 实际内存小于1G时,用户空间岂不是分不到物理内存?
   3G-4G的虚拟地址,一定会被映射到0-1G物理空间(这里先忽略高端内存的概念),但并不是说0-1G物理空间只能与3G-4G虚拟空间建立映射。
④ 不用担心由于系统空间的这种“一根筋”映射规律,把3G-4G中某个虚拟地址映射到已经建立映射关系的物理地址吗?
   内存先于用户进程执行,并且占用的内存不会被换出。
⑤ 那内核不就只能访问低1G物理内存了吗?
   参考“高端内存”资料。
⑥ 虚拟空间,为什么不是划为系统0-1G,用户1G-4G?
   不要误以为这样可以让0-1G直接对应着物理地址,其实MMU映射的映射过程还是不变的,都要经过一次内核的事先安排。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP