Linearizálhatóság

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2020. március 7-én felülvizsgált verziótól ; az ellenőrzések 2 szerkesztést igényelnek .

A linearizálhatóság ( angolul  linearizability ) a többszálú programozásban a program olyan tulajdonsága, amelyben az eljárások (műveletek) párhuzamos végrehajtásának eredménye egyenértékű valamilyen szekvenciális végrehajtással. Minden más szál esetében a linearizálható művelet végrehajtása azonnali: a művelet vagy nem indult el, vagy nem fejeződött be.

Mint látható [1] , a linearizálhatóság lokális és nem blokkoló tulajdonság. A lokalitás azt jelenti, hogy ha a műveletek linearizálhatósága több programra külön-külön (vagy egy program különböző objektumokkal dolgozó műveleteire) igazolódik, akkor a programok együtt (műveletek együtt) is linearizálhatók lesznek. Linearizálható programban az elindított műveletek befejezéséhez nem szükséges más műveletek elindítása. Ez a nem blokkoló tulajdonság. Ezenkívül a linearizálhatóság megkönnyíti a linearizálható műveleteket használó programok tulajdonságainak bizonyítását, mivel a linearizálható program viselkedése szekvenciális végrehajtásokra redukálódik.

A linearizálhatóság tulajdonsága sok tekintetben hasonló az olyan tulajdonságokhoz , mint a szerializálhatóság , az atomitás és a szekvenciális konzisztencia .  Ezzel szemben a linearizálhatóság egy specifikáció jelenlétét jelenti, míg ezek a tulajdonságok csak magára a programra vonatkoznak. Egyes forrásokban az atomitás kifejezést a linearizálható szinonimájaként használják, míg másokban az önlinearizálhatót jelenti .  

Gyakran a szálbiztonság informális fogalma ( eng.  thread-safety ) pontosan linearizálhatóságként értendő.

A linearizálhatóság fogalma először Herlihy és Wing [2] 1987 -es cikkében jelent meg konzisztencia modellként osztott memóriájú objektumszervezéssel rendelkező rendszerek számára . Az összes többi rendszertől eltérően itt a programok közvetlenül nem használhatnak megosztott változókat, csak speciális függvény-módszereken (műveleteken) keresztül. Ezeknél a rendszereknél a linearizálhatóság egybeesik a szigorú konzisztenciával .

A linearizálhatósági teszt probléma a funkcionális tesztelési probléma speciális esete , amelyben azt vizsgálják, hogy a program megfelel-e a specifikáció formájában megadott funkcionális követelményeknek. De az általános esettől eltérően itt a specifikáció csak a szekvenciális végrehajtásokhoz szükséges.

Lásd még

Jegyzetek

  1. Linearizálhatóság: egyidejű objektumok helyességi feltétele
  2. Axiómák egyidejű objektumokhoz

Linkek