内存容量是有限的

发布时间 2024-01-05 10:31:45作者: deeplearnMs

实际上,计算机中的内存容量并非是无限的。为了维持内存容量无限的假象,操作系统可
以如同使用高速缓存一样使用物理内存,将没有放入物理内存中的数据作为文件存储在磁
盘上。这种机制被称为虚拟内存virtual memory。虚拟内存制造出了拥有充足的物理内
存的假象。
不过,从磁盘上获取一个内存块需要花费数十毫秒,对现代计算机来说,这几乎是一个
恒定值。

想让高速缓存更快是非常昂贵的。一台台式计算机或是手机中可能会有数吉字节的主内存,
但是只有几百万字节的高速缓存。通常,程序和它们的数据不会被存储在高速缓存中。
高速缓存和虚拟内存带来的一个影响是,由于高速缓存的存在,在进行性能测试时,一个
函数运行于整个程序的上下文中时的执行速度可能是运行于测试套件中时的万分之一。当
运行于整个程序的上下文中时,函数和它的数据不太可能存储至缓存中,而在测试套件的
上下文中,它们则通常会被缓存起来。这个影响放大了减少内存或磁盘使用量带来的优化
收益,而减小代码体积的优化收益则没有任何变化.

 

第二个影响则是,如果一个大程序访问许多离散的内存地址,那么可能没有足够的高速缓
存来保存程序刚刚使用的数据。这会导致一种性能衰退,称为页抖动page thrashing。当
在微处理器内部的高速缓存中发生页抖动时,性能会降低;当在操作系统的虚拟缓存文件
中发生页抖动时,性能会下降为原来的 1/1000。过去,计算机的物理内存很少,页抖动更
加普遍。不过,如今,这个问题仍然会发生。