[so] [Quiz] Curs 7,8,9
Razvan Deaconescu
razvan.deaconescu at cs.pub.ro
Tue Apr 24 19:34:57 EEST 2012
Liviu Ioan <liviu.ioan at cti.pub.ro> writes:
> Salut,
>
> O serie de nelămuriri legate de întrebările din quiz-uri.
>
> Curs 7
> 6) La ce se referă GOT (Global Offset Table)?
> Aș vrea, dacă se poate, mai multe detalii legate de noțiunea de GOT. Am
> înțeles că e vorba de relocare, dar nu am înțeles foarte bine la ce se
> referă.
GOT și PLT sunt zone din spațiul de adresă al procesului folosite pentru
relocarea variabilelor globale și a funcțiilor dintr-o bibliotecă
partajată. Cred că această pagină[1] te poate ajuta.
> Următoarele două întrebări se leagă de 2 adrese ...
>
> 7) Ce referă, în general, adresa 0xcccccccc în spațiul virtual de adrese al
> unui proces pe un sistem Linux?
>
> - zona de cod
> - stiva
> - spațiul kernel
> - spațiul alocat bibliotecilor partajate
>
> Am văzut în TLPI(pag 119) că zona pentru kernel începe de la 0xc0000000. Am
> crezut că e doar un exemplu, nu o adresă efectivă, folosită de sistem.
În Linux, split-ul dintre spațiul user și spațiul kernel, în cadrul
spațiului de adrese al unui proces, este 3/1: 3GB de memorie virtuală
pentru user și 1GB de memorie virtuală pentru kernel la nivelul unui
spațiu virtual de 4GB. Adresa virtuală 3GB este prima adresă a nucleului
-> adică 0xc0000000.
> 8) Ce referă, în general, adresa 0xbfbfbfbf în spațiul virtual de adrese al
> unui proces pe un sistem Linux?
> Bun, aici nu am mai observat nimic în TLPI.
În general referă stiva. Este foarte sus în spațiul de adresă al
procesului, aproape de spațiul kernel.
Vezi aici[2].
> Curs 8
>
> 1) Care din următoarele NU este un avantaj al folosirii thread-urilor?
> timp de comutare mai rapid
> partajare facilă a informației
> eliminarea completă a apelurilor de sistem
> planificare avantajoasă pe sisteme multiprocesor
>
> Întrebarea mi se pare ambiguă, consider că ar trebui precizat modul de
> implementare pentru firele de execuție(user vs kernel).
> Pentru cazul "user space", ultimele două variante sunt corecte ["eliminare
> completă"]
Eliminarea completă a apelurilor de sisteme este fals și acela e
răspunsul corect. Celelate sunt avantaje ale folosirii
thread-urilor. Da, depinde de modul de implementare, dar rămân posibile
avantaje. Varianta trei este falsă.
> 5) Care din următoarele este partajată între thread-uri?
> stiva
> registrele
> handler de semnal
> variabilele globale
>
> Există două variante corecte de răspuns(utlimele două, nu?).
Da, am corectat eu întrebarea.
> 4) Care este fluxul unei operații de I/E?
> apel de sistem, device driver, controller, dispozitiv de I/E
> device driver, dispozitiv de I/E, apel de sistem, controller
> controller, apel de sistem, dispozitiv de I/E, device driver
> dispozitiv de I/E, controller, device driver, apel de sistem
>
> Răspunsul validat este primul. Dacă prima variantă este corectă, de ce nu
> este și ultima? Aceleași operații, executate în ordine inversă, inițierea
> fiind fâcută de la dispozitiv.
Am corectat.
> 5) Ce este IRP (I/O Request Packet)?
> Din nou, m-am documentat și nu am înțeles ce înseamnă.
Vezi în curs[3] (slide-ul 51) și aici[4].
[1] http://www.bottomupcs.com/global_offset_tables.html
[2] http://duartes.org/gustavo/blog/post/anatomy-of-a-program-in-memory
[3] http://elf.cs.pub.ro/so/wiki/cursuri/curs-09
[4] http://technet.microsoft.com/library/cc767885.aspx
Răzvan
More information about the so
mailing list