[so] multe intrebari:)

Razvan Deaconescu razvan.deaconescu at cs.pub.ro
Tue Apr 20 00:23:01 EEST 2010


On Mon, 2010-04-19 at 21:49 +0300, Cosmin Ratiu wrote:
> 2010/4/19 Andreea b <andreea_rbd87 at yahoo.com>
> > 1. Am incercat sa imi dau cu presupusul in privinta exercitiului de
> mai jos, dar as vrea sa fiu sigura. Cum se gandeste?
> >
> > Un sistem fără TLB și cache accesează memoria folosind
> > paginare neierarhică. Presupunând că timpul de acces la
> > memorie este de 5ns și că o pagină de memorie ocupă 4KB, cât
> > durează operațiile de mai jos?
> 
> Aici trebe sa numeri cate accese la memorie se fac. Dat fiind ca nu
> avem nici TLB nici cache, e destul de simplu. a[ceva] e un acces,
> b[ceva] e alt acces. Presupunem ca i e tinut intr-un registru.

Sunt doua accese la memoria fizica pentru fiecare "acces de cod". Adica
b[i] (presupunand i intr-un registru) inseamna doua accese: unul la
tabela de pagini si unul pentru accesarea paginii fizice efective.
TLB-ul are rolul tocmai de a atenua overhead-ul dat de accesarea
memoriei fizice doar pentru obtinerea tabelei de pagini.

> > 4. Presupunand ca mi se da un cod, cum imi dau seama cand are loc un
> page fault?
> >
> > De cate ori scriu ceva intr-o pagina noua?
> 
> Paginile noi se mapeaza cand se acceseaza prima data o zona de
> memorie. La prima intrebare nu stiu raspunsul momentan.

Cand ti se da cod, tii cont de faptul ca page fault-ul apare in situatia
in care:
* pagina este alocata virtual dar nu este mapata (demand paging)
* pagina este alocata virtual dar se gaseste pe disc (swap)
* pagina este alocata virtual dar mapata read-only si a avut loc acces
de scriere (copy-on-write)
* pagina este alocata cu drepturi limitate iar accesul incalca acele
drepturi (rezulta segmentation fault in user space)
* pagina este nealocata/nevalida (rezulta segmentation fault in user
space)

Trebuie sa probezi situatiile de mai sus (sper ca le-am acoperit pe cele
mai frecvente) pe codul dat.

Razvan



More information about the so mailing list