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