Come viene applicata l'atomicità delle operazioni di riferimento?

4

Nei linguaggi gestiti, come viene applicata l'atomicità delle operazioni di riferimento?

Su alcune piattaforme i riferimenti devono essere almeno a 64 bit, quindi non può fare affidamento su operazioni di parole atomiche di solito a 32 bit ...

È fatto semplicemente attraverso l'uso di serrature? Non sarebbe considerato troppo costoso in termini di prestazioni?

Per essere più precisi non intendevo le tutte operazioni di riferimento, intendo per lo più l'assegnazione che è atomica, ad esempio .NET e Java. Ma anche l'assegnazione non è ovviamente atomica dato che sulla maggior parte delle piattaforme non è possibile modificare in modo affidabile il valore di 64 bit word in modo atomico ...

    
posta mrpyo 02.02.2015 - 12:04
fonte

1 risposta

2

Per estendere i commenti, la tua affermazione

On some platforms references have to be at least 64 bit, so it cannot rely on usually atomic 32 bit word operations

non è del tutto corretto.

Sì, su alcune piattaforme i tuoi riferimenti saranno 64 bit, ma questo è (universalmente?) perché la loro dimensione di parola è 64 bit. Dopo tutto, se la dimensione della parola non corrisponde alla dimensione dell'indirizzo, il processore potrebbe subire internamente lo stesso tipo di problemi di atomicità. Quindi essenzialmente le implementazioni VM possono fare affidamento su scritture di parole atomiche. Mi aspetto che l'intervallo di memoria indirizzabile sia sempre allineato con la dimensione della parola del processore e, in caso contrario, mi aspetto che l'implementazione VM imponga l'intervallo di memoria indirizzabile alla dimensione della parola del processore, anche se ciò significa che non può utilizzare tutto le risorse della macchina.

    
risposta data 02.02.2015 - 15:31
fonte

Leggi altre domande sui tag