Шта је последователна конзистентност?
sobes.tech АИ
Одговор од АИ
Sekvencijalna konzistentnost (Sequential Consistency) je model konzistentnosti u distribuiranim sistemima ili višestrukim nitima programa, koji garantuje da će rezultat izvršenja bilo kojeg paralelnog programa biti takav kao da su sve operacije svih procesora (niti) izvršene u određenom sekvencijalnom redosledu, i da operacije svakog pojedinačnog procesora (niti) u tom sekvencijalnom redosledu slede redosled u kojem su zadate u programu.
Drugim rečima:
- Očuvanje reda operacija unutar niti: Operacije koje inicira jedna nit su vidljive drugim nitima u istom redosledu u kojem su izvršene od strane te niti.
- Jedan jedinstveni globalni red: Postoji jedan, linearan, globalni, jedinstveni red izvršavanja svih operacija svih niti, koji sve niti poštuju.
Ovaj model je jedan od najjačih i najintuitivnijih, ali njegova implementacija može biti skupa u pogledu performansi zbog potrebe za sinhronizacijom i sprečavanjem preuređenja operacija od strane kompajlera i hardvera.
Primer:
// Nit 1
x = 1;
y = 2;
// Nit 2
// Operacije čitanja x i y
Sa sekvencijalnom konzistentnošću, ako Nit 1 prvo upiše 1 u x, a zatim 2 u y, Nit 2 nikada neće videti y kao 2 pre nego što vidi x kao 1. Moguće sekvencijalne izvedbe:
x = 1; y = 2; read(x); read(y);(read(x) = 1, read(y) = 2)x = 1; read(x); y = 2; read(y);(read(x) = 1, read(y) = 2)read(x); x = 1; read(y); y = 2;(read(x) može biti 0, read(y) može biti 0, zatim read(x) = 1, read(y) = 2)
Nije moguće da Nit 2 vidi y kao 2, ali x još uvek bude 0, ako Nit 1 prvo napiše x = 1, a zatim y = 2.