Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Niekoľko aspektov prispieva k definícii správnosti v súbežnom programe:
* bezpečnosť: Program nikdy nevstúpi do neplatného štátu. Zahŕňa to vyhýbanie sa problémom ako:
* Dátové preteky: Viaceré vlákna prístup k a modifikácii rovnakého umiestnenia zdieľanej pamäte bez správnej synchronizácie, čo vedie k nepredvídateľným výsledkom.
* Deadlocks: Dve alebo viac vlákien sú zablokované donekonečna a čakajú, až sa navzájom uvoľnia zdroje.
* livelocks: Vlákna sa neustále menia stav v reakcii na seba, ale žiadna nedosiahla pokrok.
* hladovanie: Jedným alebo viacerými vláknami je neustále zamietnutý prístup k zdieľanému zdroju.
* Rasové podmienky: Výsledok závisí od nepredvídateľného poradia, v ktorom sa vlákna vykonávajú.
* Livivity: Program nakoniec dosiahne pokrok a končí, ak má. To zahŕňa zabezpečenie:
* Vlákna nakoniec získajú potrebné zdroje.
* Program nakoniec dosiahne koncový stav.
* Funkcia: Program vytvára správny výstup a dosahuje jeho zamýšľaný účel. Je to podobné sekvenčným programom, ale komplikované súčasnou povahou vykonávania. Konečný výsledok musí byť konzistentný vo všetkých možných scenároch vykonávania.
Preto preukázanie správnosti súbežného programu zvyčajne predstavuje preukázanie, že:
1. Všetky možné preklady popravy vlákien vedú k platnému konečnému stavu. Je to neuveriteľne náročné a často nepraktické robiť vyčerpávajúce.
2. Program je bez porušenia bezpečnosti (mŕtvych zámkov, dátových pretekov atď.). Toto sa často rieši prostredníctvom starostlivého návrhu a použitia synchronizačných mechanizmov (mutexes, semafory, monitory atď.).
3. To znamená preukázať, že program nakoniec splní svoje úlohy a nezasekne sa v nekonečnej slučke alebo uviaznutí.
Stručne povedané, správnosť v súbežnom programovaní znamená zaručiť predvídateľné a spoľahlivé správanie vo všetkých možných plánoch vykonávania. Vyžaduje si to starostlivú pozornosť na synchronizáciu, riadenie zdrojov a dôsledné testovacie a overovacie techniky. Formálne metódy sa môžu použiť na prísne overovanie, ale sú často výpočtovo drahé a uplatňujú sa iba na menšie programy. Preto sa zvyčajne vyžaduje kombinácia starostlivého návrhu, testovania a potenciálne formálneho overenia, aby sa zabezpečila správnosť súbežného programu.