美文网首页
详解为什么32位系统只能用4G内存

详解为什么32位系统只能用4G内存

作者: JamFF | 来源:发表于2021-03-07 09:26 被阅读0次

1. Bit(位)

Bit 是计算机最小的存储单位,大家都知道计算机实质上都是用二进制数 0 或 1 来存储数据的,所以 Bit 实际上可以看成存放 1个二进制数字的 1个位置。

2. Byte(字节)

我们平常讲的 1个文件占多少 KB、MB,1个硬盘占多少 GB、TB,后面的这个 B,指的就是字节 Byte,而不是上面的 Bit,而且 1个 Byte = 8 Bit,这个怎么理解呢?

其实 1个 Byte 可以看成是有 8 个物理上连续的 Bit 组成的,如下图:

Bit 和 Byte

上面说了,1个 Bit 只能表示两种值 0 or 1,其实就是2^1种值。那么 1个 Byte 就是2^8 = 256 种值了。

  • 这 256 个值分别是 0~255 所以 1个字节能表示最大的值就是 255,所以很多时候我们见到有 255 最大的限制(例如 IP 地址)就是这个原因。
  • 二进制 1个字节是由 8 个位组成的,而每 4 个位可以看成 1组,由 1个十六进制数字来表示。 也就是说十六进制的 0~F 分别表示二进制的 0000~1111,所以 16 进制和 2 进制的转化其实是很方便的。

3. 内存是计算机系统的主存储器

介绍上面两个存储单位后就介绍下内存了。

内存有一个很重要的特性,CPU 可以直接访问内存里的数据。

CPU 不能直接访问硬盘的数据,只能先把硬盘的数据放到内存里,然后再从内存中访问数据。

所以内存才是计算机系统的主存储器,而硬盘则与光盘、U盘同为外部存储器。

4. 内存的基本结构

内存里存放的数据是什么呢? 其实也是只是存放 0 或者 1 这两个二进制数字,所以内存里实际上有海量的小格子,每 1个格子是 1个 bit,就只能存放 1个数字(0或者1),那么数值 255 就需要 8 个格子存放,也就是 1个字节 byte

但是问题来了,我刚说内存里的格子数量非常巨大,如果 CPU 要读出某个指定的数据,怎么去找呢?

1个 1个格子去遍历吗?其实稍微接触过数据结构的都知道,遍历虽然实现简单,但是在海量数据面前简直是自杀行为。

所以实际上内存是把 8个 8个 bit 排成 1组,每 1组成为 1个单位,大小是 1 byte(字节),CPU 每次只能访问 1个 byte,而不能单独去访问具体的 1个小格子(bit)。1个 byte 字节就是内存的最小的 IO 单位

也就是说内存是由 8个 8个小格(bit)组成的 1个字节单位(byte)排列组成的。 如下图:

占用字节

其实大部分数据都会作为各种数据类型存放在内存内,而各种数据类型所占的字节大小也是不同的,例如上图解析的,char 字符类型占 1个字节,int 类型和 unsigned int 类型占 4 个字节 byte。

5. 引入内存地址概念

即使我们把内存分成了以字节为单位的结构,但是实际上内存里还是有非常多的字节的,例如 64 MB内存就有 64 × 1024 × 1024 个字节!

如果 CPU 要查找 1个变量,还是要一个个字节去找到话,还是很浪费时间的,所以为了避免去遍历内存,计算机系统就引入了内存地址这个概念。

举个例子,内存就是一栋大楼,而内存里每 1个字节就是大楼的每个房间,而内存地址就是房间的门牌号码。如果没有门牌号码,我们去访问某个住在大楼的人是十分困难的,只能从 1 楼开始每个房间去敲门,如果那个人住在顶楼你就悲剧了。而如果你知道那个人的门牌号码,就可以直接上去敲他的门查他水表了,实在是方便很多。

内存也一样,计算机操作系统会给内存每 1 个字节分配 1 个内存地址,CPU 只需要知道某个数据类型的地址,就可以直接去到对应的内存位置去提取数据了。

6. 直接寻址技术

当代计算机还实现了一个逆天的技术,就是直接寻址了。

什么意思呢?还是用上面的例子说明,假如你知道你要找的人住在那栋大楼的 17 楼 1702,但是你还是需要从 1 楼走到 17 楼去找他,这个过程还是需要时间成本的。

但是如果你具有了直接寻址技术,就能直接跳到 17 楼 1702 门前,如果你找的下 1个人在 2 楼,又能从 17 楼直接跳到 2 楼。

