龙空技术网

啊!电脑没有内存也能使用?

零零零零零点 122

前言:

今天大家对“电脑里的计算器不见了”可能比较关心,看官们都想要剖析一些“电脑里的计算器不见了”的相关文章。那么小编也在网摘上网罗了一些有关“电脑里的计算器不见了””的相关内容,希望咱们能喜欢,同学们一起来了解一下吧!

在平时使用电脑的过程中,不知道大家会不会经常观察内存的使用情况,当我们打开很多个软件的时候,内存的占用量就会越来越高,如果内存不够用软件就会发生闪退的现象。随着现在软件发展越来越快,单个软件对内存的需求也越来越高了,甚至大家都能发现笔记本电脑的基础配置都从几年前的8G内存普遍升级到16G了。

也就是说8G内存放在当下这个环境中确实是不太够用了,毕竟正常办公打开几个网页,开几个办公软件和微信那些基本8G内存就吃满了。按理说这种情况下8G内存的电脑就没办法打开更多的软件了,起码对于正常的使用是会有影响的,但是实际中还在使用8G内存电脑的人,可能很少会遇到软件不能打开或者闪退的情况。

这其实就是个很有意思的问题,为什么明明内存并不能满足多个软件同时打开,但是当我们真正在后台打开很多软件的时候,依然可以正常使用呢?

这就要说到今天的主题------虚拟内存,那么什么是虚拟内存呢?虚拟内存的作用又是什么?还记得我上一篇文章写过的虚拟化CPU的概念吗,其实虚拟内存也是和虚拟化CPU一样的思想,它也是给应用程序一种错觉,那就是整个内存空间中只有它在使用。这样做的好处就是应用程序不需要考虑内存大小够不够用,内存位置如何分配,以及两个程序之间会不会互相影响等等问题。

每个应用程序都可以随意使用“只属于”它的内存空间,那么你会不会好奇一个问题,假设程序a和程序b都在同一个地方写入了一个数据,并且他们在这个地方写入的数据都不一样,那么在后面使用的时候这里的数据该如何读取,是不是就会乱掉了?

其实并不会,虚拟内存只是给应用程序一个假象,实际的内存空间还是会被操作系统管理,每个程序所使用到的数据与地址都会被操作系统映射到其他地址。比如程序a的数据会被映射到地址22,然后程序b的数据被映射到地址88,也就是说虽然它们在使用时候是相同的地址,但是实际在内存中的地址是不一样的。

这就相当于幼儿园中的孩子哭着和老师说要妈妈,小张和小李都在说要找妈妈,但是老师知道他们找的并不是一个人,他们虽然叫的称呼一样,但是对应的人完全不是一回事,虚拟内存的概念也是如此。

那么虚拟内存还有什么其他的作用呢?其实在计算机中一直都有一种很重要的思想,那就是平衡。我们都知道CPU的主要工作就是取指-执行,就只有这主要的两个动作。执行可以很容易理解,就是在我们给CPU下达了一系列它能看懂的指令之后,它自动完成操作最后得出结果。那么剩下的一个取指是一种什么行为呢?

取指其实就是接收到我们下达的指令,但是这里也有一个问题,我们该如何告诉CPU需要进行的操作是什么呢?总不能直接说吧,CPU毕竟不是人类,它并不能听懂我们的话,那这个时候就需要我们以一种它能懂的方式来告诉它---我们的需求是什么。这个时候可能你就能想到了,好像我们都是通过鼠标键盘来操作计算机的,那是不是键盘鼠标就是沟通的桥梁呢?

其实是没错的,这就是我们与计算机沟通的工具,既然有了工具好像就可以进行“生产作业”了,但是好像这里还是有一些问题。仔细想一下,如果我们需要做一个很复杂的计算,或者前面做的计算我们后面还需要用到,这种情况下再去花很长时间去敲键盘效率实在是太低了,那是不是我们需要对数据进行保存,以方便以后的使用,那保存好像就需要使用到存储设备了。这个时候我们就能想到ssd,也就是固态硬盘。

固态硬盘是一种高速的存储设备,现在的ssd能够达到几千兆的读取速度,这貌似是很快的了,给计算机来进行存储指令然后进行取值操作应该是够了吧。?其实实话来说这是一种可行的方案,但是这里又遇到一个问题,如果现在需要进行的操作是对延迟非常看重的操作,硬盘的弊端就会极大的体现出来。就比如你现在正在打fps游戏,这种游戏对于画面的刷新与延迟是非常影响用户体验的,所以对于这种情况来说对于高延迟是难以容忍的。

那么固态硬盘的高延迟正是它致命的缺点,这个时候就需要更低延迟且需要一定大容量的存储设备来代替固态硬盘,到这里终于提到了今天的主角,这个设备就是DRAM内存。这种内存就是拥有高带宽低延迟的易失性存储设备,也就是开头说的内存设备。该设备的延迟在ns级别,而固态硬盘的延迟在ms级别,所以它能进行更快速的数据传送,让CPU的运行效率更高。

那么现在接着开头的内容讲,这个时候我们所使用的8G内存在打开多个应用的时候,很快内存容量就被吃满了,那么接下来应该怎样操作去保证用户的应用程序不会被“杀掉”呢?

如果前面的内容仔细看了应该会想到这个答案,其实方法就是拿出固态硬盘的一部分来代替内存使用,在我们使用一些软件的时候,可能有些软件虽然被打开了但是短时间内并不会被使用到。或者某个程序占用的内存比较多,当他被切换到后台时,就可以将他的一部分内存放入硬盘,当遇到更严重的内存不足的情况就可能会将所有软件都放入硬盘以保证当前任务的资源需求。

这样看似我们的“内存”就可以做到非常的大了,只要我们的硬盘足够大,是不是理论上来说就可以不担心内存问题了?道理其实是这样的,但是这样的代价就是会使你的电脑变得非常的慢,因为他们之间无论是带宽还是延迟的差距都非常大。

所以这也就能够理解,为什么打开很多网页虽然占用很多内存但是并不会导致网页闪退,但是在打开一些游戏时候内存不足就会闪退了。因为很多游戏对于内存响应和速度的要求都很高,在使用硬盘做内存的情况下,几乎是不能正常玩游戏的,既然不能正常使用那么还不如直接闪退,不然连一个加载界面都要等几十秒或者几分钟,这是没办法接受的事情。

标签: #电脑里的计算器不见了