Che cos'è il blocco leggero nei sistemi di memoria condivisa distribuiti?

0

Ho iniziato a leggere il libro dei sistemi distribuiti di Tanenbaum qualche tempo fa. Ho letto su due fasi di blocco e timestamp riordino nel capitolo delle transazioni. Pur avendo un aspetto più approfondito da Google, ho sentito parlare di transazioni leggere / memoria transazionale leggera. Ma non sono riuscito a trovare alcuna spiegazione e implementazione valida. Allora, qual è la memoria leggera? Quali sono i vantaggi delle serrature leggere? E come posso implementarli?

    
posta Kutluhan Metin 24.10.2013 - 09:25
fonte

1 risposta

1

Il termine "leggero", quando viene applicato al blocco e alle transazioni, viene generalmente utilizzato per indicare uno schema di blocco o transazione con un basso sovraccarico. Un sovraccarico basso significa che il computer sta masticando meno Tempo di CPU per le attività di manutenzione e passare più tempo a svolgere il proprio lavoro.

Il termine "leggero", applicato al blocco della memoria e alle transazioni, si riferisce probabilmente a Memoria transazionale del software (STM) . Alcune lingue, come Clojure, hanno incorporato STM.

Unlike the locking techniques used in most modern multithreaded applications, STM is very optimistic: a thread completes modifications to shared memory without regard for what other threads might be doing, recording every read and write that it is performing in a log. Instead of placing the onus on the writer to make sure it does not adversely affect other operations in progress, it is placed on the reader, who after completing an entire transaction verifies that other threads have not concurrently made changes to memory that it accessed in the past. This final operation, in which the changes of a transaction are validated and, if validation is successful, made permanent, is called a commit. A transaction may also abort at any time, causing all of its prior changes to be rolled back or undone.

The benefit of this optimistic approach is increased concurrency: no thread needs to wait for access to a resource, and different threads can safely and simultaneously modify disjoint parts of a data structure that would normally be protected under the same lock.

    
risposta data 24.10.2013 - 19:39
fonte

Leggi altre domande sui tag