直接寻址技术已经成为当代计算机软硬件的标准技术之一了,也就是说只要 CPU 知道要访问数据的内存地址,就能直接到内存的对应位置去访问数据。

7. 内存地址的表示方式

跟门牌号一样,其实内存地址也是由 1个 2 进制数字来表示的。每 1个地址对应内存里的 1个 byte 字节,如果地址的值加 1,那么这个地址就对应下 1个字节了。

那么内存地址的长度是多少呢?这个就是这篇文章标题所涉及的。在32位操作系统中,内存的地址就是 32 位的 2 进制数

8. 内存地址的数量决定 CPU 能访问的内存大小

上面说了,既然 32 位系统里内存地址长度是 32 位的,所以 32 位的地址范围就是从 0000 0000 0000 0000 0000 0000 0000 0000 到 1111 1111 1111 1111 1111 1111 1111 1111 (0x00000000 ~ 0xFFFFFFFF), 总共有2^{32}个地址。

那么2^{32}到底是多少个?2^{32}= 4(G) \times 1024(M) \times 1024(K) \times 1024(B) = 4294967296(B),就是 4G,而每 1个地址对应 1个字节,容量就是 1 byte,所以2^{32}个地址就总共能对应 4GB 的内存容量,这里的 B 指的是 byte 字节。

假如给 32 位的系统配上了 8GB 的内存,操作系统最多也只能给其中 4GB 分配地址,其余 4GB 是没有地址,因为地址不够用,所以 32 位系统最多支持 4GB 内存就是这样来的。

那么64位系统呢,对应的,64 位系统的内存地址是 64 位的二进制数,那总共有多少个地址?

2^{64} = 2^{24}(T) \times 2^{10}(G) \times 2^{10}(M) \times 2^{10}(K) \times 2^{10}(B) = 16777216(T) 个地址, 也就是说 64 位系统配上 64 位 CPU 理论上支持 16777216TB 的内存, 当然这个只是理论了,实际上现在的普通主版能上个 32GB 都不错了。

见下图:

内存地址

9. 关于指针

大家都知道指针是用来存放内存地址的,那么对于 32 位系统来讲,内存地址是 1个 32 位长度的 2 进制数,而每 1个内存单位长度只有 1 byte = 8 bit(位),所以 1个指针就需要 4 byte 的内存来存放该指针的内容(1个内存地址)。

所以,我们定义 1个指针 int *p; 然后求 sizeof(p) 是返回4字节。

而对于 64 位系统来讲,内存地址是 64 位的 2 进制数,所以 sizof(p) 就返回了 8,共需要 8 个内存单位去存放 64 位系统的 1个指针。

作者:nvd11
链接:https://blog.csdn.net/u011604775/article/details/81606194
来源:CSDN
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章

  • 详解为什么32位系统只能用4G内存

    1. Bit(位) Bit 是计算机最小的存储单位,大家都知道计算机实质上都是用二进制数 0 或 1 来存储数据的...

  • 【转】详解为什么32位系统只能用4G内存.

    原文来自它1. Bit(位)Bit计算机是计算机最小的存储单位, 大家都知道计算机实质上都是用二进制数0或者1来...

  • 最靠谱的CDH5安装指南

    系统要求系统:CentOS 6.5Cloudera:CM5.2.0 + CDH 5.2.0内存:主节点4G内存以上...

  • oracle-11g安装

    硬件环境 系统需要图形化 内存 内存: 大于4G grep MemTotal /proc/meminfoswap:...

  • Win7 64bit安装配置Oracle问题

    随着技术的进步,32位系统已经渐渐不能满足用户的需求了,别的不说,光是内存最多只能用到4G就已经很让人不满,为了以...

  • CDH5安装指南

    系统要求 系统:CentOS 6.5 Cloudera:CM5.2.0 + CDH 5.2.0 内存:主节点4G内...

  • 第二次小测验

    课前测试 1.32位系统与64位系统区别 家用32位系统最多支持4G内存 企业64位系统可以支持更大的内存 64...

  • macOS APP内存优化

    概述 我们为什么减少内存占用?为了更好的用户体验内存是有限且系统共享的资源,一个程序占用更多,系统和其他程序所能用...

  • windows应用程序开启大内存,减少程序因为内存问题崩溃

    一.为什么开启大内存 windows32应用程序每个进程内存空间为4G,其中2G操作系统默认分配给应用程序,称为用...

  • free命令详解

    free命令详解 free命令显示系统内存的使用情况,包括物理内存,交换内存(swap)和内核缓冲区内存 Mem ...

网友评论

      本文标题:详解为什么32位系统只能用4G内存

      本文链接:https://www.haomeiwen.com/subject/pbbeqltx.html