覆蓋 (編程)

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

在一般的計算機概念中,覆蓋(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        |
    +-------------+   +-------------+