linux内存管理笔记(四)----虚拟内存管理技术

计算机这个行业的历史上有过很多成功的预言,最著名的自然是“摩尔定律”。当然免不了的也有很多“失败”的预测,其中一个最著名的就是,比尔·盖茨在上世纪 80 年代说的“640K ought to be enough for anyone”,也就是“640K 内存对每个人来说都够用了”。

而在现在,我们身边的机器的内存已经是4G,甚至动辄就是16G/32G的内存,如果你当时听到比尔盖茨的这句话的时候,你是不是觉得这个根本就是无稽之谈呢?那么我们就来看看这个技术是怎么做的呢?

1. 覆盖技术

覆盖技术主要用于早期的OS中(内存<64K),可用于存储空间受限,某些大作业不能一次全部装入内存,产生了大作业和小内存的矛盾。而覆盖技术就是解决这一矛盾,在较小的可用内存中运行较大的程序。其基本的思路如下:

  • 1.对于进程,不需要一开始就把程序的全部指令和数据装入内存中执行,常用功能的代码和数据常驻内存,不常用功能放在其他程序模块中,只在需要用到时装入内存
  • 2.程序划分为若干个功能上相对独立的程序段,按照程序逻辑结构让那些不需要同时执行的程序共享同一块内存区
  • 3.当有关程序段的先头程序已经执行结束后,再把后续程序段从外存调入内存覆盖前面的程序段

程序员必须把一个程序划分成不同的程序段,并规定好它们的执行和覆盖顺序,例如如下实例中,设某进程的程序正文段由A,B,C,D,E和F等6个程序段组成
linux内存管理笔记(四)----虚拟内存管理技术_第1张图片

由于程序段B不调用C,程序段C也不调用B,因此程序段B和C无需同时驻留在内存,它们可以共享同一内存区。
同理,程序段D、E、F也可共享同一内存区。所以对于程序实际

你可能感兴趣的:(内存管理)