一个程序最多可以使用多少内存?

在虚拟地址模式下,一个程序可以使用的内存容量跟计算机的物理内存(也就是你的内存条)没有关系,它由虚拟地址的取值范围决定。

32位操作系统

在32位操作系统中,程序能使用的最大内存是 4GB,也就是2的32次方。即使你的电脑安装的是16G的内存条也没用,剩下的12G只能空闲着。

让你买那么大的内存,浪费了吧!
在这里插入图片描述

64位操作系统

在64位操作系统中,理论上能够访问的虚拟地址的范围是 2^64。

这是一个很大的值,几乎是无限的,就目前的技术来讲,不但物理内存不可能做到这么大,CPU的寻址能力也没有这么大,实现64位长的虚拟地址只会增加系统的复杂度,带不来任何好处。

Windows 和 Linux 都对虚拟地址进行了限制,仅使用虚拟地址的低48位(6个字节),总的虚拟地址大小为 2^48 = 256TB。

256TB也太大了吧,量子计算机时代才会用这么多内存吧!
在这里插入图片描述

操作系统还要占用内存

操作系统也是一个程序,而且是其他程序的领导,要时刻管理其他程序,谁不听话就惩罚他,让他崩溃。

反之,普通程序也需要操作系统的帮助,尤其是在访问硬件时,例如分配内存、打开硬盘上的文件、在屏幕上绘画等。

操作系统和普通程序既相爱又相恨。
在这里插入图片描述
为了达到又爱又恨的目的,操作系统也要占用一部分内存。

32位的Windows默认占用4GB中的2GB,程序只能使用剩下的2GB。

32位的Linux默认占用4GB中的1GB,程序只能使用剩下的3GB。

64位的Windows默认占用256TB中的248TB,程序只能使用剩下的8TB。

64位的Linux默认占用256TB中的128TB,程序只能使用剩下的128TB。

当然,操作系统占用的内存是可以通过设置来更改的。

总起来说,程序能使用多大的内存由操作系统决定,不同的操作系统、不同的位数都会不一样。

现在我们使用的操作系统大都是64位的了,内存已经足够使用了,所以如果你不缺银子,就使劲升级内存吧,多多益善,不会浪费的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章