Coninut Memoria tipuri de memorie Memoria virtual Algoritmi

  • Slides: 27
Download presentation
Conţinut • Memoria – tipuri de memorie • Memoria virtuală • Algoritmi de inter-schimbare

Conţinut • Memoria – tipuri de memorie • Memoria virtuală • Algoritmi de inter-schimbare a paginilor în cazul MV 1

O ierarhie a memoriei Regiştrii UCP Cache Magistrala de memorie Memoria principală Magistrala I/E

O ierarhie a memoriei Regiştrii UCP Cache Magistrala de memorie Memoria principală Magistrala I/E Dispozitive I/E 2

Tipuri de memorie Creşte preţul Regiştrii UCP Cache Magistrala de memorie Memoria principală Magistrala

Tipuri de memorie Creşte preţul Regiştrii UCP Cache Magistrala de memorie Memoria principală Magistrala I/E Dispozitive I/E Creşte dimensiunea/timpul de acces 3

Memoria cache • Tip de memorie mică, ultra-rapidă, aproape de UCP, ce conţine cele

Memoria cache • Tip de memorie mică, ultra-rapidă, aproape de UCP, ce conţine cele mai recent accesate date sau instrucţiuni de cod – “Cache hit” – “Cache miss” (un bloc de dimensiune fixă de date ce conţine datele necesare sunt extrase din memoria principală şi introduse în cache) • Fenomenul de “localizare temporală” ne spune că este foarte probabil să avem nevoie de aceste date curând, deci el este plasat în cache unde poate fi accesat rapid • Timpul de răspuns necesar pentru un “cache miss” depinde atât de latenţa memoriei cât şi de bandwith – ce determină timpul în care va fi citit întregul bloc. Un “cache miss” administrat hardware va determina de regulă o pauză în funcţionarea CPU – până în momentul în care sunt disponibile datele. 4

Memoria cache şi controller-ul de memorie cache UCP Unitatea de control cache UCC 512

Memoria cache şi controller-ul de memorie cache UCP Unitatea de control cache UCC 512 KB SRAM cache Timp de acces: 10 ns Magistrala de sistem Subsistemul de Intrare/Ieşire 512 MB DRAM Memoria principală Timp de acces: 60 ns 5

Unitatea de management a memoriei virtuale UCP UMM Unitatea de management a memoriei Memoria

Unitatea de management a memoriei virtuale UCP UMM Unitatea de management a memoriei Memoria SRAM cache Magistrala de sistem Subsistemul de Intrare/Ieşire Memoria principală DRAM 6

Magistrala de sistem Procesor Magistrala de sistem Slot Slot 7

Magistrala de sistem Procesor Magistrala de sistem Slot Slot 7

Magistrala de sistem - echipamente periferice Procesor Magistrala de sistem Slot Memorie Interfaţă de

Magistrala de sistem - echipamente periferice Procesor Magistrala de sistem Slot Memorie Interfaţă de monitor Interfaţă de floppy-disc Slot Interfaţă de CD-ROM Slot Interfaţă de imprimantă 8

Execuţie concurenţială Programul 1 Execuţie Aşteptare Programul 2 Aşteptare Execuţie Aşteptare Programul 3 Aşteptare

Execuţie concurenţială Programul 1 Execuţie Aşteptare Programul 2 Aşteptare Execuţie Aşteptare Programul 3 Aşteptare Execuţie 9

Fragmentarea memoriei Sistemul de operare Regiune memorie 1 Regiune 324 KB Regiune 600 KB

Fragmentarea memoriei Sistemul de operare Regiune memorie 1 Regiune 324 KB Regiune 600 KB Regiune de memorie de 1024 KB Regiune 100 KB Regiune de memorie neutilizată Regiune memorie 2 10

Segmentarea memoriei Sistemul de operare Regiune memorie 1 Program 1 - segment 0 Regiune

Segmentarea memoriei Sistemul de operare Regiune memorie 1 Program 1 - segment 0 Regiune memorie 2 Program 1 - segment 1 Regiune memorie 3 Program 1 - segment 2 11

Translatarea dinamică a adreselor - segmentarea Adresa de bază Deplasament Expandarea adresei Nr. de

Translatarea dinamică a adreselor - segmentarea Adresa de bază Deplasament Expandarea adresei Nr. de segment Segment Deplasament Adresa de început 0 123 1 2 456 789 Adresa de început a segmentului + deplasamentul = adresa absolută a segmentului Sistemul de operare Regiune memorie 1 Program 1 - segment 0 Regiune memorie 2 Program 1 - segment 1 Regiune memorie 3 Program 1 - segment 2 12

Translatarea dinamică a adreselor - paginarea Adresa de bază Deplasament Expandarea adresei Nr. de

Translatarea dinamică a adreselor - paginarea Adresa de bază Deplasament Expandarea adresei Nr. de pagină Pagină Deplasament Adresa de început 0 123 1 2 456 789 Adresa de început a paginii + deplasamentul = adresa absolută a paginii Sistemul de operare Regiune memorie 1 Program 1 - pagina 0 Regiune memorie 2 Program 1 - pagina 1 Regiune memorie 3 Program 1 - pagina 2 13

