Разлика между семафор и монитор

Разлика между семафор и монитор
Разлика между семафор и монитор

Видео: Разлика между семафор и монитор

Видео: Разлика между семафор и монитор
Видео: Операционные системы, урок 5: Взаимное исключение. Семафоры. Проблема чтения/записи. 2024, Ноември
Anonim

Семафор срещу монитор

Semaphore е структура от данни, която се използва, за да се гарантира, че множество процеси нямат достъп до общ ресурс или критична секция едновременно, в паралелни програмни среди. Семафорите се използват за избягване на мъртви брави и състезателни условия. Monitor е конструкция на езика за програмиране, която също се използва за избягване на множество процеси едновременно достъп до общ ресурс, поради което гарантира взаимно изключване. Наблюдателите използват условни променливи, за да постигнат тази задача.

Какво е семафор?

Semaphore е структура от данни, която се използва за взаимно изключване на критични секции. Семафорите поддържат главно две операции, наречени изчакване (в историята известни като P) и сигнал (исторически известни като V). Операцията за изчакване блокира процес, докато семафорът не бъде отворен и операцията на сигнала позволи на друг процес (нишка) да влезе. Всеки семафор е свързан с опашка от чакащи процеси. Когато операцията за изчакване се извика от нишка, ако семафорът е отворен, нишката може да продължи. Ако семафорът е затворен, когато операцията за изчакване е извикана от нишка, нишката е блокирана и трябва да изчака на опашката. Операцията на сигнала отваря семафор и ако в опашката вече има нишка, този процес се разрешава да продължи и ако в опашката няма нишки, чакащи, сигналът се запомня за следващите нишки. Има два вида семафори, наречени mutex семафори и броещи семафори. Mutex семафорите позволяват единичен достъп до ресурс, а преброяващите семафори позволяват на множество нишки достъп до ресурс (който има няколко налични единици).

Какво е монитор?

Мониторът е конструкция на езика за програмиране, която се използва за контрол на достъпа до споделени данни. Мониторите капсулират споделени структури от данни, процедури (които работят върху споделени структури от данни) и синхронизация между едновременни извиквания на процедури. Мониторът гарантира, че данните му не са изправени пред неструктуриран достъп и гарантира, че протекторите (които имат достъп до данните на монитора чрез своите процедури) взаимодействат по законен начин. Мониторът гарантира взаимно изключване, като позволява само една нишка да изпълнява всяка процедура на монитор в даден момент. Ако друга нишка се опита да извика метод в монитора, докато една нишка вече изпълнява процедура в монитора, тогава втората процедура е блокирана и трябва да изчака на опашката. Има два вида монитори, наречени монитори Hoare и монитори Mesa. Те се различават главно по семантиката си за планиране.

Каква е разликата между Semaphore и Monitor?

Въпреки че и семафорите, и мониторите се използват за постигане на взаимно изключване в паралелни програмни среди, те се различават в техниките, използвани за постигане на тази задача. В мониторите кодът, който се използва за постигане на взаимно изключване, е на едно място и е по-структуриран, докато кодът за семафори се разпределя като извикване на функцията за изчакване и сигнал. Също така е много лесно да се правят грешки при внедряване на семафори, докато има много малък шанс за грешки при внедряване на монитори. Освен това мониторите използват променливи на състоянието, докато семафорите не.

Препоръчано: