Principiul segmentelor de cod retrase, Replicarea instantelor active



Principiul segmentelor de cod retrase


Spatiul pe care il ocupa un program in memoria interna se imparte in doua domenii: segmente de cod si segmente de date.

Segmentele de cod ale unui program sau DLL contin codurile executabile ale aplicatiei - adica instructiunile care realizeaza functiile proprii aferente programului. Aceste instructiuni nu se modifica in timpul executiei programului.

Segmentele de date contin informatii ce se modifica permanent in timpul executiei aplicatiei curente. Aceste informatii sunt valori luate pentru scopuri interne sau date introduse de utilizator. Continutul unui segment de date se poate modifica de la o secunda la alta, de la o executie la alta - in timp ce continutul segmentului de cod ramine acelasi.



Windows analizeaza memoria disponibila si daca aceasta este insuficienta, va elimina din memoria RAM segmentele de cod cele mai putin utilizate. Daca un program are nevoie de un segment pe care windows l-a indepartat deja din memorie, modulul de administrare a memoriei il va incarca automat in RAM de pe hard disc, astfel incit functionarea aplicatiei sa nu fie afectata. Acest mecanism de incarcare dinamica functioneaza numai cu segmente de cod, pentru ca aceastea nu isi schimba continutul in cursul executiei.


Replicarea instantelor active


Sub Windows, mai multe aplicatii identice se pot executa de mai multe ori, aparent simultan. Copiile aflate simultan in executie se numesc instante active. Fiecare instanta a unui program ocupa memorie interna, atit pentru segmentele de cod, cit si pentru segmentele de date. Segmentele de cod ale aceleiasi instante active sunt identice.

Mecanismul replicarii instantelor active consta in urmatorul principiu: prima instanta a programului ocupa spatiu, atit pentru coduri, cit si pentru date, iar oricare alta instanta aferenta aceluiasi program relansat va utiliza segmentele de cod ale primei instante si va avea nevoie de memorie pentru segmentele de date. De exemplu aplicatia WordPad ocupa in total 85 KB la prima lansare (40 KB memorie pentru coduri si 45 KB pentru date), iar la a doua lansare a instantei ocupa doar 45 KB, spatiu doar pentru date.