32位操作系统与64位操作系统内存比较

  简单理解,就是说32位还是64位,或者是其它位。是指总线,不是指CPU。
  32位的总线,只能识别到4G内存,再大的内存,因为没有编址空间了,所以不能使用。而64位理论上可以使用16EB的内存,但实际上支持不了,因为受总线限制。

  虽然说我们在理想之中对于64机器内存的设想是2的64次方字节,具体的大小应该是在16EB(这是一个十分大的寻址范围,如果用GB表示的话,大约就是160亿GB),但是我们在现实之中是见不到这样大的存储器的,更令人可悲的是就算是64的CPU其寻址范围也不是我们在上文之中提到的那个天文数字。目前PC之上的64位机器的寻址范围是32GB,这就意味着就算是我们在64为机器之上就算是安装了Windows 64位旗舰版也不能操作32GB的内存。这是为什么呢?

  要说明白这个问题我们首先应当是知道什么是地址总线,在PC机内部有着3大总线,这三大总线分别就是地址总线,数据总线和控制总线。而地址总线就是我们的CPU和内存通信的时候确定具体位置的通道。

  虽然说目前64位的CPU一次性数据吞吐量是8字节(这没错),但是其与外界连接的地址总线并没有64位而仅仅是有35位,这我们就容易理解了。在32位的情况之下我们的寻址范围是4GB,而现在线路拓展了3个,那么就是需要乘以二的三次方,也就是4GB*8=32GB。正是如此64位机器最大也就是支持32GB的内存。

时间: 2024-10-03 04:34:24

32位操作系统与64位操作系统内存比较的相关文章

C# 32位程序在64位系统下注册表操作

在64位的Windows操作系统中,为了兼容32位程序的运行,64位的Windows操作系统采用重定向机制.目的是为了能让32位程序在64位的操作系统不仅能操作关键文件文夹和关键的注册表并且又要避免与64位程序冲突 相关资料请查看32位程序在64位系统下运行的重定向机制 下面是以获取操作系统安装密匙KEY的案例: using System; using System.Collections.Generic; using System.Linq; using System.Text; using

32位程序在64位系统上获取系统安装时间(要使用KEY_WOW64_64KEY标记)

众所周知,取系统的安装时间可取注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion的子项InstallDate,此值是个DWORD类型的UnixStamp.  但是在64位系统上有所不同(仅测试了win7.win8),默认情况下32程序在64位机器上访问的是下面这个地址HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion

32位程序访问64位系统上的Windows注册表

今天在工作的过程中遇到个奇怪的为问题,就是通过c#获取注册表键值的问题,一般都比较简单: string SQLPath = string.Empty; RegistryKey hkml = Registry.LocalMachine; RegistryKey MSSQLServerKey = hkml.OpenSubKey(@"SOFTWARE\MICROSOFT\MSSQLServer"); if (MSSQLServerKey != null) { string[] keys =

32位系统与64位系统

64位系统已经非常普及了,因此我们写代码的时候,了解32位与64位系统的编码差异就显得很重要了.我用的计算机是win10,64位,之前对于任务管理器里的进程32和64分不清,而且对于System32与SestemWow64两个文件夹也时常搞错,今天看书查资料才终于弄懂一些. 64位系统有两个System目录,C:\Windows\System32和C:\Windows\SysWOW64,前者主要包含64位系统文件,后者目录下主要是32位系统文件,这个跟它们名字里的数字刚好是相反的(困扰我好长时间

32位系统与64位系统的区别

CPU一次处理数据的能力是32位还是64位 32操作系统 64位操作系统 地址总线 32位 64位 内存寻址空间(内存大小) 2的32次方bit=4G 2的64次方约为1亿GB 设计初衷 普通用户 满足机械设计和分析.三维动画.视频编辑和创作,以及科学计算和高性能计算应用程序等领域中需要大量内存和浮点性能的客户需求 运算速度不同 32位(需要四个指令,一次提取4个字节的数据) 64位CPU GPRs(General-Purpose Registers,通用寄存器)的数据宽度为64位,64位指令集

iOS上应用如何兼容32位系统和64位系统

在苹果推出iPhone5S时,64位的应用就走到了眼前.当时就看见苹果官方资料宣布iOS7.x的SDK支持了64位的应用,而且内置的应用都已经是64位. 我记得自己刚刚接触电脑时还有16位的系统,指针的寻址范围还是16位的.当年用TurboC时,还要根据应用的大小选择是tiny模式还是其他.后来很长一段时间使用32位的模型编程,4G是牢牢记住的一个边界条件.而现在,64位走到了眼前. 就如同16位转向32位一样,硬件肯定是最先推出的,SDK也会跟进,然后各种第三方的应用才会逐步跟进,这个过程一般

32位系统和64位系统的选择

作为一名网络管理员,经常会给办公电脑安装系统,但是大部分企业的办公电脑配置一般不会很高.在选择系统的时候可能需要注意一些问题. 随着XP的淘汰,可能大家都会选择更新到win7,之前2GB内存会考虑增加到4GB内存,那可能就会考虑居然内存有4GB了,是不是需要安装64位的Win7,以充分利用内存. 这还是要看电脑的配置情况,个人认为如果CPU是i3以上,安装64位系统没有问题,但是如果是比较老的电脑,CPU是普通双核的,最好就安装32位系统就可以了,不然的话,安装64位的系统,CPU会很吃力,电脑

关于32位程序在64位系统下运行中需要注意的重定向问题(有图,很清楚)

0x00 前言 最近学习了[email protected]的文章<Persistence Architecture Matters>,恰巧解决了我之前遇到过的一个问题,理清了文件和注册表重定向中需要注意的细节 大家在学习的过程中难免也会碰到,所以在此分享一下. <Persistence Architecture Matters>的链接:https://labs.mwrinfosecurity.com/blog/persistence-architecture-matters/ 0

如何判断系统是否64位系统

随着64位系统的流行,在程序开发过程中,经常需要根据不同位数的操作系统做不同的操作,这就需要在程序运行过程中判断操作系统位数. 在64位系统Kernel32核心动态库中,提供了 IsWow64Process API函数,而在32系统中则没有,我们可以通过这个函数来进行判断,下面是判断方法: BOOL IsX64() { #ifdef _WIN64 return TRUE; #else typedef BOOL (WINAPI *PFIsWow64Process) (HANDLE, PBOOL);