This is an old revision of the document!
Curs 06 - Gestiunea memoriei
Secțiunile 4.1, 4.2, 4.3, 4.8
executabil
R: Unul singur
stivă
R: În caz că avem threaduri, fiecare thread are stiva lui, deci pot fi mai multe stive in cadrul unui proces.
handler de semnal
R: Oricâte
tabelă de fișiere
R: Una singură
spațiu de adresă
R: Unul singur
descriptor de fișier deschis
R: Oricați descriptori (Pot fi și 0 - se închid de exemplu descriptorii pentru stdin, stdout și stderr)
tabelă de pagini (discuție paginare ierarhică/neierarhică)
R: Tabela de pagini face legătura dintre memoria virtuala si memoria fizica. Cum memoria virtuală este unică per proces rezultă că și tabela de pagini este unică per proces.
Paginare neierarhică - există o singură tabelă de pagini
Paginare ierarhică - există mai multe tabele de pagini. De exemplu pentru o paginare pe 2 nivele, există o tabela de index (outer page table) și mai multe tabele de pagini în funcție de necesități.
Din faptul că nu avem TLB și memoria se accesează folosind paginare neierarhică rezultă că pentru fiecare adresă virtuală vom avea două accese la memorie: unul la tabela de pagini și unul la adresa fizică efectivă.
Considerăm valoarea i menținută într-un registru; dacă se ține în memorie, vor rezulta accese suplimentare la fiecare pas. Din punct de vedere programatic, ciclul for se execută de 4096 * 16 / 32, adică de 2048 de ori.
Dimensiunea paginii este nerelevantă. Fără existența TLB-ului se realizează două accese la memorie.
-
2 accese pentru
b_i} (unul la tabela de pagini, celălalt pentru culegerea valorii efective)
-
Se vor realiza, astfel, 2048 * 4 = 8192 accese la memorie, cu o durată totală de 8192 * 5ns.
-
~~DISCUSSION:off~~