覆蓋 (編程)
外觀
![本頁使用了標題或全文手工轉換](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 | +-------------+ +-------------+