სხვაობა სემაფორსა და მონიტორს შორის

სხვაობა სემაფორსა და მონიტორს შორის
სხვაობა სემაფორსა და მონიტორს შორის

ვიდეო: სხვაობა სემაფორსა და მონიტორს შორის

ვიდეო: სხვაობა სემაფორსა და მონიტორს შორის
ვიდეო: Skhumba Mocking Inkabi Zezwe & Umbayimbayi Song 2024, ივლისი
Anonim

სემფორი მონიტორის წინააღმდეგ

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

რა არის სემაფორი?

Semaphore არის მონაცემთა სტრუქტურა, რომელიც გამოიყენება კრიტიკული სექციების ურთიერთგამორიცხვის უზრუნველსაყოფად.სემაფორები ძირითადად მხარს უჭერენ ორ ოპერაციას, რომელსაც ეწოდება ლოდინი (ისტორიულად ცნობილია როგორც P) და სიგნალი (ისტორიულად ცნობილია როგორც V). ლოდინის ოპერაცია ბლოკავს პროცესს, სანამ სემაფორი არ გაიხსნება და სიგნალის ოპერაცია საშუალებას მისცემს სხვა პროცესს (ძაფს) შევიდეს. თითოეული სემაფორი ასოცირდება ლოდინის პროცესების რიგთან. როდესაც ლოდინის ოპერაცია გამოიძახება ძაფით, თუ სემაფორი ღიაა, ძაფი შეიძლება გაგრძელდეს. თუ სემაფორი დახურულია, როდესაც ლოდინის ოპერაცია გამოიძახება ძაფით, ძაფი იბლოკება და მას უნდა დაელოდოს რიგში. სიგნალის ოპერაცია ხსნის სემაფორს და თუ რიგში უკვე ელოდება ძაფი, ეს პროცესი ნებადართულია გაგრძელდეს და თუ რიგში არ არის ძაფები, მაშინ სიგნალი იმახსოვრებს შემდეგ ძაფებს. არსებობს ორი ტიპის სემაფორები, რომლებსაც უწოდებენ მუტექს სემაფორებს და მთვლელ სემაფორებს. Mutex-ის სემაფორები იძლევა ერთჯერადი წვდომის საშუალებას რესურსზე და დათვლის სემაფორები საშუალებას აძლევს რამდენიმე ძაფს წვდომას რესურსზე (რომელშიც ხელმისაწვდომია რამდენიმე ერთეული).

რა არის მონიტორი?

მონიტორი არის პროგრამირების ენის კონსტრუქცია, რომელიც გამოიყენება გაზიარებულ მონაცემებზე წვდომის გასაკონტროლებლად. მონიტორები ახდენენ მონაცემთა გაზიარებულ სტრუქტურებს, პროცედურებს (რომლებიც მუშაობენ მონაცემთა საერთო სტრუქტურებზე) და სინქრონიზაციას ერთდროულად პროცედურების გამოძახებებს შორის. მონიტორი დარწმუნდება, რომ მის მონაცემებს არ ემუქრება არასტრუქტურირებული წვდომა და გარანტიას იძლევა, რომ საფეხურები (რომლებიც წვდებიან მონიტორის მონაცემებს მისი პროცედურების საშუალებით) ურთიერთქმედებენ ლეგიტიმური გზით. მონიტორი უზრუნველყოფს ურთიერთგამორიცხვას მხოლოდ ერთ ძაფს აძლევს საშუალებას განახორციელოს ნებისმიერი მონიტორის პროცედურა მოცემულ დროს. თუ სხვა თემა ცდილობს მონიტორში მეთოდის გამოძახებას, მაშინ როცა თემა უკვე ახორციელებს პროცედურას მონიტორზე, მაშინ მეორე პროცედურა იბლოკება და ის უნდა დაელოდეს რიგში. არსებობს ორი ტიპის მონიტორი სახელად Hoare monitors და Mesa monitors. ისინი ძირითადად განსხვავდებიან განრიგის სემანტიკაში.

რა განსხვავებაა სემაფორსა და მონიტორს შორის?

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

გირჩევთ: