[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