This is an old revision of the document!


Test Cursul 7

1. Pe un sistem multiprocesor cu două procesoare, care este rezultatul rularii simultane pe cele doua procesoare a instructiunii inc 0x12(%eax)?

Depinde de valoarea din registrul eax}. Dacă este aceeași pe ambele procesoare atunci putem incrementa o singură dată sau de 2 ori aceeași locație de memorie – inc} nu este atomic la nivel de sistem. Dacă valorile din eax} sunt diferite atunci nu se întâmplă nici o condiție de cursă.

eax} NU conține 0x12} și NU se face incrementare cu 0x12}!

2. De ce sunt necesare sincronizări între 2 apeluri ale unei rutine de întrerupere? De ce sunt necesare sincronizări între rutina de întrerupere și codul kernel?

Accesul la date partajate în ambele cazuri. În cazul rutinelor de întrerupere e posibil ca ele să fie serializate sau distribuite pe mai multe procesoare.

3. Care este starea celor două linii de cache a unor două procesoare ce folosesc protocolul MESI pentru secvența (completați tabelul, cu bold e ce era deja în tabel).

Procesor A nop eax ← [a] nop [a] ← eax nop
Procesor B nop nop eax ← [a] nop eax ← [a]
Cache A I E S M/E S
Cache B I I S I S

Vedeți https://www.scss.tcd.ie/Jeremy.Jones/vivio/caches/MESI.gif

Singurele combinații valide sunt I* și SS.

so2/cursuri/curs07/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