覆蓋(程式設計)

本页使用了标题或全文手工转换,现处于香港繁体模式
求聞百科,共筆求聞

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