Translatarea dinamica a adreselor – segmentare + paginarea Adresa de bază 1 Segment Deplasament

Translatarea dinamica a adreselor – segmentare + paginarea Adresa de bază 1 Segment Deplasament Expandarea adresei Pagină 5 Deplasament Adresa absolută= adresa reală a paginii + deplasamentul 2 Segment Adresa tabelei de pagini 0 123 1 2 456 789 Tabela de pagini a segmentului 2 3 Pagina 4 5 Adresa reală 0 123 1 2 456 789 14

Memoria virtuală Pagini de memorie Memoria virtuală Harta memoriei (memory map) Memoria fizică Disk

Memoria virtuală Pagini de memorie Memoria virtuală Harta memoriei (memory map) Memoria fizică Disk 15

Memoria virtuală • În acelaşi sens, nu toate obiectele (date sau instrucţiuni) pot fi

Memoria virtuală • În acelaşi sens, nu toate obiectele (date sau instrucţiuni) pot fi la un moment dat în memoria principală. Dacă avem memorie virtuală, atunci unele dintre obiecte se pot afla pe disc. Spaţiul de adresare este de regulă împărţit în blocuri de lungime fixă – pagini. • La un moment dat, paginile se află fie în memoria principală, fie pe disc • Atunci când se cere un obiect care nu este în cache sau în memoria principală, apare un “page-fault” – moment în care întreaga pagină este mutată de pe disc în memoria principală. Aceste “page-fault” durează mai mult şi atunci sunt controlate de software şi UCP nu face pauză. • De regulă, UCP comută către alt task atunci când apare un acces la disc. Memoria cache şi memoria principală au aceeaşi relaţie ca şi cea existentă între memoria principală şi disc. 16

Memoria virtuală • În orice moment, un calculator rulează mai multe procese, fiecare având

Memoria virtuală • În orice moment, un calculator rulează mai multe procese, fiecare având propriul spaţiu de adrese de memorie. Ar fi foarte costisitor să se dedice un întreg spaţiu de adresare pentru fiecare proces, având în vedere că multe dintre procese folosesc doar o mică parte a spaţiului propriu de adrese. A apărut astfel necesitatea partajării unei părţi a memoriei între mai multe procese. • Acest procedeu poartă numele de “memorie virtuală” – memoria fizică se divide în blocuri care sunt alocate diferitelor procese. • Inerentă unei astfel de abordări este o schemă de protecţie ce restricţionează accesul proceselor la blocuri ce aparţin altor procese. Majoritatea formelor de memorie virtuală reduc, de asemenea, timpul de pornire a unui program, deoarece nu tot codul sau datele trebuie să fie deja în memoria fizică înainte ca programul să înceapă. 17

Memoria virtuală • Nu însă partajarea între procese a memoriei este adevăratul motiv pentru

Memoria virtuală • Nu însă partajarea între procese a memoriei este adevăratul motiv pentru care s-a inventat memoria virtuală. Dacă un program devine prea mare pentru memoria fizică, este sarcina programatorului să îl facă să încapă în ea. Au rezultate acele suprapuneri (overlay). • Blocurile de memorie în cazul memoriei virtuale se numesc pagini sau segmente. UCP foloseşte adrese virtuale ce sunt translatate (hardware cât şi software) în adrese fizice ce accesează memoria principală. Acest procedeu se numeşte procedeul de mapare a memoriei sau de translatare a adreselor. Astăzi memoria virtuală intervine la nivel de memorie principală şi disc magnetic. 18

Memoria virtuală Cererea de pagini (demand paging) Atunci când o pagină de memorie este

Memoria virtuală Cererea de pagini (demand paging) Atunci când o pagină de memorie este referită (fie că este vorba despre cod sau date) şi ea nu se află în memorie atunci ea este adusă de pe disc şi se re-execută instrucţiunea Programul A Programul B Memoria fizică Hard disc 19

