b'\n_START_ARTICLE_\nOverlay (programare)\n_START_PARAGRAPH_\nOverlay este o tehnic\xc4\x83 de programare a calculatoarelor prin care p\xc4\x83r\xc8\x9bi din program, aflate pe suporturi de memorie extern\xc4\x83 (en), sunt transferate \xc3\xaen memoria intern\xc4\x83 a unui calculator, unde \xc3\xaenlocuiesc (reacoper\xc4\x83) ceea ce era \xc3\xaenainte acolo. Este o tehnic\xc4\x83 de programare care s-a folosit \xc3\xaen perioada \xc3\xaen care nu ap\xc4\x83ruse conceptul de memorie virtual\xc4\x83, iar memoria fizic\xc4\x83 disponibil\xc4\x83 era mai mic\xc4\x83 dec\xc3\xa2t cea necesar\xc4\x83 pentru \xc3\xaenc\xc4\x83rcarea programului respectiv \xc3\xaen \xc3\xaentregime. Sistemele \xc3\xaenglobate utilizeaz\xc4\x83 \xc8\x99i ast\xc4\x83zi aceast\xc4\x83 tehnic\xc4\x83, deoarece sunt realizate cu un minimum de memorie fizic\xc4\x83 \xc8\x99i f\xc4\x83r\xc4\x83 memorie virtual\xc4\x83.\n_START_SECTION_\nDescriere\n_START_PARAGRAPH_\nUn program este format din mai multe module, fiecare modul con\xc8\x9bin\xc3\xa2nd un segment de cod (program), unul de date \xc8\x99i unul de stiv\xc4\x83. La calculatoarele la care adresarea local\xc4\x83 a memoriei se face pe 16 bi\xc8\x9bi, iar adresarea este la nivel de octet, fiecare dintre aceste segmente nu poate dep\xc4\x83\xc8\x99i 64\xc2\xa0Kiocte\xc8\x9bi. Pentru a forma programul executabil aceste module sunt montate de editorul de leg\xc4\x83turi (en). Dac\xc4\x83 editorul de leg\xc4\x83turi nu prime\xc8\x99te alte instruc\xc8\x9biuni, structura programului va fi liniar\xc4\x83, iar lungimea sa este posibil s\xc4\x83 dep\xc4\x83\xc8\x99easc\xc4\x83 memoria fizic\xc4\x83 disponibil\xc4\x83 a calculatorului, caz \xc3\xaen care programul nu poate fi \xc3\xaenc\xc4\x83rcat \xc3\xaen memorie (\xe2\x80\x9enu \xc3\xaencape \xc3\xaen memorie\xe2\x80\x9d), deci nici executat. Solu\xc8\x9bia este o structur\xc4\x83 de reacoperire, prin care p\xc4\x83r\xc8\x9bi din program folosesc aceea\xc8\x99i zon\xc4\x83 din memorie, la un moment dat \xc3\xaen memorie exist\xc3\xa2nd doar o parte a programului._NEWLINE_Construirea unei structuri de reacoperire \xc3\xaenseamn\xc4\x83 divizarea manual\xc4\x83 a unui program \xc3\xaen blocuri \xc8\x99i plasarea lor \xc3\xaentr-o structur\xc4\x83 arborescent\xc4\x83 (en). \xc3\x8en principiu structura are o r\xc4\x83d\xc4\x83cin\xc4\x83, \xc3\xaen care \xc3\xaen exemplul din figura al\xc4\x83turat\xc4\x83 este plasat (doar) modulul 1. R\xc4\x83d\xc4\x83cina se \xc3\xaencarc\xc4\x83 la adresa de \xc3\xaenceput A1 (adresa de \xc3\xaenc\xc4\x83rcare \xc3\xaen memorie a programului). Celelalte module sunt plasate \xc3\xaen ramuri, fiecare ramur\xc4\x83 av\xc3\xa2nd aceea\xc8\x99i adres\xc4\x83 de \xc3\xaenc\xc4\x83rcare, A2. Lungimea fiec\xc4\x83rei ramuri \xc3\xaempreun\xc4\x83 cu r\xc4\x83d\xc4\x83cina trebuie s\xc4\x83 fie mai mic\xc4\x83 dec\xc3\xa2t memoria intern\xc4\x83 disponibil\xc4\x83._NEWLINE_La rularea programului, ini\xc8\x9bial \xc3\xaen memoria intern\xc4\x83 se \xc3\xaencarc\xc4\x83 doar partea de program din r\xc4\x83d\xc4\x83cin\xc4\x83. \xc3\x8en momentul \xc3\xaen care apare un apel (salt) la un modul situat \xc3\xaentr-o ramur\xc4\x83, ramura respectiv\xc4\x83 este \xc3\xaenc\xc4\x83rcat\xc4\x83 \xc3\xaen memorie la adresa ramurilor (\xc3\xaen exemplul dat A2) \xc8\x99i execu\xc8\x9bia programului continu\xc4\x83. Dac\xc4\x83 apar apeluri spre module aflate \xc3\xaen alte ramuri, ramura necesar\xc4\x83 este \xc3\xaenc\xc4\x83rcat\xc4\x83 la aceea\xc8\x99i adres\xc4\x83 (\xc3\xaen exemplu A2) distrug\xc3\xa2nd con\xc8\x9binutul zonei respective de memorie, deci datele care con\xc8\x9bin valori calculate trebuie s\xc4\x83 fie situate \xc3\xaen r\xc4\x83d\xc4\x83cin\xc4\x83. Practic, ramurile comunic\xc4\x83 \xc3\xaentre ele prin r\xc4\x83d\xc4\x83cin\xc4\x83._NEWLINE_Opera\xc8\x9bia de \xc3\xaenc\xc4\x83rcare a unei ramuri este relativ lent\xc4\x83, fiind o opera\xc8\x9bie cu un suport de memorie extern, deci la organizarea ramurilor se urm\xc4\x83re\xc8\x99te minimizarea acestor \xc3\xaenc\xc4\x83rc\xc4\x83ri. \xc3\x8enc\xc4\x83rcarea propriu-zis\xc4\x83 de pe suportul extern de memorie \xc3\xaen memoria intern\xc4\x83 se face de c\xc4\x83tre sistemul de operare._NEWLINE_Exemplul de mai sus este caracteristic calculatoarelor de tip IBM-PC operate cu sistemul de operare MS-DOS. Memoria intern\xc4\x83 destul de mare pentru epoca respectiv\xc4\x83 (640\xc2\xa0Kiocte\xc8\x9bi) f\xc4\x83cea ca o structur\xc4\x83 cu un singur nivel de ramificare s\xc4\x83 fie considerat\xc4\x83 suficient\xc4\x83, MS-DOS nepermi\xc8\x9b\xc3\xa2nd structuri mai complexe. \xc3\x8ens\xc4\x83 la \xc3\xaenceputuri, c\xc3\xa2nd memoriile erau foarte mici, structurile erau mai complexe, de exemplu sistemul de operare SIRIS\xc2\xa02 al calculatorului Felix C-256, av\xc3\xa2nd la dispozi\xc8\x9bie o parti\xc8\x9bie de doar 20\xc2\xa0Kiocte\xc8\x9bi, avea o structur\xc4\x83 arborescent\xc4\x83 cu dou\xc4\x83 niveluri de ramificare.\n_START_SECTION_\nAplica\xc8\x9bii\n_START_PARAGRAPH_\nActual (\xc3\xaen 2016) multe aplica\xc8\x9bii comerciale ruleaz\xc4\x83 pe platforme cu memorie virtual\xc4\x83 (en). Aceste aplica\xc8\x9bii sunt scrise \xc3\xaen limbaje de programare de nivel \xc3\xaenalt, care nu ofer\xc4\x83 programatorului prea mult control al memoriei. \xc3\x8ens\xc4\x83 pentru a func\xc8\x9biona, memoria virtual\xc4\x83 are nevoie de o unitate de gestionare a memoriei (en) (MMU). Unele sisteme \xc3\xaenglobate ieftine nu dispun de o MMU, ca urmare folosesc tehnica reacoperirii. De asemenea, la unele sisteme func\xc8\x9bion\xc3\xa2nd \xc3\xaen timp real tehnica reacoperirii ofer\xc4\x83 un timp de r\xc4\x83spuns mai scurt dec\xc3\xa2t tehnica pagin\xc4\x83rii, folosit\xc4\x83 de memoria virtual\xc4\x83. Tehnica reacoperirii a fost folosit\xc4\x83, de exemplu, la navetele spa\xc8\x9biale. Tehnica reacoperirii a fost mult folosit\xc4\x83 \xc3\xaen anii 1980 sub aplica\xc8\x9biile DOS, ca WordStar, dBase, ramurile de reacoperire av\xc3\xa2nd extensia .OVL.'