Sobes.tech
Junior — Middle

რისურსების ურთიერთშეზღუდვა რა არის და რა სიტუაციებში ის სისტემებში წარმოიქმნება?

sobes.tech AI

პასუხი AI-სგან

Deadlock (მკვდარი ბლოკირება) — ეს არის მდგომარეობა მრავალშრიან სისტემებში, როდესაც ორი ან მეტი პროცესი (ან ნაკადი) სამუდამოდ ბლოკავს ერთმანეთს, მოლოდინით, რომ გაათავისუფლოს რესურსები, რომლებიც ერთმანეთის მიერ არის დაკავებული.

ეს ვითარება წარმოიქმნება, როდესაც ერთდროულად შესრულებულია ყველა ოთხი პირობა:

  1. შეთავაზების ურთიერთობა — რესურსი შეიძლება იყოს დაკავებული მხოლოდ ერთ პროცესზე ერთდროულად.
  2. შენახვა და მოლოდინი — პროცესი ინახავს ერთ რესურსს და მოლოდინს მეორე რესურსზე.
  3. მძიმე განთავისუფლების შეუძლებლობა — რესურსი ვერ მოიხსნება პროცესიდან მანამ, სანამ თავად არ გაათავისუფლებს.
  4. ციკლური მოლოდინი — არსებობს პროცესების ციკლი, თითოეული მათგანი მოლოდინს უცდის რესურსზე, რომელიც დაკავებულია შემდეგი პროცესის მიერ.

მაგალითად: A პროცესი დაიკავა რესურსი 1 და მოლოდინს რესურსი 2-ზე, ხოლო B პროცესი დაიკავა რესურსი 2 და მოლოდინს რესურსი 1-ზე — ორივე სამუდამოდ ბლოკირებულია.

iOS და სხვა სისტემებში, deadlock-ები ხშირად წარმოიქმნება სინქრონიზაციის არასწორი გამოყენების გამო, მაგალითად, სხვადასხვა წესით რამდენიმე ბლოკირების მიღებისას.

Deadlock-ების თავიდან ასაცილებლად გამოიყენება:

  • რესურსების მიღების წესის დალაგება;
  • მოლოდინის დროის შეზღუდვები;
  • რესურსების შენახვის თავიდან აცილება, როდესაც მოლოდინია სხვა რესურსებზე;
  • სპეციალიზებული სინქრონიზაციის მექანიზმების გამოყენება.