64位的Linux系统为什么比32位的Linux系统快

讨论这个问题的前提是物理内存大于1GB

       先讨论32位的Linux系统内核能访问的最大虚拟地址为0xFFFF FFFF(4G),内核空间为3G~4G,那么内核如何使用这高1GB的线性虚拟地址呢?

       Linux对于内存的管理使用了分区机制(ZONE_DMA、ZONE_NORMAL、ZONE_HIGHMEM),ZONE_HIGHMEM以下的空间用来线性映射,ZONE_HIGHMEM则用作其他用途,因为如果都作线性映射的话,Linux则无法访问高于1GB的物理内存,此处引入了Linux高端内存的概念(此处不讨论高端内存,有兴趣的同学可以自行研究)。

      那么为什么64位的系统访问内存速度会比32的快呢?

      首先不能笼统的说64位的系统比32位的系统访问内存速度快,这要看访问的是哪一段物理内存,当访问高于1GB的物理内存时,64位的系统要比32的快。

       这是因为64位的系统所有的物理地址都是线性映射,高端内存区域大小为0,32位的系统需要访问高于1GB的物理内存时,需要使用高端内存映射物理内存,这个映射过程是动态的,这样就要比直接的线性映射慢了一些。

       由于本人技术有限,如果有什么问题,希望一起讨论,大神可以路过,不喜勿喷

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值