- 论坛徽章:
- 0
|
回复 5楼 xiaozhaoz 的帖子
首先,在普通的PAGE_SIZE情况下,如4K不是4M,能得到的order最大为11,其实一般是<11
也就是取10,源码中有定义,只能用到4M Logical Memory,也就是只能得到4M线性物理地址.
而在uClinux中,虽然没有kswapd,但当你的应用free或destroy时,内核并不能如你所想,全
然释放.
至于上有人提到内存分配问题,这是在Module中分配的.不会有在初始化时加入mem=xxM的限制
这些内存在module unload时,可以回归内核管理.
至于用户空间所采用的malloc,其实只是让内核知道这段内存的申请是合法的,最后还是通过page
来实现的.
当然,如果纯64位平台,可以采用4M的PAGE_SIZE
如果定义MAX_ORDER <= 1024, 可以使用4G的Memory.
以前有Intel的朋友试着做过这些分配,或有人在2.6.14以后加入relayfs,其实这都不可能保证性线.
如果我们采用Multi Micro Kernel, 就有点像IBM的虚拟机了,可以同时运行多种OS,多种管理模式,
不过管理调度是相当复杂的, AIX中有加入对SMP和多种微环境支持.
VMware中有一定的实现功能, 性能也还可以,但在要求苛刻的应用下,如同步数传系统中,当前的内核
就不足以应对了. 2.6的VMA制式,在通常用户计算环境中,性能是出色,好像在2004年Moto中有人做
个这种测试,有机会传上来看看.
如果有两枚,或非SMP(3-5枚)CPU,有可能我要求一段内存完成100M的线性DMA转发数据,<1ms的
时延,这时可安排其中一枚来做这件事,这是可行的,有时更不需要1ms,只是数据后处理要求时间稍长.
非对称模式,或称混合网络计算模式,单主机也可以实现. 以前有些SuperComputer采用背板高速串行
数据交换,可以有首效隔离,采用BLADE单元计算,但这不能共享非空时段内的Memory资源.
如果没有负荷时,有些内存需要为主运算平台的诸如DB/WWW服务,可以通过一些机制来完成动态remap.
大家有兴趣研究一下SMP/及非对称多CPU共存计算环境.
CELL将很多核做进一个Chip, 但不如通过其它IO总线,扩展多路CPU,既可以每路CPU自带MEMORY和CACHE,
也可以动态向主OS动态申请,且加入是动态的,不需要主OS环境停机.
是不是很爽呀, 你突然发现图形处理不过来了,接上USB外置处理器,负荷转移置专用CPU上,一下快多了
不用时,unload就好了.主存自动回归原计算环境.真是CBL.
社会本就多态, 有什么花样, 就突破限制.
F.E.U
Future Extension Union
[ 本帖最后由 obrire 于 2006-4-13 23:24 编辑 ] |
|