This is an old revision of the document!


Test Cursul 3

1. Poate fi implementat gettimeofday() ca apel de sistem virtual? Dar settimeofday()? Argumentați răspunsul.

Doar gettimeofday poate fi implementat ca apel virtual pentru că VDSO presupune o mapare non write-able deci nu putem modifica variabile din kernel prin apeluri de sistem virtuale.

2. Ce se poate intampla dacă un registru nu este declarat clobbered?

Instrucțiunile cu efecte laterale (div de exemplu) pot suprascrie acest registru fără ca el să fie salvat anterior. Nu se pot executa corect anumite optimizări pentru că se vor corupe date dacă presupunem că registrul nu este modificat.

Nu am punctat răspunsurile care ziceau că dacă nu-l decral clobbered atunci nu-l pot folosi (și pot obține eroare la compilare)

3. Care sunt avantajele pasarii parametrilor apelurilor de sistem prin registri (si nu pe stiva)? (de exemplu pe arhitectura x86)

Regiștrele se află on chip, extrem de aproape de unitățile artimetico-logice din procesor. Memoria se află destul de departe (chiar mai avem și câteva cache-uri pe parcurs). Prin urmare, avantajul constă în rapiditatea accesului.

Nu s-au punctat răspunsurile care arătau _dezavantajele_ în loc de avantaje și răspunsurile care ziceau că nu mai trebuie să facem push și pop de pe stivă în momentul apelului. _NU_ se efectuează pop pentru a ajunge la parametrii unei funcții, se accesează prin EBP (dacă am face pop până să ajungem la parametri am elimina întâi adresa de return).

so2/cursuri/curs03/test.1360455039.txt.gz · Last modified: 2013/02/17 09:52 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0