Junior — Middle
Kas ir resursu savstarpēja bloķēšana un kādos gadījumos tā rodas sistēmās?
sobes.tech AI
Atbilde no AI
Deadlock (nāves aizvara) ir situācija daudzuzdevumu sistēmās, kad divi vai vairāki procesi (vai pavedieni) uz visiem laikiem bloķē viens otru, gaidot, kad atbrīvos resursus, kurus viens otrs izmanto.
Tas rodas, ja vienlaikus ir izpildīti visi četri nosacījumi:
- Savstarpēja izslēgšana — resursu var ieņemt tikai viens process vienlaikus.
- Turēšana un gaidīšana — process tur kādu resursu un gaida citu.
- Neiespējamība piespiedu atbrīvot — resursu nevar atņemt procesam, kamēr tas pats to neatslābst.
- Ciklisks gaidīšanas — pastāv procesu cikls, katrs gaida resursu, ko tur nākamais cikla process.
Piemērs: process A ir ieguvis resursu 1 un gaida resursu 2, bet process B ir ieguvis resursu 2 un gaida resursu 1 — abi ir uz visiem laikiem bloķēti.
iOS un citās sistēmās deadlocki bieži rodas nepareizas sinhronizācijas izmantošanas dēļ, piemēram, dažādu bloķējumu iegūšanas secībā.
Lai novērstu deadlockus, izmanto:
- resursu iegūšanas secību;
- gaidīšanas laika ierobežojumus;
- izvairīšanos no resursu turēšanas, gaidot citus;
- specializētu sinhronizācijas mehānismu izmantošanu.