专栏名称: 程序员鱼皮
鹅厂全栈开发,持续分享编程技法和实用项目
目录
相关文章推荐
环球科学  ·  为了恢复视力,他们把牙齿植入了眼睛 ·  昨天  
原理  ·  体型越大,越容易患癌? ·  3 天前  
51好读  ›  专栏  ›  程序员鱼皮

给电脑多塞几个内存卡,会更快么?

程序员鱼皮  · 公众号  ·  · 2025-03-04 16:09

正文

今天聊一个简单 的问题,增加更多内存会让你的计算机速度变快吗?

要想解答这个问题,我们需要知道cpu、内存与程序这几者的关联,实际上非常简单:

图片
首先,可执行程序存储在磁盘中(当然也可以是其它介质),可执行程序中实际上主要包含两部分内容:机器指令以及指令依赖的数据;
程序运行时首先被加载到内存中,被加载到内存中的程序摇身一变就成为了我们说的进程,当然,内存中还运行着另一种特殊的程序:操作系统。
只有当CPU真正执行机器指令时相应的进程才开始运行,此时CPU不断的从内存中取出指令并执行指令,当然除了机器指令外还需要读取内存中的数据。
可以看到,当程序运行时与CPU交互的是内存而不是磁盘,内存中存储指令和数据、而CPU使用指令和数据,因此从这个角度看这是一个类似生产者与消费者问题,内存就好比大厨、CPU好比食客,如果大厨上菜太慢那么食客就要挨饿。
除此之外, 操作系统 对内存的使用也不可忽略。

操作系统是如何利用内存的?
为充分利用内存与磁盘资源,现代操作系统中有很多非常聪明的设计。
由于CPU一次只能运行一个程序,即使在多核系统中一般来说同时存在的进程数远远多于核数,也就是说在某一个时刻并不是所有的程序都在运行,即使对正在运行的进程来说由于局部性原理的存在,进程地址空间中总会有一部分指令或者数据是暂时用不到的。
基于这些,操作系统先驱们看到了可以充分利用内存的机会,我们可以将暂时用不到的指令或者数据放到磁盘上去(swap out),当使用这些数据或者指令时再从磁盘加载到内存中(swap in),这样内存中不就有更多空间运行更多进程了吗,这种思想在操作系统中被称之为demand paging,属于虚拟内存的一部分。
图片
其次,操作系统会将剩余的空闲内存当做磁盘缓存,有时当系统负载较低时我们的程序并不能充分利用内存,那么这些空闲的内存就真的毫无用处了吗?显然不是的,我们知道磁盘是一种低速的存储设备,既然这样为什么不把空闲的物理内存当做磁盘的缓存呢?
大家可能都有这样的体验,开始打开一个全新的文件时通常会比较慢,但当你再次使用该文件时将明显感觉到速度会快很多,背后的原理就在于此,如果此时你的内存不足,那么操作系统就没有那么多的空闲内存来当做磁盘缓存,此时你将真正体验到磁盘蜗牛般的速度。
图片
现在,我们就可以回答开始提出的问题了,增加内存会加快计算机运行速度吗?显然这样分为两种情况来讨论。

内存充足
如果你的内存本身就很充足,那么在这种情况下 增加更多内存将不会让你的计算机跑的更快 ,因为CPU作为食客吃饭的速度是有限的,大厨做的菜再多也没有,你也没办法让食客吃的再快一些。
这就好比你问给一辆卡车装更多轮子会让开车跑得更快吗?
答案显然不是的,尽管这并不能让卡车跑得更快,但增加更多轮子会让货车有更高的载重。






请到「今天看啥」查看全文