大家好,我是小风哥,今天要讲一个简单的问题,加内存会让电脑变快吗?要回答这个问题,我们需要知道cpu、内存和程序之间的关系,其实很简单:首先,可执行程序存放在磁盘上(当然也可以是其他介质),可执行程序其实主要是包含两部分:机器指令和指令所依赖的数据;程序在运行时,首先被加载到内存中,加载到内存中的程序就成为我们所说的进程。当然,内存中还有其他程序在运行。一种特殊的程序:操作系统。只有当CPU真正执行机器指令时,相应的进程才会开始运行。这时CPU不断从内存中取指令并执行指令。当然,除了机器指令,还需要读取内存中的数据。可见,程序运行时,与CPU交互的是内存,而不是磁盘。指令和数据存储在内存中,CPU使用指令和数据。所以,从这个角度来说,这是一个类似于生产者和消费者的问题。内存就像是厨师,而CPU就像是小餐馆。如果厨师上菜太慢,食客就会饿死。此外,操作系统对内存的使用也不容忽视。操作系统如何使用内存?为了充分利用内存和磁盘资源,现代操作系统中有很多非常巧妙的设计。由于CPU一次只能运行一个程序,即使在多核系统中,一般来说,同时存在的进程数也远远多于内核数,也就是说,并不是所有的程序在某个时刻都在运行,即使对于正在运行的进程,由于局部性原理的存在,进程地址空间中总会有一些指令或数据暂时没有被使用。基于这些,操作系统的先驱们看到了充分利用内存的机会。我们可以把暂时不用的指令或数据放在磁盘上(swapout),然后在使用这些数据或指令时从磁盘加载到内存中。(换入),因此内存中有更多空间来运行更多进程。这种思想在操作系统中称为需求分页,是虚拟内存的一部分。其次,操作系统会将剩余的空闲内存用作磁盘缓存。有时候系统负载低的时候,我们的程序不能充分利用内存,那么这些空闲内存真的没有用吗?显然不是,我们知道磁盘是一种低速存储设备,那为什么不把空闲的物理内存作为磁盘缓存呢?每个人都可能有这样的经历。开始打开一个全新的文件通常比较慢,但是当你再次使用这个文件时,你会明显感觉到速度会快很多。这就是它背后的原理。如果此时你的内存不足,那么操作系统就没有磁盘缓存那么多的空闲内存,你就会真正体会到磁盘蜗牛般的速度。现在我们可以回答我们一开始提出的问题了,增加内存会使计算机运行得更快吗?显然,这分两种情况来讨论。足够的内存如果你的内存本身就足够了,在这种情况下增加更多的内存并不能使你的计算机运行得更快,因为CPU作为食客的速度是有限的。不多,你不能让食客吃得更快。这就像问在卡车上装更多的轮子是否会让汽车开得更快?答案显然是否定的,虽然不会让卡车跑得更快,但是增加更多的轮子会让卡车承载更高的载荷。内存也是如此,虽然增加内存并不能使计算机运行得更快,但显然可以让我们同时运行更多的程序。增加更多内存意味着可以同时打开更多浏览器页面,同时打开更多虚拟机,同时渲染更多高清视频,同时处理更复杂的3D模型,训练更多机器学习同时建模等。这时候你的内存就不是瓶颈了,CPU很可能会成为瓶颈,因为CPU的运行速度,也就是每秒执行的机器指令数是有限的。内存不足这时候厨师上菜速度太慢,食客总是很饿,需要厨师多上菜。我们知道大部分程序在运行过程中都会频繁申请内存。申请内存是一个看似简单实则非常复杂的操作,尤其是在系统内存不足的场景下。这个时候申请内存往往会涉及到比较复杂的查找或者异常处理,这个时候我们的程序运行速度会明显变慢。当内存不足时,磁盘和内存之间可能会有更多的交换。这时候系统的速度就会受到磁盘的限制,由于磁盘文件不能缓存,我们启动进程或者打开文件的速度都会明显变慢。在这种情况下增加内存可以更好地满足CPU的需求,从而显着加快计算机速度。小结从上面的分析我们知道,增加内存是否可以加快电脑的运行速度取决于你的场景。如果您的设备有足够的内存,此时增加内存不会显着加快计算机速度。