Memoria virtuală Nr paginii Regula spune că cererile de pagini din memoria externă (page

Memoria virtuală Nr paginii Regula spune că cererile de pagini din memoria externă (page faults) se produc rareori. Tabela de pagini necesită prezenţa unui bit “rezident" care ne arată dacă pagina este sau nu în memorie. Uneori se utilizează termenul "valid" pentru a indica rezidenţa în memorie. O pagină “invalidă" este astfel o pagină nerezidentă sau care o adresă ilegală. Este mai logic să avem doi biţi - unul ne indică faptul că pagina este validă iar cel de-al doilea ne arată dacă pagina este sau nu în memorie. Bit valid/invalid 1 1 0 Tabela de pagini 0 Nr paginii Rezident Bit valid/invalid 1 0 20

Memoria virtuală Paşii ce se urmăresc în cazul unui “page fault” 1. Procesul necesită

Memoria virtuală Paşii ce se urmăresc în cazul unui “page fault” 1. Procesul necesită o pagină ce nu este rezidentă în memorie. 2. Verifică în tabela de pagini dacă referinţa de memorie este validă sau nu. 3. Dacă este validă dar pagina nu este rezidentă, se încearcă obţinerea acesteia din memoria secundară. 4. Se caută şi se alocă un cadru (frame) liber (o pagină de memorie fizică neutilizată în prezent – poate fi necesară eliberarea unei pagini de memorie). 5. Se planifică o operaţie de disc pentru a se citi acea pagină din memoria secundară în cadrul nou alocat. 6. După scrierea paginii în memorie se modifică tabela de pagini - pagina este acum rezidentă. 7. Se reporneşte instrucţiunea ce a generat page fault. 21

Memoria virtuală Sistemul de Operare 3 Obţinerea paginii din memoria secundară 2 Referinţă la

Memoria virtuală Sistemul de Operare 3 Obţinerea paginii din memoria secundară 2 Referinţă la tabela de pagini 1 Trap Se încarcă P 6 Repetarea instrucţiunii Tabela de pagini 5 Refacerea tabelei de pagini Paşii administrării unui “page fault” Cadru liber de memorie Memoria fizică 4 Copierea paginii în memoria principală 22

Memoria virtuală – înlocuirea paginilor În cazul supra-alocării memoriei trebuie să renunţăm la ceva

Memoria virtuală – înlocuirea paginilor În cazul supra-alocării memoriei trebuie să renunţăm la ceva deja existent în memorie. Supra-alocarea apare atunci când programele au nevoie de mai multe pagini de memorie decât cele existente fizic. Metoda de abordare: Dacă nici o pagină fizică nu este liberă, se caută una care nu este utilizată la momentul respectiv şi se eliberează, urmărind următorii paşi: 1. Se caută pagina pe disc. 2. Se caută un cadru liber. a. Dacă există, se foloseşte b. Altfel, se selectează o pagină “victimă” c. Se scrie pagina “victimă” pe disc. 3. Se citeşte noua pagină în cadrul eliberat. Se modifică tabela de pagini. 4. Se reporneşte procesul. 23

Memoria virtuală – înlocuirea paginilor Bit valid/invalid Pagin a Bitul se modifică în “invalid”

Memoria virtuală – înlocuirea paginilor Bit valid/invalid Pagin a Bitul se modifică în “invalid” p 1 2 p 1 p 2 v i Tabela de pagini Copierea paginii “victimă” pe disc 1 Victima SWAP p 2 4 3 Bitul se modifică în “valid” Memoria fizică Copierea paginii necesare de pe disc în memorie Funcţionarea mecanismului de înlocuire a paginilor 24

Memoria virtuală – înlocuirea paginilor Algoritmi de înlocuire a paginilor În momentul supra-alocării putem

Memoria virtuală – înlocuirea paginilor Algoritmi de înlocuire a paginilor În momentul supra-alocării putem fie interschimba pagini de pe disc, fie supra-scrie anumite pagini. Ce pagini vor fi înlocuite? - pentru a minimiza numărul de page faults. Exemplul unui şir de referinţă pentru pagini de memorie ce vor fi executate: Şir de referinţă: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 FIFO 1 5 4 Uşor de implementat dpdv conceptual. 2 1 5 Se poate folosi fie un “time-stamp” pentru pagini, fie o organizare într-o coadă. (Coada reprezintă implementarea cea mai uşoară). 3 2 4 3 10 “page faults” Şir de referinţă: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 25

Memoria virtuală –înlocuirea paginilor Înlocuirea optimă • Reprezintă o politică de înlocuire a paginilor

Memoria virtuală –înlocuirea paginilor Înlocuirea optimă • Reprezintă o politică de înlocuire a paginilor care au cea mai mică rată “page fault”. • Algoritmul: se înlocuieşte pagina care nu va fi utilizată pentru cea mai lungă perioadă de timp. • Practic imposibil de implementat. 1 4 2 6 “page faults” 3 4 5 Şir de referinţă: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 26

Memoria virtuală – înlocuirea paginilor Metoda LEAST RECENTLY USED ( LRU ) – “Cea

Memoria virtuală – înlocuirea paginilor Metoda LEAST RECENTLY USED ( LRU ) – “Cea mai puţin recent folosită pagină” – Se înlocuieşte pagina care nu a fost utilizată pentru cea mai mare perioadă de timp. – Rezultatele sunt bune; dificultatea apare la implementare. – Variante de implementare: • ”Time stamp” pentru pagini - înregistrarea ultimei utilizări. • Stivă de pagini – se scot paginile utilizate şi se introduc în vârful stivei Ambele metode necesită facilităţi hardware (trebuie făcută reactualizare după fiecare instrucţiune), de aceea este rar utilizată în practică. 1 5 2 8 “page faults” 3 5 4 3 4 Şirul de referinţă: 1, 2, 3, 4, 1, 2, 5, 1, 2, 3, 4, 5 27