内存(Memory)的那些事儿

所需知识:计算机的基本组成基础

了解计算机进程

了解堆栈

离散数学 函数-映射  ;了解hash函数

会一种计算机语言


这里谈的内存就是指这种计算机存储,也是祖师爷-冯·诺伊曼机的构成。上回写的递归由于计算机资源有限,一般指地主要就是内存有限。对于计算机来说,有了存储器,才有了记忆功能,才能保证计算机的正常运转。存储器分为主存储器和辅助存储器,主存储器又称为内存储器【简称内存】。

一般人都认为内存 == 磁盘,(⊙﹏⊙),内存== 运行内存。这个有点儿问题就不纠结了(电脑引入中国时,也基本是原始形态,磁带在驱动器上,常位于主机以外便于拆卸,RAM条在主机箱内偶尔更换且难拆,所以磁带称外存,RAM叫内存)。如果关于手机的就当我没说哈。

内存的发展

物理内存(Physical Memory Address):硬件设备(内存条)里的空间地址。

虚拟内存(Virtual Memory Address):利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(Swap Space)。(为了满足物理内存的不足而提出的策略)

image



程序执行时,会放入到内存中,它的满足俩个要求:

1.可执行程序加载后占用的内存空间应该是连续的。毕竟,程序执行指令是按照顺序一条一条执行的。实际上,它通常是被分隔成多个物理内存碎片,还有一部分存储在外部磁盘存储器上,在需要时进行数据交换。这个理解起来有些♂难,不要纠结,先看着。想深入了解得看这个,或者直接看下面的东西。

2.可以同时加载很多个程序,但是不能让程序自己规定在内存中的位置。

那么物理内存和虚拟内存之间有什么不可告人的秘密呢。



由这几张图,可以看出,内存的分配并不是连续的,而是有映射的关系。这就解决了程序执行时一般的物理地址。

那么中间这么多的空白-->即内存碎片该怎么办呐?

内存交换(Memory Swapping)。即把一部分程序存写到硬盘中,而虚拟内存中,去掉这部分,然后从硬盘中再读写回来。emm,这个没准计算机得尝试多次,才能找到好的位置,将程序放好。

所以,有时候明显,你打开多个应用时,或者新开一个应用时,计算机也懵圈了,加载速度很慢。

为了充分利用内存,减少内存碎片,提高"加载速度",就有了内存分页(Paging)。



表.jpg

进行内存交换时,每次只放入一点点数据,按照上图表.jpg的方式,像填字游戏一样,一一填入。

如果,没有这个一一对应的关系,就会报错(缺页错误Page Fault之类的)。

当然这些知识简单的介绍一个流程,复杂点二的。

图片来源:百度图片

你可能感兴趣的:(内存(Memory)的那些事儿)