Chinaunix
标题:
大家认为高端内存的主要作用是什么?
[打印本页]
作者:
kiongf
时间:
2014-03-04 00:12
标题:
大家认为高端内存的主要作用是什么?
本帖最后由 kiongf 于 2014-03-17 11:33 编辑
我遇到过高端内存的使用场景
1)映射不连续的物理页。减少外部页碎片。 vmalloc()/vmap()
2 映射非RAM类型的其他物理内存(IO port),比如说rom, video. ioremap()/early_ioremap()/iomap()
3)映射多余的物理内存 kmap()/kmap_atomic()
大家还能想到高端内存的其他作用吗
抱歉,这个问题有歧义。我这里所指的是内核虚拟地址空间 非直接映射部分.(high_memory)
作者:
humjb_1983
时间:
2014-03-04 08:54
用户态的程序分配内存时,都优先从高端内存分配。
内核中,主要就是教科书上说的:vmalloc、固定映射、临时映射等。
作者:
goingstudy
时间:
2014-03-06 17:01
本帖最后由 goingstudy 于 2014-03-06 17:03 编辑
回复
1#
kiongf
高端内存到底是哪一块?是大于896M的那部分吗?但是这个896M是指的物理内存还是线性空间的?
作者:
帅绝人寰
时间:
2014-03-06 17:05
大家认为vm86 mode有什么用? 我认为那是史前技术, 已经可以不学习了。
除非,你象我一样, 有考据癖, 非得弄明白 古埃特鲁理亚人和吕底亚人的关系, 古巴比伦和亚述、米底之间的恩怨, 古希伯莱和非利士的爱恨。
highmem还有谁在用?
作者:
arm-linux-gcc
时间:
2014-03-06 21:30
回复
4#
帅绝人寰
arm上还在用
作者:
iamlushu
时间:
2014-03-07 03:51
bump u up for 2 points
作者:
mordorwww
时间:
2014-03-07 09:02
貌似x86 64 位木有高端内存?
作者:
asuka2001
时间:
2014-03-07 09:27
说到底,还是内核空间不够大,装不下所有物理内存惹的祸!
64位目前没这麻烦事。。。不过当内存达到 2^64的时候,你不一样得弄高端内存!
作者:
帅绝人寰
时间:
2014-03-07 12:29
当世界不再有中子质子和电子构成的时候, 你还得学习新的存在方式 ……
对大家钻研技术的毅力,表示景仰。
作者:
帅绝人寰
时间:
2014-03-07 12:29
本帖最后由 帅绝人寰 于 2014-03-07 17:06 编辑
发重了,怎么删帖?
作者:
smalloc
时间:
2014-03-07 14:16
中子电子也许会过时,但发现过程也是值得学习的地方,对学习过程的学习是个高阶方式的.
考古的目的也许不是为了单个事实,而是串联起来看的更远更完整.
作者:
fl3w
时间:
2014-03-07 14:21
本帖最后由 fl3w 于 2014-03-07 14:21 编辑
别吹nb,这玩意儿,甭管它有用没用,就冲着它可能在你面试的时候被问到,就值得背一番。
咳咳咳,一切技术学习都是为了面试。
作者:
chishanmingshen
时间:
2014-03-17 10:55
回复
1#
kiongf
>2 映射非RAM类型的其他物理内存(IO port),比如说rom, video. ioremap()/early_ioremap()/iomap()
我疑惑这么多的iomem,貌似都是不释放的,128M够用么???(32位机上)
作者:
kiongf
时间:
2014-03-17 11:40
回复
13#
chishanmingshen
会释放的.相应的接口是iounmap().
作者:
chishanmingshen
时间:
2014-03-17 12:34
回复
14#
kiongf
我看了下/proc/iomem ,这里面的应该都是不释放的啊,比如显卡、网卡使用的设备内存等。我是说这部分如果很大,怎么办?(还是32位机上)
作者:
kiongf
时间:
2014-03-17 12:45
回复
15#
chishanmingshen
那里面是I/O memory Resource的Resource布局(遍历iomem_resource tree的结果). 是整个物理地址空间的分布。
和虚拟地址空间无关的。你仔细看下,还能找到物理内存(RAM),ROM,pci设备的地址分布.
比如说我的:
00010000-0009fbff : System RAM
...
00100000-3fd73fff : System RAM
分配了物理地址空间的设备,通过iomap来映射到内核虚拟地址空间来使用。
作者:
asuka2001
时间:
2014-03-17 12:50
回复
15#
chishanmingshen
那是 physical address space
作者:
chishanmingshen
时间:
2014-03-17 13:08
回复
16#
kiongf
回复
17#
asuka2001
是物理空间,没错。但是,在由 ioremap映射到内核虚拟空间时就占用了vmalloc空间了啊。并且我觉得一直不会释放啊。
作者:
kiongf
时间:
2014-03-17 13:34
回复
18#
chishanmingshen
外设的会释放,其他的我也没有太深入。 而且我查看了/proc/vmallocinfo,里面最大的IO映射30MB多些,其余的不过都是几kB,几MB,应该是有足够的Vmalloc zone供自由映射的吧。
作者:
asuka2001
时间:
2014-03-17 14:35
回复
18#
chishanmingshen
只映射设备的控制寄存器,其他的交给 DMA。不然你还想把所有的设备 iomem映射到内核空间,直接复制拷贝数据不成。那你不把 CPU累死!
作者:
chishanmingshen
时间:
2014-03-17 15:49
谢谢楼上两位,这样的话,高端内存的vmalloc区应该不会消耗太多。
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2