|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Oct 2005
Città: Palermo
Messaggi: 2579
|
Procedura di attesa multiprocessore
Stavo studiando sul libro di sistemi operativi la procedura di attesa dei processi in un sistema multiprocessore per entrare in una sezione critica.
Il libro in particolare diceva che per evitare l'attesa attiva causata dalla lock si poteva aggiungere anche la wait. Dunque lo schema per ogni processo era lock(x) wait(mutex) unlock(x) . . sezione critica . lock(x) signal(mutex) unlock(x) Ma facendo una controprova ho notato come questa procedura conduce ad una sequenza morta. Infatti, posto ad esempio il semaforo mutex ad 1, se il primo processo si blocca sulla sezione critica, un secondo processo si sospenderà trovando mutex = 0, ed in pratica non andrà ad eseguire la unlock. A quel punto tutti i processi risulteranno impossibilitati ad entrare nella lock. Come è possibile che un libro di univarsità riporti un errore tanto grave ?
__________________
Utente gran figlio di Jobs ed in via di ubuntizzazione Lippi, perchè non hai convocato loro ? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
"x" sarebbe...?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Oct 2005
Città: Palermo
Messaggi: 2579
|
x sarebbe il registro che indica la risorsa condivisa.
![]() cmq ho ricevuto risposta dal docente autore del libro: in pratica qualunque sia l'esito della wait (dunque anche se sospensiva), la unlock viene eseguita ugualmente, come se fossero un' unità atomica. ![]()
__________________
Utente gran figlio di Jobs ed in via di ubuntizzazione Lippi, perchè non hai convocato loro ? |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Ma lock e unlock cosa fanno in questo caso ?
E più che altro ce n'è bisogno ? |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Azz..non avevo visto che era multiprocessore...allora in tal caso sono d'accordo... Comunque sarebbe stato più chiaro con una implementazione della wait...
In ogni caso questi devono essere spin lock da quello che mi ricordo. |
![]() |
![]() |
![]() |
#6 | ||
Senior Member
Iscritto dal: Oct 2005
Città: Palermo
Messaggi: 2579
|
Quote:
Quote:
__________________
Utente gran figlio di Jobs ed in via di ubuntizzazione Lippi, perchè non hai convocato loro ? |
||
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:52.