Consistència de senyes
En Informàtica, en un sistema distribuït, tals com una memòria compartida distribuïda o almagasens de senyes distribuït, tals com una base de senyes, sistema d'archius, caché web o sistemes de replicació optimista, hi ha una série de possibles models de consistència de senyes. Es diu que un sistema soporta un determinat model, si les operacions en memòria seguixen normes específiques. La consistència de les senyes és definida entre el programador i el sistema, que garantisa que si el programador seguix les regles, la memòria serà consistent i el resultat de les operacions de memòria serà predible.
Els llenguages d'alt nivell, tals com C, C++ i Java, respecten parcialment este model traduint operacions de memòria en operacions de baix nivell per a preservar la memòria semàntica. Per a mantindre el model, els compiladors poden reordenar algunes instruccions de memòria, i les cridades a les biblioteques com "pthread_mutex_lock()", encapsular la sincronisació necessària.
A continuació es mostren els distints tipos, ordenats segons la força de la consistència que oferixen:
Models de consistència forta
[editar | editar còdic]Consistència linealisable
[editar | editar còdic]Els sistemes en consistència linealisable presenten les característiques de garantia d'eixecució d'operacions a temps real, respectant la seua orde, sent que este orde també es deu preservar de manera global en les operacions que fan overlapping. Les ventages que posseïx sobre la secuencialidad és que manté l'ordenació a temps real de les operacions, lo que s'assembla més al concepte d'atomicidad. Ademés, esta consistència es manté si es combinen implementacions linealisables separades de dos objectes.
Les operacions de llectura sempre tornaran lo últim escrit en memòria, independentment de quan s'haja solicitat. Les següents peticions de llectura tornaran el mateix resultat sempre que no s'haja tornat a escriure en memòria, independentment del client.
La consistència linealisable és una forma de consistència seqüencial en restricció de temps real.[1]
Consistència seqüencial
[editar | editar còdic]Es produïx consistència seqüencial quan totes les operacions de senyes de diferents sistemes aparenten ser atòmics, com si ocorregueren totes en un sistema uniprocesador eixecutades de manera seqüència, en un orde que estiga en concordancia en aquell vist en els processos individuals.[2]
En varis sistemes, és dir diferents processadors, açò pot deixar de complir-se ya que l'accés pot ocórrer en diferent orde.
La consistència seqüencial tracta de corregir açò per a que les operacions aparenten atomicidad.
Per a obtindre la consistència seqüencial, es requerix que les operacions de memòria estiguen completades abans d'accedir a la següent instrucció segons l'orde del programa. És també necessària la serialización de les escritures a memòria: les escritures deuran estar finalisades, i el seu valor no podrà ser tornat per una llectura fins que l'escritura siga visible per a tots els sistemes.
La consistència seqüencial d'una implementació de dos objectes en consistència seqüencial no és garantisada,no obstant es pot obtindre una concurrència elevada i major rendiment que en la consistència linealisable
La consistència seqüencial pot produir una pèrdua d'optimisació al no forçar l'orde estricte.
En tot cas, es deu respectar sempre l'orde aparent de programa per a l'usuari en contra del temps real d'eixecució.
Consistència de causalitat
[editar | editar còdic]La consistència de causalitat és un model de consistència més forta que atres models com la consistència eventual, pero més dèbil que els models seqüencials o els models linealisables. És el model de consistència més forta possible en sistemes distribuïts tolerants a fallos.[3] Els models més forts duen en si unes majors garanties de seguritat en l'orde dels processos, a canvi d'una notable pèrdua de rendiment, demostrat pel teorema CAP, el qual prova que és impossible garantisar simultàneament de consistència i disponibilitat o latencia en un sistema distribuït.
La consistència de causal permet una major eficiència en ser possible més eixecucions, mantenint un model viable per als programadors.[4]
En la consistència causal no es podrà llegir una senya fins que totes les operacions que hagen dut a la seua escritura o actualisació siguen visibles. Un sistema serà consistent de manera causal, puix, si seguixen el principi de causalitat, tal que si es complix l'operació d'escritura a, i llectura b, a→b, b obtindrà la senya escrita per a.
Models de consistència dèbil
[editar | editar còdic]Consistència dèbil
[editar | editar còdic]El model de consistència dèbil presenta un major potencial de rendiment. Els sistemes en este model depenen de la sincronisació en el hardware per a garantisar l'orde de les operacions iniciades pels diferents processadors.
Un sistema en consistència dèbil complix en una série de propietats:
- Definició formal de la relació entre elements software i hardware i del compliment dels requeriments.
- Simpleza del modele hardware per al programador.
- El disseny hardware facilita implementacions paraleles d'alt rendiment.
Per lo tant, un sistema que complixca les propietats anteriors serà consistentemente dèbil. Dit d'un atre modo, existirà consistència dèbil si s'aparenta ser secuencialment consistent per al programador, obedint tot el software un model de sincronisació.[5]
Un sistema d'este tipo presenta les complicacions de no ser seqüencial, lo que dificulta l'enteniment per al programador si es torna complex.També es poden presentar restriccions al software per a conseguir la sincronisació, dificultant a voltes detectar que tasques són les productores d'esta sincronisació.
Consistència lliberada
[editar | editar còdic]La consistència lliberada és un model de consistència dèbil creat en l'objectiu de reduir la latencia en sistemes distribuïts. El seu funcionament es basa en retardar els accessos a memòria compartida fins que atres accessos especials definits per al model ocórreguen.
Les característiques d'un sistema en consistència lliberada són:
- Ans que un accés ordinari a memòria es permeta, tots els accessos a zones d'exclusió mútua fets anteriorment es deuen finalisar.
- Abans de lliberar la zona, es deuen finalisar totes les llectures i escritures prèvies.
- Els accessos especials són secuencialment consistents respecte l'u de l'atre.[6]
Les llectures es realisen respecte a un atre processador o sistema quan una escritura per eixe sistema no pot tornar a afectar el valor tornat per la llectura. Les escritures respecte a un atre processador es realisen quan este ha tornat el nou valor escrit. Els accessos es faran respecte a tots els processadors.[7]
La consistència lliberada presenta una modificació, coneguda com a consistència lliberada vaga, que assumix que el fil en possessió de la zona d'exclusió mútua no requerix dels valors escrits per atres fils.
Consistència eventual
[editar | editar còdic]La consistència eventual és un model de consistència dèbil tal que complix lo següent: el sistema garantisa que tots els accessos a zones d'exclusió mútua a on s'obtinga un valor, cada accés obtindrà el mateix valor tornat mentres no s'haja fet cap actualisació a est.[8] En atres paraules, una certa operació deurà ser finalment visible per a tots els sistemes. La consistència eventual és suficient per a crear programes clients.[9]
Un sistema en únicament este model pot presentar una série de inconsistencias:
- Llectura d'escritures pròpies: este tipo de consistència no garantisa que, en una mateixa sessió, un usuari no puga llegir la mateixa senya que ha escrit
- Llectura monòtona: solicitar vàries llectures en una mateixa sessió no té perqué aumentar el número de llectures totals.
Es poden evitar estes anomalies afegint garanties de seguritat d'orde d'operacions.[10]
És utilisat freqüentment en els DNS.
Consistència delta
[editar | editar còdic]També coneguda com a consistència-δ, és un model de consistència dèbil. Es caracterisa per posseir un tipo de senya conegut com CDRT, de les sigles en anglés Conflict-Free Replicated Data Type, o tipo de senyes replicat lliure de conflicte.
La caracterítisca principal dels sistemes en este model és que les actualisacions a les senyes es propagaran pels sistemes i seran visibles a tots ells despuix d'un interval de temps δ: les rèpliques d'un mateix tipo de senya poden divergir, pero es asegurá que despuix d'un cert periodo de temps totes estes rèpliques convergeran al mateix valor.[11]
Consistència PRAM
[editar | editar còdic]La consistència PRAM (de Pipelined Random Access Memory), també es coneix com a consistència FIFO és un model de consistència.
És un dels primers models de consistència sorgits, pensat per a poder permetre l'escalabilidad en els sistemes distribuïts sense pèrdua de rendiment.[12]
Es basa en una relaixació de la coherència de la memòria existent per a permetre una major concurrència i rendiment: açò ho conseguix fent que cada sistema o processador tinga visió de la memòria compartida entre el conjunt de sistemes en la seua memòria local. Les llectures es realisen de forma normal, llegint la memòria local. Les escritures es realisen tant de forma local com iniciant una acció global: s'escriu en la seua pròpia memòria, i s'envia un mensage als demés sistemes. Una volta apleguen estos mensages als atres sistemes, estos realisen la mateixa operació i escriuen en la seua pròpia memòria local.[13]
Este enviament de mensages no és confirmat pels demés processadors. Ademés, este tipo de consistència no té perqué respectar la secuencialidad.
Consistència vector-camp
[editar | editar còdic]La consistència vector-camp és un model recent de consistència.[14] A diferència del modele delta, este sí permet la divergència dels objectes o de les senyes, concretament permet divergència conectada.
Este tipo especial de divergència es caracterisa per ser variable i dinàmica: d'esta manera es pot modificar la consistència en els sistemes, aumentant-la o disminuint-la segons l'estat d'eixecució del programa.
Un dels seus principals usos és en els videojocs, específicament els videojocs multijugador. La mida de consistència serà pròpia per a cada element, tal que posseïx una funció de consistència basada en la distància a l'element, en els elements al seu entorn sent forçats a tindre la mateixa consistència.
La consistència es descriu com un vector 3-dimensional representant:
- el temps d'actualisació de consistència.
- Número màxim de rèpliques pèrdues o modificades.
- Valor de diferència relativa màxima permesa.
En açò es facilita el desenroll de videojocs multijugador distribuïts permetent una notable millora en el rendiment i reduint el cost en les comunicacions inalàmbriques.
Referències
[editar | editar còdic]- ↑ ACM Transactions on Programming Languages and Systems.12(3)
- 463–492.ISSN 0164-0925.doi:10.1145/78969.78972.Consultat el 2023-05-10.
- ↑ IEEE Transactions on Computers.C-28(9)
- 690–691.ISSN 1557-9956.doi:10.1109/TC.1979.1675439.Consultat el 2023-05-10.
- ↑ Camilleri, Carl; Vella, Joseph G.; Nezval, {{{nom3}}} (2023). D-Thespis: A Distributed Actor-Based Causally Consistent DBMS (en en), Springer, pp. 126–165. doi:10.1007/978-3-662-66863-4_6?fbclid=iwar2z279grm0autvqgm29arfdt4_nbadeuzcohp_ssv7b4uw29m7djdkkah8. ISBN 978-3-662-66863-4.
- ↑ Consultat el 2023-05-04.
- ↑ Sarita V. Adve, Mark D. Hill. «Weak Ordering -A new definition» (en en). CiteSeerX. Consultat el 2023-05-11.
- ↑ Renesse, Robbert; Tanenbaum, Andrew S.; Mullender, {{{nom3}}} (1990). The evolution of a distributed operating system, Springer Berlin Heidelberg, pp. 1–12. ISBN 978-3-540-52609-4.
- ↑ Proceedings of the 19th annual international symposium on Computer architecture.Association for Computing Machinery.
- 13–21.doi:10.1145/139669.139676.Consultat el 2023-05-08.
- ↑ Queue.6(6)
- 14–19.ISSN 1542-7730.doi:10.1145/1466443.1466448.Consultat el 2023-05-05.
- ↑ Foundations and Trends in Programming Languages.1(1-2)
- 1–150.ISSN 2325-1107.doi:10.1561/2500000011.Consultat el 2023-05-05.
- ↑ Queue.11(3)
- 20–32.ISSN 1542-7730.doi:10.1145/2460276.2462076.Consultat el 2023-05-06.
- ↑ Journal of Parallel and Distributed Computing.111
- 162–173.ISSN 0743-7315.doi:10.1016/j.jpdc.2017.08.003.Consultat el 2023-05-07.
- ↑ «PRAM: A Scalable Shared Memory | Computer Science Department at Princeton University». www.cs.princeton.edu. Consultat el 2023-05-11.
- ↑ 2013 25th International Symposium on Computer Architecture and High Performance Computing.
- 144–151.doi:10.1109/SBAC-PAD.2013.8.Consultat el 2023-05-11.
- ↑ Sants, Nuno; Veiga, Luís; Ferreira, {{{nom3}}} (2007). Vector-Field Consistency for Ad-Hoc Gaming, Springer Berlin Heidelberg, pp. 80–100. ISBN 978-3-540-76777-0.
- Este artícul conté una traducció derivada de «Consistencia de datos» de Wikipedia en castellà publicada baix la Llicència de documentació lliure de GNU i la Llicència Creative Commons Reconeiximent-CompartirIgual 4.0 Internacional.