linux 查看内存分布,Linux下内存使用分布情况

v\:* {behavior:url(#default#VML);}

o\:* {behavior:url(#default#VML);}

w\:* {behavior:url(#default#VML);}

.shape {behavior:url(#default#VML);}

Normal

0

7.8 磅

0

2

false

false

false

MicrosoftInternetExplorer4

st1\:*{behavior:url(#ieooui) }

/* Style Definitions */

table.MsoNormalTable

{mso-style-name:普通表格;

mso-tstyle-rowband-size:0;

mso-tstyle-colband-size:0;

mso-style-noshow:yes;

mso-style-parent:"";

mso-padding-alt:0cm 5.4pt 0cm 5.4pt;

mso-para-margin:0cm;

mso-para-margin-bottom:.0001pt;

mso-pagination:widow-orphan;

font-size:10.0pt;

font-family:"Times New Roman";

mso-ansi-language:#0400;

mso-fareast-language:#0400;

mso-bidi-language:#0400;}

Linux下内存使用分布情况

Linux必须处理如下两种由于硬件存在缺陷而引起的内存寻址问题:

1、 一些硬件只能够使用某些特定的内存地址来执行DMA(直接内存访问)

2、 一些体系结构其内存的物理寻址范围比虚拟寻址范围大得多。这样,就有一些内存不能长久的映射到内核空间

因为这些限制,Linux使用了三种区:

1、 ZONE_DMA,也叫做ZONE_LOW,这个区包含的页能够执行DMA操作

2、 ZONE_NORMAL,这个区包含的都是能正常映射的页

3、 ZONE_HIGHMEM,这个区包含“高端内存”,其中的页并能不长久的映射到内核地址空间

080912203214.png

2G物理内存的分布情况

遗留下来的DMA

一些老的一些设备需要PC/AT上的DMA控制器才能够进行数据的传输。

这个芯片使用24位地址,由于历史原因,它占用了最低的16M(2^24=16M)

Linux中将这块内存保留为ZONE_LOW,这样使得那些设备能够使用这块内存。

正常内存区

这个区从16M延伸到896M

Linux使用这个区的底下一部分来存放一些跟踪物理内存使用的重要数据结构,它是一个记录数组,名字叫做mem_map[]。

ZONE_NORMAL区剩下的部分就可以供操作系统动态的分配了。

高端内存

Linux传统上尝试将最多的物理内存映射到内核空间。在系统内存小于1G的日子之前的时候,Linux只是简单的将所有的物理内存直接映射到1G的内核地址空间中(3G-4G,

0xC0000000 – 0xFFFFFFFF)。

但是对于2G内存来讲这样就没有空间了。

896M限制

一对特殊的内核函数kmap()和kunmap()可以将“高端”内核地址空间映射到实际的物理内存上。

080912203316.png

“高端”内核地址空间的临时映射

参考:

http://www.cs.usfca.edu/~cruse/cs635/lesson04.ppt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值