Sobes.tech
Junior — Middle

Mis on ressursi vastastikune lukustamine ja millistes olukordades see süsteemides tekib?

sobes.tech AI

Vastus AI-lt

Deadlock (surnud ummik) on olukord mitme ülesandega süsteemides, kus kaks või enam protsessi (või niiti) blokeerivad üksteist igaveseks, oodates, kuni vabastavad ressursid, mida teine kasutab.

See tekib, kui täidetakse samaaegselt kõik neli tingimust:

  1. Vähemalt üksikute ressursside kasutamine — ressurss võib olla kasutuses ainult ühe protsessi poolt korraga.
  2. Hoidmine ja ootamine — protsess hoiab ühte ressurssi ja ootab teist.
  3. Võimatu sundvabastamine — ressurssi ei saa protsessist võtta, kuni see ise seda vabastab.
  4. Tsükliline ootamine — on protsesside tsükkel, kus igaüks ootab ressurssi, mida kasutab järgmine protsess.

Näide: protsess A on võtnud ressursi 1 ja ootab ressursi 2, samal ajal kui protsess B on võtnud ressursi 2 ja ootab ressursi 1 — mõlemad on igaveseks blokeeritud.

iOS ja teistes süsteemides tekivad deadlockid sageli vale sünkroniseerimise kasutamise tõttu, näiteks, kui võetakse mitu lukku erinevas järjekorras.

Deadlockide ennetamiseks kasutatakse:

  • ressursside omandamise järjekorda;
  • ootamise ajapiiranguid;
  • ressursside hoidmise vältimist, kui oodatakse teisi;
  • spetsialiseeritud sünkroniseerimismehhanisme.