覆蓋 (程式設計)

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