Sobreposição (programação) - Overlay (programming)
Em um sentido geral de computação, sobreposição significa "o processo de transferir um bloco de código de programa ou outros dados para a memória principal , substituindo o que já está armazenado". Sobreposição é um método de programação que permite que os programas sejam maiores do que a memória principal do computador . Um sistema embarcado normalmente usaria sobreposições devido à limitação da memória física , que é a memória interna para um sistema no chip , e à falta de recursos de memória virtual .
Uso
A construção de um programa de sobreposição envolve a divisão manual de um programa em blocos de código de objeto autocontidos, chamados de sobreposições dispostas em uma estrutura de árvore . Segmentos irmãos , aqueles no mesmo nível de profundidade, compartilham a mesma memória, chamada de região de sobreposição ou região de destino . Um gerenciador de sobreposição, seja parte do sistema operacional ou parte do programa de sobreposição, carrega a sobreposição necessária da memória externa em sua região de destino, quando necessário. Freqüentemente, os linkers fornecem suporte para sobreposições.
Exemplo
O exemplo a seguir mostra as instruções de controle que instruem o OS / 360 Linkage Editor a vincular um programa de sobreposição, recuado para mostrar a estrutura (os nomes dos segmentos são arbitrários):
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 |
+-------------+ +-------------+
Essas declarações definem uma árvore que consiste no segmento residente permanente, chamado de raiz , e duas sobreposições A e B que serão carregadas após o final do MOD2. A própria sobreposição A consiste em dois segmentos de sobreposição, AA e AB. No tempo de execução, as sobreposições A e B utilizarão as mesmas localizações de memória; AA e AB irão utilizar os mesmos locais após o final do MOD3.
Todos os segmentos entre a raiz e um determinado segmento de sobreposição são chamados de caminho .
Formulários
A partir de 2015, a maioria dos aplicativos de negócios deve ser executada em plataformas com memória virtual . Um desenvolvedor em tal plataforma pode projetar um programa como se a restrição de memória não existisse, a menos que o conjunto de trabalho do programa exceda a memória física disponível. Mais importante ainda, o arquiteto pode se concentrar no problema que está sendo resolvido sem a dificuldade de projeto adicional de forçar o processamento em etapas restritas pelo tamanho da sobreposição. Assim, o designer pode usar linguagens de programação de alto nível que não permitem ao programador muito controle sobre o tamanho (por exemplo , Java , C ++ , Smalltalk ).
Ainda assim, as sobreposições permanecem úteis em sistemas embarcados. Alguns processadores de baixo custo usados em sistemas embarcados não fornecem uma unidade de gerenciamento de memória (MMU). Além disso, muitos sistemas embarcados são sistemas em tempo real e as sobreposições fornecem um tempo de resposta mais determinado do que a paginação . Por exemplo, o software do sistema de aviônica primária do ônibus espacial (PASS) usa sobreposições programadas.
Mesmo em plataformas com memória virtual, os componentes de software , como codecs, podem ser desacoplados ao ponto em que podem ser carregados para dentro e para fora, conforme necessário .
Uso histórico
Na era do computador doméstico , as sobreposições eram populares porque o sistema operacional e muitos dos sistemas de computador em que ele rodava não tinham memória virtual e tinham muito pouca RAM para os padrões atuais: o IBM PC original tinha entre 16K e 64K, dependendo da configuração. As sobreposições eram uma técnica popular no Commodore BASIC para carregar telas gráficas. Para detectar quando uma sobreposição já foi carregada, uma variável de sinalizador pode ser usada.
"Vários linkers DOS na década de 1980 suportavam [overlays] em uma forma quase idêntica à usada 25 anos antes em computadores mainframe." Os arquivos binários contendo sobreposições de memória tinham uma extensão padrão de fato, .OVL . Este tipo de arquivo foi usado entre outros pelo WordStar , dBase e o pacote de software de automação de escritório Enable DOS da Enable Software, Inc .. O compilador GFA BASIC foi capaz de produzir arquivos .OVL.
Veja também
Referências
links externos
- IBM OS Linkage Editor e Loader (PDF) . Versão 21. IBM Corporation . Março de 1972 [janeiro de 1972]. p. 244. GC28-6538.