覆盖 (编程)
维基百科,自由的百科全书
| 本条目没有列出任何参考或来源。(2012年9月16日) |
在一般计算机概念中,覆盖(overlay)表示“把一块指令或数据换为另外一块。”覆盖是一种编程方法,使得程序大小比主存空间大的时候也可以运行。嵌入式系统由于没有虚拟内存机制,也会因为物理内存的限制而使用覆盖技术。
用法[编辑]
构建一个覆盖程序需要程序员手动把程序分割为独立的目标代码。 覆盖管理器由操作系统或程序自身提供,用来从外存读取所需数据并交换到主存。 通常,链接器都会提供了对覆盖的支持。
例子[编辑]
下例展示了用来使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 |
+-------------+ +-------------+