昨天有位读者被坑了,问了我这么个问题:
大致意思就是,他看了一个面经,说虚拟内存是 2G 大小,然后他看了我的图解系统 PDF 里说虚拟内存是 4G,然后他就懵逼了。
其实他看这个面经很有问题,没有说明是什么操作系统,以及是多少位操作系统。
因为不同的操作系统和不同位数的操作系统,虚拟内存可能是不一样多。
Windows 系统我不了解,我就说说 Linux 系统。
在 Linux 操作系统中,虚拟地址空间的内部又被分为内核空间和用户空间两部分,不同位数的系统,地址 空间的范围也不同。比如最常⻅的 32 位和 64 位系统,如下所示:
通过这里可以看出:
- 32 位系统的内核空间占用 1G ,位于最高处,剩下的 3G 是用户空间;
- 64 位系统的内核空间和用户空间都是 128T ,分别占据整个内存空间的最高和最低处,剩下的中
间部分是未定义的。