覆盖 (编程)
外观
![本页使用了标题或全文手工转换](http://upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
此条目没有列出任何参考或来源。 (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 | +-------------+ +-------------+