Sunteți pe pagina 1din 27
5 Gestiunea memoriei 5.1. Gipuri de memorie Memoria constituie o resursi fizica fundamentalé in orice sistem de calcul Memoria se caracterizeazi prin: capacitate, mod de acces la informatie, timp de acces, durata ciclului, vitez& de transfer a informatiei, cost, etc. In raport de locul ocupat intr-un sistem de calcul, se poate vorbi de o divizare a echipamentelor, prevazute cu posibilitatea de a inregistra, pastra si reda informatia, in doua categorii: * memoria interna, numita si operativa, principala, central’; * memoria externd, numit& si secundar’, auxiliaré Memoria interna are rolul de a pastra atat programele, pe durata executari lor de catre unitatea centrald, cat si informatiile utilizate de acestea (rezultate, date), prezenta ei fiind absolut necesara pentru functionarea unui sistem de calcul. Memoria externa are menirea de a pastra mari cantitaji de programe si informatii utilizate frecvent, pentru a putea fi aduse la nevoie, intr-un interval de timp mic in memoria interna, in scopul prelucrarii In sistemele de calcul mai complexe se vorbeste de ierarhii de Memorie, care ar putea arita ca in figura 5.1. Ierarhia de memorie reprezinta © configurare a echipamentelor de memorie ale unui sistem de calcul pe diferite niveluri ale unei ierarhii, in functie de capacitatea si viteza de lucru a fiecruia, pentru formarea unei memorii cu performante ridicate In unele sisteme de calcul memoria intern este formati din dou’ niveluri: memoria operativa, componenta obligatorie a memoriei interne si, eventual, 0 memorie "cache". Memoria cache, de regula este de capacitate mica, dar rapida (timp de acces redus), in ea pistrandu-se informatiile cele Gestiunea memoriei 1341 mai recent utilizate de unitatea central. Memoria operativé are 0 capacitate care variaza de la cativa Kb pana la cétiva Mb (cele mai uzuale fiind intre 64 Kb - 24 Mo) si are, in general o pondere mare in costul unui sistem de calcul, pondere ce este in continua scddere datoraté progreselor tehnologice in realizarea memoriilor semiconductoare. Memoria secundara, ca nivel ierarhic distinct al memoriei externe, apare in sistemele de calcul in care se foloseste conceptul de memorie virtual. Capacitatea memoriei secundare este cu céteva ordine de marime mai mare decét memoria operativa, dar gi timpul de acces la informatiile ei este cu cateva ordine-de m&rime mai mare. Echipamentele tipice pentru memoria secundara sunt tamburul si discul magnetic, dar se folosesc in acest scop si miezurile de ferita lente. Memorie de arhivare Memorie externa Memorie secundara Memorie operativa Memorie interna Memorie cache Figura 5.1: lerarhie de memorie Memoria de arhivare are o capacitate de inregistrare conceptual nelimitaté si constituie suportul oricdror informatii disponibile int-un 132 Gestiunea memoriei enzi magnetice, discuri (de masi, cartridge, sdischete, Winchester, etc.), casete magnetice, etc. Evident, timpul de acces la memoria de arhivare se exprima in secunde, minute (zeci de minute, uneori), deci cu cateva ordine de marime mai mare decat cel de la memoria secundara. Memoria operativa Teprezinta obiectul fundamental al acestui capitol, Sau mai precis tehnicile de gestionare-a Memoriei (cateva din cele multe), vor fi abordate in cadrul acestui capitol. Existenta. unui numar mare de tehnici de gestionare a Memoriei isi gaseste explicatia in faptul cA Ja sistemele de operare cu multiprogramare, capacitatea memoriei operative este deseori insuficientd Pentru @ cuprinde toate Programele gi datele solicitate. Aceste tehnici vizeaza utilizarea cat mai economic’ a cantitatii limitate de memorie prevazuta in sistem. Gestionarea memoriei reprezinta un ansamblu de functii ale sistemului de operare care indeplinesc urmatoarele atributii: * . evidenta starii de alocare a fiecirei locatii a memoriei interne: * selectarea activititii c&reig i se va aloca o parte a memoriei, la un moment dat; * alocarea, pentru activitatea selectata, a unei parti din memoria interna si actualizarea informatiei de alocare; * stabilirea zonei (, zonelor) ce urmeaza a fi eliberata(e) la un moment dat, in vederea alocarii la 0 alt& activitate Spatinl de adrese desemneazi totalitatea _numelor referite intr-un program, in timpul executiei Programului fiecdrui nume fiindy-i asociata o anumit& adresa (locatie) a memoriei operative. ‘ Componentele sistemului. de Operare previzute pentru gestionarea memoriei fac parte din interfata interna. in unele sisteme de operare apare o divizare a acestor componente in doua subniveluri, in Paralel cu o divizare Pe de alti parte, gestiunea_memoriei poate fi considerata sub trei aspecte: 1. gestionarea memoriei Pe termen‘lung (la nivel de lucrare); 2. gestionarea memoriei pe termen mediu (la nivel de proces); 3. gestionarea memoriei pe termen scurt (in cadrul unui proces) Gestionarea memoriei nu poate fi discutati separat de alte dou’ aspecte: adresarea si Protectia. Gestiunea memoriei 133 LE la nivel logic (SGP) Tratarea intreruperilor Gestiunea procesoarelor Figura 5.2.: Structura interfetei interne si nucleului Adresarea memoriei consti din procedeele prin care se realizeazi legatura dintre un element din spatiul de adrese al unui program si adresa corespunzatoare din memoria operativa a sistemului de calcul Protectia memoriei cuprinde procedecle prin care se asigur’ utilizarea corecti a spatiului memoriei operative de c&tre procesele aflate in acel moment in memorie, protejand informatiile din memorie impotriva réferintelor neautorizate in paragrafele urmitoare va fi tratata problematica gestionanil memoriei in sistemele cu monoprogramare, in sistemele cu multiprogramare, precum si conceptul de memorie virtuala punandu-se in evidenti caracteristicile functionale esentiale ale ichnicilor de“ gestionare, jegaitura lor cu mecanismele de adresare si protectie 5.2. Gestionarea memoriei in sistemele cu monsprogramare Mlonoprogramarea constituie un mod de exploatare a unui sistem de calcul, care presupune executia seriali a programelor Sistemul de operare are, la un moment dat, in evidenti un singur program caruia i se aloc4 toate resursele sistemului. Gestionarea memoriei operative la sistemele cu monoprogramare este simpli, in raport cu sistemele cu multiprogramare, $ntrucat un singur utilizator poate fi activ la un moment dat. Memoria, in cazul sistemelor cu monoprogramare, este divizati conceptual in trei regiuni contigue (figura 5.3) 134 Gestiunea memoriei Una din acestea este permanent alocata sistemului de operare, restul memoriei fiind ia dispozitia utilizatorului. in general, programele gi datele nu vor ocupa in totalitate memoria, rezultand o regiune liber’, neutilizati a acesteia in asemenea sisteme nu se face distinctie intre gestionarea pe termen lung si mediu, deoatece conceptele de lucrare si proces se confunda, de obicei, in acest caz Nu este necesar nici un dispozitiv hardware Special penta adresare, in afara obisnuitului tegistru de adrese ale memoriei Adresele prevazute in instructiunile programelor ‘sunt _adrese absolute, nefiind _ necesare transformari (translatari) ale acestor adrese Zona liberi Sistemal de operare Figura 3.3.: Alocarea memoriei in sistemele cu monoprogramare Sistemele cu monoprogramare pot fi prevazute cu un sistem de protectie a memoriei, prin care s& se asigure ca programele utilizatorilor nu Pot distruge, intentionat sau neintentionat, sistemul de operare prin scriere in Zona rezervata acestuia. Un astfel de mecanism de protectie ar consta dintr- un registru limita si un bit de “stare-program", care ar indica faptul c& programul momentati in executie in unitatea centrala apartine utilizatorului Gestiunea memoriei 435 | | sau sistemului de operare. In registru! limita se inscrie adresa superioara a zonei de memorie destinata sistemului de operare (presupunem c& sistemul de operare este incircat la adresa 0). Ori de cate ori un program cere acces la memorie pentru o operatie de scriere, se compari adresa specificaté in instructiune cu cea din registrul limita. Daca adresa este superioara celei din registrul limita, se verifica bitul "stare-program" pentru a se vedea daca accesul este cerut de sistemul de operare (si va fi permis) sau de programul utilizator (caz in care accesul va fi interzis) In cazul unui program utilizator ce solicité un accces neautorizat se emite un semnal de intrerupere, care va fi prelucrat de sistemul de operare, ducand, de regula, la abandonarea lucrarii. Modificarea starii-program din “utilizator" in "supervizor" are loc numai la apelul unei mutine a sistemului de operare, iar la terminarea acesteia se reface starea-program. Suportul software referitor la gestiunea memoriei in sistemele cu monoprogramare este minim, in sensul ca trebuie verificat doar ca dimensiunea programului utilizatorului, planificat pentru rulare, sa nu depaseasca dimensiunea memoriei operative disponibile si emis un mesaj de eroare in caz de depasire. Poate fi considerat’ drept componenta a gestiunii memoriei rutina incarcitor, care realizeazi incarcarea programului in memoria operativa, de pe suportul pe care se afla acesta. Asambloarele si compilatoarele care sunt destinate a lucra pe astfel de sisteme pot fi astfel concepute incdt si lucreze cu adrese absolute, cu conditia ca dimensiunea sistemului de operare sa fie cunoscuta si constanta. In cazul sistemelor de operare in care se prevad noi versiuni ale acestora, deci modificari ale dimensiunii sistemului de operare, translatoarele vor trebui sa lucreze cu adrese relative (inceputul programului avand adresa zero), iar rutina incarcator va realiza translatarea corespunzitoare a adreselor in momentul transferului programului in memoria operativa Principalul avantaj al tehnicii de gestionare a memoriei prezentat este simplitatea, fiind posibil ca un astfel de sistem de operare si aiba o lungime de numai cativa Kb Dintre dezavantaje este de mentionat faptul ci memoria nu este complet utilizaté, De asemenea, intrucat un singur program utilizator este prezent in memoria operativa, nu apare o suprapunere (un paralelism) intre functionarea unitatii centrale si a subsistemului de I/E, ceea ce conduce la un factor de utilizare sc4zut pentru resursele sistemului de calcul. De asemenea, dimensiunea maxima a programelor ce pot fi rulate.este limitati de dimensiunea memoriei, dar si de valorile de adrese ce pot fi specificate in instructiuni (adicé numarul de biti rezervati pentru -adrese). Dimensiunea programelor poate depasi dimensiunea memoriei _fizic 136 Gestiunea memoriei prezente in sistemul de calcul, daca se face uz de o structura de acoperire gestionata de utilizator (se zice ca utilizatorul isi segmenteaza programul) in acest caz restrictia de lungime se refera la lungimea celei mai mari ramuri a programului. Sistemele de operare cu monoprogramare se intalnesc in sistemele de calcul mici, in primul rand in cele realizate cu microprocesoare, fari ca simplitatea lor si impieteze asupra interfetei externe, care poate fi foarte extinsa. Gestionarea pe termen scurt a memoriei, in sistemele cu monoprogramare, depinde in buna masura de caracteristicile limbajelor de programare utilizate gi este realizata, de regula, de citre compilator O situatie aparte se iveste la limbajele de programare unde pentru gestionarea memoriei in cadrul proceselor se utilizeaza stiva. In acest caz este necesara existenta unui suport hardware pentru adresare, adecvat acestei structuri de date. Un suport minim ar putea fi format din includerea unui mod de adresare special penta stiva si a unor instructiuni de introducere si extragere in, respectiv din stiva. 5.3. Gestionarea memoriei in sistemele cu multiprogramare Muhiprogramarea Teprezinté un mod de exploatare a unui sistem de calcul, care permite executia simultané a mai multor programe, scopul principal al multiprogramarii fiind acela de a mari gradul de utilizare a unitatii centrale, prin suprapunerea efectuarii unor operatii in unitatea centrali pentru un Program, cu éfectuarea operatiilor de /E pentru un alt program Memoria operativa este acum impartita in mai multe zone, numite regiuni sau partitii, fiecare program fiind incarcat intr-o partitie. Situatia alocarii si utilizirii memoriei, la un moment dat, intr-un sistem cu multiprogramare, poate fi reprezentata ca in figura 5.4. Suportul ‘hardware minim necesar in asemenea sisteme este legat de protectia memoriei: trebuié asigurata, pe de o parte, integritatea sistemului de operare, iar pe de alta parte, neinterferenta dintre diferitele lucrari. Se pot utiliza in acest scop doua registre limit& care si pastreze adresele inferioari si superioara ale partitiei pentru care unitatea centrala lucreazi momentan (partitia curenta), acelasi mecanism urmand a fi aplicat si pentru canalele de VE. Un mecanism mai adecvat 11 constituie cel bazat pe "cheie_de_protectie/ cheie_de_acces" Gestiunea memoriei 137 Spatiu nealocat - Lucrarea 3 Neutilizat Partitia 3 Figura 5.4.: Alocarea memoriei pe partigit Memoria este impartiti in subdiviziuni, numite pagini, fiecare partitie fiind format dintr-un numar intreg de pagini. Fiecdrei pagini i se asociaza o. cheie de protectie (0 combinatie binara/ de exemplu, 4 biti la sistemul de operare SIRIS-3 [25]), care se memoreaza intr-un dispozitiv de protectie (o zona special destinata din memoria operativa). Orice cerere de acces la memorie provenita din programul in curs de executie intr-o partitie va fi insotita de cheia de acces corespunzatoare, accesul fiind permis numai daca exista. concordanta intre cheia de acces si cheia de protectie. -Acest mecanism este utilizat in multe dintre sistemele de calcul de capacitate medie/mare. Tehnicile de alocare a memoriei in sis\ pot clasifica astfel: « alocare statica (contigua) - cu partitii fixe (MFT); - cu partitii variabile (MVT), + alocare dinamica (prin paginare) emele cu multiprogramare se =e 138 Gestiunea memoriei 5.3.1. Alocarea statica ct partifii fixe (lemorg Hix Tasks) Bn aceasta tehnica de alocare, memoria operativa este divizati in partifii inainte de executia oric&rei lucrari, dimensiunile partitiilor fiind fixate la generarea sistemului de operare si putand fi modificate numai prin interventia operatorului sau printr-o noua generare. O partitie este alocaté unui program pe toati durata executiei lui, indiferent de gradul de ocupare a partitiei Dac lucrarea este lansata intr-o Partitie insuficienta, ea este eliminati din sistem fara a fi executata. Adresarea fiecarei partitii se face prin baz si deplasament. Prezenta in suportul hardWare & unui registru de bazi face ca programele compilate sa contina adrese relative fa inceputul programului, iar atunci cand programul este incircat in memorie, se specifica drept continut al registrului de bazi adresa de inceput a partitiei alocate. 5.3.2. Alocarea staticd cu partitii variabile (emory Bariahle Tasks) Aceasta tehnicd nu este diferita din punct de vedere harware de MFT, ci reprezinté o extensie a alocarii cu partitii fixe, permitand o exploatare mai economica a memoriei. in functie de solicitarile asupra sistemului de operare si de capacitatea memoriei inci disponibile la un moment dat, numarul si dimensiunea partitiei se modificd automat. in momentul in care un program intri in sistem el este plasat in memorie in spatiul in care incape cea mai mare (lunga) raimura a sa. Daca nu existé'un asemenea spatin, sistemul de operare poate decide urmatoarele *_ sf puna programul jin asteptare, pana la eliberarea unei zone suficiente de memorie; « sa efectueze 0 operatie.de relocare, adica de deplasare a partitillor active catre partifia monitor (partifia ocupata de sistemul de operare); in acest mod este posibil ca spatiul liber astfel obtinut si fie suficient pentru incarcarea programului in realitate, operatia de relocare (numita si compactarea memorici) este lansat&’ periodic, la intervale de cAteva secunde, de c&tre sistemul de operare, iar luctarile care nu dispun de memorie suficienta se pun in asteptarea terminarii altui program si/sau a unei relocari in figura 5.5, lucrarea 4, lansata la momentul TI asteapti terminarea lucrarii 2-(la momentul T2) si apoi o relocare (la momentul T3, partitia in = aa Gestiunea memoriei 139 care ruleazi lucrarea 3 este .impins” spre partitia mouitor), prin care zonele neutilizate devin contigue. Td. T2 13 Zona nealocata Zona nealocati Zon: nealocata Neutilizat Neutilizat Neutilizat Neutilizat Luerarea 1 Figura 5.5.: Operatia de relocare In cazul partitilor variabile sistemul de operare trebuie si mentina informatii mai detaliate asupra alocdrii memoriei, sub forma a douda tabele, una cu regiunile (partitiile) alocate. si alta. cu regiunile libere. Atunci. cand trebuie alocaté o nou& regiune, se cauta in tabela de partitii libere, dupa diverse procedee, mai cunoscute fiind cele denumite "prima potrivire" si "cea mai buna potrivire”’ in procedeul numit "prima potrivire", cautarea in tabela - partitiilor libere, ordonata dupa locatia de inceput a regiunii, se opreste la gasirea primei partitii suficient de mare pentru a satisface cererea de memorie. in procedeul "cea mai buna potrivire" se cauta intre partitiile libere aceea cu dimensiunea cea mai apropiati de cea solicitata. Tabela partitiilor libere este mentinuti acum ordonat& in sens crescator, dup’, dimensiunea partitiilor. Atunci cand o lucrare se termina, memoria alocata ei este eliberata Algoritmul de gestionare a memoriei trebuie sd verifice daca partitia 140 Gestiunea memori eliberata nu este adiacenta cu una sau mai. multe regiuni libere gi sa realizeze comasarea regiunilor libere adiacente. Principalul dezavantaj al alocarii statice (prin partitii) este fragmentarea memorici, chiar daci compactarea realizata in tehnica MVT cregte mult gradul de utilizare a memoriei. Timpul de realizare a compact&rii contribuie la o reducere a vitezei de calcul a sistemului de calcul, iar programele au dimensiunea limitata de dimensiunea memoriei. Alocarea MFT a fost folosita la sistemele de calcul de capacitate medie/mare din familia FELIX C, in timp ce alocarea MVT a fost utilizata pentru prima oara la sistemul de calcul IBM-360 in sistemul de operare OS- 360 MVT, apoi la minicalculatoarele PDP 11/45 si de aici a fost preluata gi aplicata la minicalculatoarele Independent si Coral 5.3.3. Alocarea Dinamicd prin paginare Alocarea dinamica prin paginare a aparut ca o alternativa la MVT, pentru a se evita fragmentarea excesiva a memoriei si operatia frecventa de relocare, renuntandu-se la-cerinta ca 0 partitie si fie o zona contigud de memorie. Pentru alocarea prin paginare se considera spatiul de adrese al fiecarui program divizat in portiuni egale, numite pagini logice. De asemenea, memoria operativa este divizaté in portiuni de aceeasi lungime, numite pagini fizice sau blocuri. Daca existé un mecanism de translatare adecvat, care va fi descris in continuare, o pagina logica poate fi plasata in orice pagina fizicd disponibili. Paginile logice raman contigue din punct de vedere logic, chiar dac& paginile fizice nu sunt adiacente. Mecanismul de translatare trebuie s& aib’ cate un registru pentru fiecare pagina logica de program. Registrele pot fi prevazute ca dispozitive hardware separate sau ca o portiune rezervata a memoriei operative, formand tabele de pagini (cate o tabela pentru fiecare program). Ele vor indica, pentru fiecare pagina logic din spafiul de adrese al unui program, pagina fizica alocata. Dimensiunea unei pagini fizice este fixat’ prin hardware (1 Ko, 2 Ko, etc.), cele mai uzuale fiind intre 1-4 Ko, alegindu-se, de obicei, puteri ale lui 2, pentru a simplifica la maximum calculul adreselor fizice, Alegerea dimensiunii paginii are o influenté mare asupra utilitatii acestui mecanism de adresare. Daca pagina este prea mare, gestionarea prin paginare se apropie de gestionarea cu partitii. Dac& pagina este prea mica, sunt necesare multe registre pentru realizarea translatarit adreselor, ceea ce mareste pretul de cost al sistemului de calcul Gestiunea memoriei 144 O adresa logici este de forma (4d) , unde / este num&rul paginii logice, iar d este deplasamentul in cadrul paginii. O adres fizic’ este de forma (fd) , unde f este-numirul paginii fizice, iar'd este deplasamentul in cadrul paginii fizice (blocului). in figura.5.6, ultimele 3 cifre din cadrul adreselor reprezinta deplasamentul. in cadrul paginii. De exemplu, in cazui unei instructiuni GOTO 3610, din lucrarea-2, de la adresa 1226, calculul adresei se face astfel: se separa ultimele trei cifre, obtindndu-se deplasamentul (610), prima cifta (3) indicand pagina logic’; din tabela de pagini a lucrarii 2 se obtine pagina fizick 11 asociat& paginii logice 3, apoi prin concatenare se obtine adresa fizici 11610, la caré se face saltul Spatii de adrese Tabele de pagini Memoria operativa 15000 14000 13000 12000 11000 10000 9000 8000 7000 6000 5000 4000 3000 Luerare 3 Figura $.6.: Alocare dinamica, prin paginare Pe langa tabelele de pagini asociate lucrarilor, un sistem de operare care foloseste alocarea dinamica prin paginare a memoriei operative, trebuie s@ aib& si o tabela unica a paginilor fizice, care va contirie cate o intrare pentru fiecare pagina, cu informatii asupra utilizirii ei (alocati sau disponibila). 142 Gestiunea memoriei Se-mai foloseste 6 tabel a paginilor active, o intrare in aceasta tabela indicand dimensiunea lucrarii si adresa de inceput a tabelei de pagini Tabelele de pagini si tabela paginilor fizice se pastreazi in memoria operativa, dar pentru a nu reduce viteza de lucru a sistemului de calcul, este necesar ca tabela de pagini a lucrarii momentan in executie in unitatea centrala (sau cel putin o parte a acestei tabele) sa fie pAstrati in registre rapide, prevazute in acest scop in arhitectura sistemului de calcul Atunci cand o noua lucrare trebuie incarcati in memorie;: se procedeaza in felul urmator: a. se calculeazi numarul de pagini al spatiului de adrese care urmeaza a fi incarcat gi se verifick daca exista suficiente pagini fizice libere; b. dac& nu existi numéarul suficient de pagini fizice, lucrarea este pus’ in agteptare, urmand a fi executata ulterior: c. altfel, se alocd o tabela de pagini cu numéarul de intrari necesar gi se completeaza aceasta tabel& cu blocurile alocate, alocarea facandu-se prin parcurgerea tabelei paginilor fizice libere (evident, starea acestora se va schimba in “alocat"): d_ ultima operatie va fi inc&rcarea intregului program in memorie. O proprietate importanté a gestionarii prin paginare este aceea cd permite © suprapunere partialé a spatiilor de adrese ale mai multor programe. Aceasta permite ca rutine si zone de date sa fie folosite in comun Evident, este necesara o protectie suplimentara a paginilor fizice utilizate in comun, care se poate obfine fie prin mecanismul uzual "cheie_de_protectie- cheie_de_acces", fie prin biti suplimentari in tabelele de pagini, pentru a indica tipul de acces permis dintr-un program la fiecare paginé fizica. Gestionarea prin paginare este utilizata la unele modele ale minicalculatorului PDP-11 (modelele 11/45, 11/60, 11/75 §.a.), precum gi la sistemele compatibile: I-100, 1-102F, Coral 4011, Coral 4030 Cu toate avantajele evidente ale acestei tehnici de alocare a memoriei Operative, se cuvin a fi amintite urmatoarele dezavantaje’ * suportul hardware necesar mareste costul sistemului de calcul; * © parte a memoriei este folosit’a pentru pastrarea unor tabele (in primul rand a tabelelor de pagini), reducand spatiul memoriei disponibile si crescdind viteza de raspuns a sitemului de calcul cu timpul unitatii centrale necesar prelucrarii frecvente a acestor tabele; + desi fragmentarea externa dispare, apare un nou fenomen si anume, fragmentarea interna, in sensul ca ultima pagina din fiecare lucrare este incompleta: * ramane o anumita cantitate de memorie nefolosit aceasta este insuficient4 pentru o noua lucrare; , in cazul in care Gestiunea memoriei 143 « dimensiunea programelor este limitat de spatiul memoriei operative. 5.4. Memoria virtuala Bn toate tehnicile de gestionare a memoriei prezentate pand acum, o lucrare mu poate fi incarcaté in memoric pana nu existd un spatiu liber cel putin egal cu dimensiunea totalé a lucrarii sau, in cazul utilizarii unci structuri de acoperire a programului, a unui spafiu liber de dimensiunea celei mai lungi ramuri din structura. Aceasta restrictie conduce adesea la zone libere neutilizate si la o crestere a costului programirii, prin includerea unui efort de organizare a programelor, astfel incat necesarul de memorie si fie cdt mai mic. Fste posibil sa se climine restrictia asupra dimensiunii programelor, pomindu-se de la o proprietate fundamental a programelor, si anume localizarea referinfelor. Acesta consti in faptul ci pe durate rolativ insemnate de timp programele utilizeaz zone restrdnse din spatiul lor de, adrese, deci, in prineipiu, un program poate fi executat chiar dacd numai aceste zone se afla in memoria operativa. Sistemul de operare este cel care va realiza prezenfa in memoria operativa a seeventelor de cod (program) si de date necesare, astfel ci programatorii pot Incra cu spatii de adrese ce depagese dimensiunile memoriei operative Sistemele in care se utilizeazd aceasta tehnic de gestionare a memoriei se numesc sisteme cu memorie virtuald. Existé doua tehnici principale de gestionare a memorici in sistemele de calcul cu memorie virtuala: © paginare la cerere; © segmentare. 5.4.1. Gestionarea memoriei prin paginare fa cerere Buportul harware necesar pentru aceast& tehnicd este asemanitor cu cel descris la alocarea dinamica prin paginare, cu deosebirea c& intr-o intrare a tabelei_de, pagini trebuie precizat si faptul ci, pagina este prezenti in memorie sau nu. 4 Daca la calculul unei adrese se ajunge la o pagina absent in memorie, este generata o derutare de paginare. Aceast& nu este interpretata ca o eroare (ca la intreruperea generata de tentativa de violare a protectiei memoriei), ci © modalitate de a pune in fucru rutinele sistemului de operare pentru aducerea in memoria operativa a paginii cerute si actualizarea tabelelor de Gestiunea memoriei stare, dupa care instructiunea in cursul c&reia s-a generat derutarea poate fi reluata, La inceputul unei lucrari va fi, de regula, incdrcaté numai prima pagina a programului, toate celelalte urmand a fi incarcate numai la cerere, prin derutari de paginare. In acest fel se asigura prezenta in memoria operativa numai a paginilor necesare executiei programului Atunci~cand o lucrare este: planificati pentru executie, intregul séu spatiu de adrese este copiat in memoria secundara (al c&rei suport este discul sau tamburul thagnetic) intre memoria secundara si memoria operativa va avea loc un schimb permanent de pagini. Partea cea jai complexa din software-ul pentru paginare la cerere este cea care implementeaza algoritmul de inlocuire a paginilor Inlocuirea este necesara atunci ‘cand toate paginile fizice ale memoriei operative sunt ocupate gi trebuie adusa o noua pagina in memorie, pentru care mu poate fi gasit loc decat prin renunjarea la una din paginile prezente in memoria operativa. Pagina selectat in vederea inlocuirii va fi transferata in memoria secundara (daci a fost modificati de la ultima incdrcare), iar pagina solicitati fi va lua locul. Apare astfel un "swapping" (alunecare) a paginilor Dac se intimpla ca pagina scoasa din memoria operativa sa fie din nou necesara dupa un interval de timp foarte scurt, va fi generat un transfer excesiv de pagini intre memoria operativa si memoria secundar’, care conduce la reducerea performantelor sistemului de calcul. Fenomenul poarti numele de."thrashing" (vanturare) gi s-au elaborat modalitati pentru evitarea sa. Concepiul de memorie virtuali poate fi utilizat atat in sistemele cu monoprogramare, cat si in cele cu multiprogramare, fiind mai raspandit la acestea din urma. in sistemele cu multiprogramare este posibil ca fiecarei lucrari activate sa i se aloce un numar de pagini fizice, iar algoritmul de inlocuire s& opereze numai asupra acelor pagini fizice de unde provine derutarea de paginare. Se utilizeazi gi varianta in care paginile oricarei lucrari pot ocupa, Ofice pagina fizicé a memoriei operative in acest caz pot apare situatii deosebite si complicate: de exemplu, la algoritmul de inlocuire a paginilor, nu vor putea participa paginile aflate in curs de incarcare cu 0 noua pagina. Primul calculator cu memorie virtualé a fost Atlas, construit la Universitatea din Manchester (1960). Dintre sisteme-de calcul comerciale care se bazeazi pe memoria virtuala sunt de mentionat [BM System/370 (cu sistemele de opérare OS/VS1, OS/VS2, Releasel, Release2, OS/VM), Honeywell 6180 (cu sistemul de operare Multics), Univac 70/46 (cu ‘sistemul de operare VMOS), iar mai recent minicalculatoarele VAX sau microcalculatoarele Gestiunea memoriei’ 145 incepe prelucrarea ungi instructiuni genereara adresa operandului calculeaza numarul aginit pagina ein memorie? NU avanseazd la urmétoarea instructiune jncared operandul si termina executia DERUTARE DE PAGINARE exist pagini fizic’ liberi? DA obtine numarul aginii fizice obtine adresa paginii din memoria secundara continua instructiunea selecteazi pagina entru inlocuire actualizeaza tabelele Pagina a fost modificata? DA serie pagina in memoria secundard citeste pagina din memoria secundara actualizeazi tabelele Figura 3.7.: Prelucrarca unei instructiuni (paginare la cerere) 146 Gestiunea memoriei realizate cu microprocesorul Motorola 68010 4 Pe langa structurile de date prezentate Ia tehnica gestionarii memoriei prin paginare, gestionarea memoriei prin paginare la cerere impune prezenta a inca unei tabele, prin care sa se indice adresa in memoria secundara a fiecrei_pagini a_unei lucriri. Aceasti tabela este mentinut’ in memoria secundara si este prelucrata numai prin software (tabelele Paginilor logice gi fizice sunt partial modificate direct prin hardware) Prelucrarea unei instructiuni in sistemele cu paginare la cerere implica © interactiune stransi intre hardware si software, de obicei secventa de operatii executata mai frecvent find realizata in hardware. Operatiile legate de prelucrarea unei instructiuni pot fi reprezentate schematic ca in figura 5.7 Se observa c& prelucrarea software (in figura, sub linia dubl& ce indica derutarea de paginare), constituie de fapt rutina pentru tratarea derutarii de paginare. De mentionat ca este posibil ca pe parcursul executiei unei instructiuni s4 apari mai multe derutari de Paginare. De exemphi [22], la calculatorul IBM System/370, unde instructiunile sunt de lungime variabila si existi o instructiune EX (EXecute) prin care se cere executarea altei instructiuni, este posibil sa se genereze pana la 8 derutari de paginare pentru prelucrarea unei singure instructiuni 3.4.2. Algoritmi de infocuire a paginilor Batuitiv, pagina care trebuie selectati spre a fi inlocuiti, ar fi accea care nu va fi niciodata necesard sau, cel putin, ar putea lipsi din memona Operativa mult timp Pentru a se face o asemenea selectie este ins. necesara cunosterea in avans a com- Portirti (evolutici) programului, ceea ce este, daca nu imposibil. cel putin extrem de dificil. Exist propuneri de algoritmi ce se bazeazt pe cunosterea in avans a cvolutiet programului, dar ei au o valoare, in primul rand teoreticd. servind drept comparatie pentru algoritmi implementabili. Algoritmii ce vor fi prezentati in continuare nu sunt studiafi formal, ci pe baza unor exemple preluati din [20] 5.4.2.1. Algoriteml FIFO Este cel mai simplu algoritm de inlocuire a paginilor. Cand trebuie eliberatt 0 Pagina fizicd se alege cea care confine pagina aflatd de cel mai mult timp in memoria operativa. In acest scop tabela blocurilor de memorie confine. in fiecare intrare, un pointer prin intermediul caruia intririle se ordoneaza intr-o list. dupa momentul utilizar (figura 5.8) Gestiunea memoriei 147 S- secventa de program ‘M memoria (in acest caz. M=3 deci 3 pagini fizice disponibile) D_ derutare de paginare in cazul + * marchedzd pagina selectatd pentru inlocuire Figura 5.8: Algoritmul FIFO Algoritmul FIFO este simplu de implementat, dar are cditeva dezavantaje: dacio pagina este frecyent folositi pe un interval de timp mai lung. inevitabil, ea va deveni cea mai veche din memorie, cu toate ea, probabil, va fi imediat referita din nou S- seeventa de program M_ memoria (in acest caz M=4, deci 4 pagini {fizice disponibile) D. derutare de paginare in cazul + * marcheza pagina selectatd pentru inlocuire Figura 5.9; "Anomalie" FIFO poate apare, este drept rar, aga-numita “anomalie FIFO": daca se mireste dimensiunea_zonci_memorici operative alocati lucrarii (numarul_de_pagini ee Ve 148 Gestiunea memoriei fizice), numaral de derutiri de Paginare creste, in loc sa scadi, aga cum ar fi de agteptat; in figura 5,9. este dat un exemplu de anomalic FIFO in care memoria creste de la 3 la 4 pagini fizicc, iar numdrul derutarilor de paginare creste de la 10 la II Exist o clasa de’ algoritmi de inlocuire, numiti a/goritmi de ip stiva, care nu prezinté anomalia FIFO, adic& eficienta lor creste intotdeauna odati cu mérirea dimensiunii memoriei operative. 5.4.2.2. Algoritmul LRH Algoritmul LRU (“Least Recently Used" - "cel mai de demult nefolosit"), selecteaz’ pentru inlocuire Pagina care nu a fost referité cel mai mult timp, bazAndu-se pe ipoteza ci daca pagina mu a fost referit, ea mu va fi necesari nici in viitorul imediat. Pagina cea mai recent folosita este pusa intotdeauna in varful listei de pagini, astfel c& pagina aflati la sfarsitul listei este cea care va fi selectata pentru inlocuire (figura 5, 10), De remarcat ca in cazul M=3 din figura 5.10., algoritmul LRU este mal putin performant decét FLFO.(11 derutiri de paginare, fati de 10 la FIFO), dar pentru M=4 (figura 5.11), are performante mult mai bune. Si. seeventa de program M memoria (in acest caz, M=3 deci 3 pagini fizice disponibile) D_ derutare de paginare in cazul + * marcheazéi pagina selectara pentru inlocuire Before no] oof ter/ estate |ro|oo lan tree tea foo fe fen tos fae fe fra fee | Figura 5.10.: Algoritmul LRU — = Gestiunea memoriei 149 Implementarea algoritmului LRU este destul de dificila si complicata. deoarece ar trebui ca tabela de pagini s& fie actualizaté la fiecare referire la memoric. Acest lucru este extrem de dezavantajos daca s-ar face numai prin mijloace software, iar dispozitivele hardware necesare pentru a realiza acelasi lucru ar fi costisitoare gi ar introduce o reducere a vitezei de lucru a sistemului de calcul S' seeventa de program M_ memoria (in acest caz M=4, deci 4 pagini fizice disponibile) D derutare de paginare in cazul * marchezé pagina selectatd pentru inlocuire Din aceste motive, algoritmul LRU nu este utilizat in practica in forma sa originali, preferandu-se diferite aproximari, cel mai cunoscut. fiind algoritmul NUR 5.4.2.3. Algoritmnl NHR Aigoritmul NUR ("Not Used Recently" - "nefolosit recent") considera un bit de referire in fiecare intrare din tabela blocurilor de memorie, care va fi pozitionat (pus pe 1) ori de cAte ori se face o referire la pagina respectiva Algoritmul de inlocuire a paginilor sterge periodic toti biti de referire: Dack atunci cand trebuie inlocuit&é o pagina, bitul de referire este gasit pe valoarea zero, se considera ca respectiva pagina fizici nu a mai fost referita de la ultima stergere si, deci, este un candidat la inlocuire. C&utarea in tabela de pagini se face conform schemei logice din figura 5.12, 150 Gestiunea memoriei ‘Avanseazii pointerul de infocuire la urmatoarea intrare din tabela wifes Pune bitul de referita? Selecteaza aceasta pagina pentru ‘inlocuire Figura 5.12: Céutarea tn tabela de pagini la algoritmul NUR iar efectul inlocuirii unei pagini prin algoritmul NUR este aratat in figura 5.13. Cautarea in tabela de pagini poineste de fiecare data de la pozitia urmatoare celei continute in pointerul de inlocuire (figura 5.13). Gestiunea memoriei 151 A) inainte de selectare B) Dupa selectare | paginas | 0 | | pagina [1 | wreo | pagina 2 [0 | 10 | Figura $.13.: Efectul inlocuirii unei pagini prin algoritmul NUR in acest mod toate intrarile primese un tratament uniform, spre deosebire de cazul cand se incepea cdutarea intotdeauna de la prima intrare in tabela (in acest caz primele pagini fizice isi schimbau extrem de frecvent continutul). 5.4.3. Gestionares memorizi prin segmentare Bo toate tehnicile de gestionare a memoriei prezentate pana acum a fost implicit presupus un spatiu de adrese liniar gi continuu. Este ins posibil ca spatiul de adrese s& fie organizat bidimensional, sub forma unor segmente, iar la gestionarea memorici segmentul si fie unitatea luath in considerare pentru alocare si pentru protectie. Loate adresele utilizate in memoriile organizate pe segmente constau din doua componente: (s,c), unde s este specificatorul §(numele) segmentului, iar c este deplasamentul in cadrul segmentului. Segmentul este memorat intr-o zona continua a memoriei operative. Adresa de memorie unde incepe segmentul s gi dimensiunea d a segmentului alc&tuiesc o intrare in tabela de segmente Organizarea la nivel de segment este vizibila programatorului, s deosebire de impartirea in pagini, care este numai o caracteristica a implementarii, Din punct de vedere al programatorului un segment poate fi un modui de program sau o zona de date. Segmentele au dimensiuni diferite (figura 5.14.), iar translatarea adreselor, din adrese logice in adrese fizice, se face asemanitor ca la gestionarea memoriei prin paginare la cerere. Evident, nu se mai pune problema inlocuirii paginilor, ci a segmentelor, iar cum segmentele au dimensiunile variabile, plasarea lor in memoria operativa se face dupa procedeele "prima potrivire" sau “cea mai buna potrivire" 152 Gestiunea memoriei lizarea segmentelor permite, pe Tanga realizarea conceptului de memorie virtuala si accesul in comun al’ mai multor procese la aceeasi copie a unui segment in memorie, efectuarea diriamicd (in timpul executiei) a operatiilor de editare de legaturi side incarcare, drepturi de acces diferentiate ale diferitelor Programe la acelasi segment Segment 0}Segment| Segment subrutind date zona de fucra Figura 5.14.: Spatial de adrese organizat pe segmente Tehnica segmentarii a fost utilizata la seria de calculatoare Burroughs BS000 si Rice University Computer, rezultiatele acestor experimente find utilizate la tehnica segment-pagina 5.4.4. Gestionarea memoriei prin tehnica stgment-pagina S-2 constatat ci tehnica segmentirii satisface intro mai mare masurai cerintele programatorului (divizarea programului in segmente de dimensiuni variabile, tindnd seama de logica programului), iar tehnica paginirii este mult mai practic din punctul de vedere al implementarii prin hardware (oferind cel mai sigur mijloc de protectie a informatiei). Imbinand cele doud avantaje a aparut tehnica segment-pagina in cadrul acestei tehnici, spatiul de adrese si spafiul de memorie sunt divizate in segmente, iar segmentele sunt divizate in pagini. in acest caz, dispozitivul de translatare trebuie sa construiascd gi s& exploateze doua tabele de memorie a, tabela de segmente; i b. tabela de pagini, cate o astfel de tabeli pentru fiecare segment. De aceasta data, o adres este un triplet (s,p,c), unde s este adresa segmentului, p este adresa paginii in cadrul, segmentului, iar ¢ este deplasamentul in cadrul paginii Gestiunea memoriei 153 a Aceasta tehnica de gestionare a memoriei a fost utilizata in cadrul sistemului de operare Multics (MULTIplexed Information and Computing Services), conceput si realizat de catre Massachusets Institut of Technology, cu participarea companiilor Bell si General Electric. Deoarece dispozitivul de translatare lucreazd cu adrese ce presupun. accese la tabela de segmente gi la tabelele de pagini (deci un acces la o inforniatie; presupune trei accese la memoria operativa), pentru a nu reduce viteza sistemului de calcul, se utilizeazi in implementarea tehnicii segment- pagina o memorie asociativa foarte rapida (de regula 8-16 registre, dat fiind costul foarte ridicat), in care se pastreaza ultimile pagini referite (deci tabelele sunt astfel partial sau integral memorate in acesta memorie) Ca observatie, la tehnicile de gestionare prin paginare la cerere sau segmentare, pentru implementare se pot utiliza, in vederea memorarii tabelelor de pagini, respectiv tabelelor de segmente: 1.0 memorie locali de dimensiuni mici, dar foarte rapid’ (de regula registre aflate in unitatea centrala); © zona din memoria operativa (cu consecinta reducerii vitezei sistemului de calcul); 3. 0 memorie asociativa foarte rapida. N 5.5. Structura gi gestiunea memoriei fa PO-uri Spatiul de adresare al microprocesorului standard 18086 fiind de 1 Mb, acesta a fost impartit in 16 blocuri de cdte 64 Kb, organizat ca in figura 5.15 Primelé 10 blocuri constituie memoria conventional’ (640 Kb). De obicei primul bloc este folosit de c&tre programele sistemului de operare (cazul sistemului de operare MS-DOS), Blocurilé A si B sunt utilizate drept buffere video. Blocul F este rezervat pentru programele instalate permanent in memorie (memoria ROM). ¢ modulul de initializare * extensii ROM; « ROM BASIC (interpretorul BASIC); ¢ BIOS-ul (Basic Input/Output System), Blocurile C, D, E sunt, de regula, rezervate, formand ceea ce in specificatille XMS (eXtended Memory Specification) se numeste "Memorie superioaré" (Upper Memory). Memoria superioara este utilizata pentru jncarcarea unor drivere, pentru a avea acces la alte tipuri de memorii. 154 Gestiunea memoriei + Memoria inalté (High Memory): 1024 Kb - 1088 Kb; * Memoria extins’ (Extended Memory): 1088 Kb —> 5120 Kb(5 Mb) Blocul F — 960 Kb Blocul C 768 Kb Blocul B 704 Kb Blocul A 640 Kb Memoria RAM 1a dispozitia utilizator Figura 5.15: Structura memoriei de 1 Mb la PC-uri Blocurile D gi E au fost folosite drept memorii ROM in cartuse la PC-junior (figura 5.15), ele fiind folosite acum de majoritatea firmelor de programare in scopul aratat in aliniatul precedent Gestiunea memoriei 185 Memoria conventionali este impartiti, din punct de vedere logic, in segmente, un segment putand avea maxim 64 Kb. Fiecare segment este constituit din locatii de memorie contigue gi este o unitate care poate fi adresata independent. Fiecarui segment i se atribuie o adresa de baza, care este intotdeauna multiplu de 16 (deoarece fiecare segment este constituit din paragrafe a cate 16 octeti). Segmentele pot fi adiacente, disjuncte, partial suprapuse sau suprapuse complet. Fiecare aplicatie defirieste * si utilizeazi_diferit_— segmentele. Microprocesorul T8086 (ca si 180286) are acces la patru segmente deodatii, deoarece dispune de 4 registre de segment (de cate 16 biti fiecare), in care sunt continute adresele de baz& ale segmentelor: 1. registrul CS, pentru segmentul de cod (program) curent; 2. registrul SS, pentru segmentul de stiva curent; 3. registrul DS, pentru segmentul de date curent; 4. registrul ED, pentru extrasegmentul de date curent (contine tot date, in special siruri de caractere) in functie de modul de gestiune a segmentelor, aplicatiile pot utiliza un spatiu de memorie mai mare (aproximativ S80 Kb in cazul sistemului de operare MS-DOS gi aproximativ 620 Kb in cazul sistemului de operare DR- DOS). Adresele din interiorul unui segment se numese adrese logice. Ele constau din adresa de bazd a segmentului si din deplasament, fiind reprezentate pe 16 biti Mai multe adrese logice pot localiza aceeasi locatie de memorie, atunci cand adresele logice se aflé in segmente diferite. de exemplu 0100:0226 si 0122:0006 indica locatia cu adresa fizic’ 1226. Adresa fizic& este o valoare pe 20 de biti care identifica unic locatiile de memorie (deci ea poate contine valori intre OH si FFFFFH, adica adrese pana la 1 Mo). Generarea adresei fizice din cea logicé se face deplasand valoarea bazei segmentului cu 4 pozifii binare spre stanga si adaugand deplasamentul. De exemplu, din adresa logic’ 1574:0112 se genereazi adresa fizica. 15852 shift spre sténga cu 4 biti 1574 > 15740 + 0112 = 15852 Sarcina generrii adresei fizice revine "Unitatii de interfata cu | magistrala". Aceasta obtine adresa logica a unei locatii de memorie in moduri diferite pentru insiructiuni, stiva sau date, iar in calcule se tine 156 Gestiunea memoriei Dae seama de modul de adresare specificat in instructiune (adresare imediata. adresare directa, adresare indirect’, adresare bazata, adresare indexati, adresare bazata indexatd, etc.). Pentru calcularea adreselor fizice sunt folosite registrele de bazi BP si BX, iar ca registre index SI si DI. Registrele folosite pentru calcul adresei fiecérui operand in parte, precum si a deplasamentului, sunt codificate intr-un camp al instructiunii Facem observatia ca, in cele mai multe cazuri, atribuirile implicite ale segmentelor la registrele de bazi sunt multumitioare. Este posibil ca Pprogramatorul sé adreseze o locatie de memorie in oricare din segmentele curente adresabile, in acest caz instructiunea find prefixata de un octet care specific registrul segment al locatiei respective Gestiunea memoriei 157 rr

S-ar putea să vă placă și