覆盖 (编程)

在一般计算机概念中，覆盖（）表示“把一块指令或数据换为另外一块”。覆盖是一种编程方法，使得程序大小比主存空间大的时候也可以运行。嵌入式系统由于没有虚拟内存机制，也会因为物理内存的限制而使用覆盖技术。

用法 
构建一个覆盖程序需要程序员手动把程序分割为独立的目标代码。
覆盖管理器由操作系统或程序自身提供，用来从外存读取所需数据并交换到主存。
通常，链接器都会提供了对覆盖的支持。

例子
下例展示了用来使OS/360链接编辑器链接一个覆盖程序的控制语句。

 INCLUDE SYSLIB(MOD1)
 INCLUDE SYSLIB(MOD2)
 OVERLAY A
   INCLUDE SYSLIB(MOD3)
     OVERLAY AA
       INCLUDE SYSLIB(MOD4)
       INCLUDE SYSLIB(MOD5)
     OVERLAY AB
        INCLUDE SYSLIB(MOD6)
 OVERLAY B
    INCLUDE SYSLIB(MOD7)

                       +--------------+
                       | Root Segment |
                       | MOD1, MOD2   |
                       +--------------+ 
                               |
                    +----------+----------+
                    |                     |
             +-------------+       +-------------+
             |  Overlay A  |       |  Overlay B  |
             |  MOD3       |       |  MOD7       |
             +-------------+       +-------------+
                    |
           +--------+--------+
           |                 |
    +-------------+   +-------------+
    | Overlay AA  |   | Overlay AB  |
    | MOD4, MOD5  |   | MOD6        |
    +-------------+   +-------------+  

操作系统小作品
计算机编程
虚拟内存