免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: comepu
打印 上一主题 下一主题

内核的地址是简单的线性映射这句话怎么理解啊? [复制链接]

论坛徽章:
0
31 [报告]
发表于 2005-12-08 13:16 |只看该作者
原帖由 albcamus 于 2005-12-8 09:30 发表
凡是映射到3G-4G之间的,不会被swap出去,我能确认这一点。
注意虽然我说不会被swap出去,但是仍然可以释放。 kmalloc深情来的内存,直到你用完了释放,否则绝不会swap到磁盘上。为什么访问用户空间需要copy_fro ...

首先可以确认你的确认是错误的,因为象你确认的那么理解,1G以下的内存的机器搞个SWAP就没有什么用的了,呵呵.另外你把LINUX的那种物理存储器的管理方式想歪了,不要搞得那么复杂.LINUX内核之所以不能直接访问896M以上的内存,是因为采用的直接映射虚地址和物理地址有关系.没有什么别的原因,你甚至可以理解为这中映射是LINUX的一种在某种特定环境中的优化

论坛徽章:
0
32 [报告]
发表于 2005-12-08 13:25 |只看该作者
原帖由 Solaris12 于 2005-12-5 13:21 发表


这么说,内核的内存基本在NORMAL zone了。
是不是正是由于这个原因,linux才需要划分出HIMEM zone呢?

这样做有什么优劣?

好处:
简单?高效?

不利:
这样做岂不是限制了对大内存的使用?

是,简化了,对大内存的应用也不是限制了,LINUX采用了三种方法解决NORMAL_ZONE以上的存储器的使用.
PSE36和PAE是使用了64位的页表项,页目录项

论坛徽章:
0
33 [报告]
发表于 2005-12-08 13:32 |只看该作者
原帖由 menp9999 于 2005-12-8 13:16 发表

首先可以确认你的确认是错误的,因为象你确认的那么理解,1G以下的内存的机器搞个SWAP就没有什么用的了,呵呵.另外你把LINUX的那种物理存储器的管理方式想歪了,不要搞得那么复杂.LINUX内核之所以不能直接访问896M以 ...



果真如此吗? 如果3G-4G之间的还可以swap出去,那么,当你kmalloc一块内存,试图在中断上下文访问它,怎么办?──只要它可能swap出去,就意味着“可能睡眠”。

《情景分析》说:

无标题.jpg (38.94 KB, 下载次数: 21)

无标题.jpg

论坛徽章:
0
34 [报告]
发表于 2005-12-08 13:38 |只看该作者
To albcamus,

应该可以交换出。

你可以实验,写个module, kmalloc许多page,往里头写上记号的东西,
然后,启动一个引起SWAP的USER 程序(无非是连续malloc,再写几个字符),

kmalloc的有记号的page会被SWAP出去。如果不,那么不成无用的死PAGE了吗。

论坛徽章:
0
35 [报告]
发表于 2005-12-08 14:12 |只看该作者
虚存子系统实在是我的弱项,无法提出更多的证据了。 不过我还是不相信,象kmalloc来的页面会被换出。
等linuxforum.net能访问了,去确证一下

论坛徽章:
0
36 [报告]
发表于 2005-12-08 14:46 |只看该作者
原帖由 albcamus 于 2005-12-8 13:32 发表



果真如此吗? 如果3G-4G之间的还可以swap出去,那么,当你kmalloc一块内存,试图在中断上下文访问它,怎么办?──只要它可能swap出去,就意味着“可能睡眠”。

《情景分析》说:

别担心,呵呵。既然你在看《〈分析〉》,那你也可以看看换出部分,他不是不分青红皂白的啦,有几种情况是不换的。虽然不是3-4G的问题。

论坛徽章:
0
37 [报告]
发表于 2005-12-08 15:01 |只看该作者
原帖由 albcamus 于 2005-12-8 14:12 发表
虚存子系统实在是我的弱项,无法提出更多的证据了。 不过我还是不相信,象kmalloc来的页面会被换出。
等linuxforum.net能访问了,去确证一下

不是虚存,是物理存储器的管理,呵呵。物理存储器可以分为实际的内存页面和虚拟成内存的磁盘页页面。ULK2上的第七章和第八章分别讲的就物理存储器的管理和虚存的管理。
你附加的是《〈分析〉》里面的嘛?这是没有道理的,即使LINUX是这样的,也不意味这是对的,简单的例子,UNIX的U区就是可以换出的,虽然LINUX不再使用U区的概念了。

论坛徽章:
0
38 [报告]
发表于 2005-12-08 15:10 |只看该作者
请问有这方面相关的原版书籍吗?

论坛徽章:
0
39 [报告]
发表于 2005-12-09 11:55 |只看该作者
原帖由 menp9999 于 2005-12-8 13:25 发表

是,简化了,对大内存的应用也不是限制了,LINUX采用了三种方法解决NORMAL_ZONE以上的存储器的使用.
PSE36和PAE是使用了64位的页表项,页目录项


还是有限制的。2.6内核才真正成熟,才真正支持高端一些的服务器:



在高端内存中存储页表条目

在 32 位机器上页表通常只可以存储在低端内存中。低端内存只限于物理内存的前 896 MB,同时还要满足内核其余的大部分要求。在应用程序使用了大量进程并映射了大量内存的情况下,低端内存可能很快就不够用了。

现在,在 2.6 内核中有一个配置选项叫做 Highmem PTE,让页表条目可以存放在高端内存中,释放出更多的低端内存区域给那些必须放在这里的其他内核数据结构。作为代价,使用这些页表条目的进程会稍微慢一些。不过,对于那些在大量进程在运行的系统来说,将页表存储到高端内存中可以在低端内存区域挤出更多的内存。

论坛徽章:
0
40 [报告]
发表于 2005-12-15 12:20 |只看该作者
你们确定ZONE_NORMAL部分的物理页面一定都被映射到3G-4G的线性地址区间了吗?无论什么情况?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP