君子有大道,必忠信以得之,骄泰以失之。

1 内存管理中产生的内部碎片和外部碎片是什么?

内部内存碎片是指,在内存分页管理中,内存分页机制分配内存的最小单位是一页,即使程序不足一页大小,我们最少只能分配一个页,所以页内会出现内存浪费,所以针对内存分页机制会有内部内存碎片的现象。

外部内存碎片是指,在内存分段管理中,由于不连续分配,段与段之间在物理内存中会产生间隙(碎片)

所以产生内部碎片的是分页管理,产生外部碎片的是分段管理

不管是分页还是分段都是非连续的分配管理方式

针对分段中的产生外部碎片的问题,可以采用内存交换的策略,但是对磁盘的访问速度要求很高

2 程序局部性原理

  • 时间局部性:是指如果程序中的某条指令一旦执行,则不久之后该指令可能再次被执行;如果某块数据被访问,则不久之后该数据可能再次被访问。
  • 空间局部性:是指一旦程序访问了某个存储单元,则不久之后,其附近的存储单元也将被访问。

程序局部性原理的相关应用:

  • 缓存(Cache): 缓存是一种用于临时存储数据的高速存储器。通过利用时间局部性和空间局部性,缓存可以有效地减少主存(RAM)的访问次数,从而提高程序执行速度。
  • 虚拟内存(Virtual Memory): 虚拟内存通过将程序需要的内存映射到实际的物理内存地址上,利用页表(page table)来管理。局部性原理帮助操作系统预测哪些内存页可能会被使用,从而在需要时将这些页加载到物理内存中,避免频繁的磁盘访问。
  • 预取(Prefetching): 预取是指在程序实际需要数据之前,提前将数据加载到缓存或内存中。预取技术利用局部性原理,通过预测程序将要访问的数据,提前进行加载,从而减少等待时间。