Семафор против мониторов-какая разница?



каковы основные различия между монитор и семафор?

851   7  

7 ответов:

A монитор - это объект, предназначенный для доступа из нескольких потоков. Функции-члены или методы объекта монитора будут применять взаимное исключение, поэтому только один поток может выполнять любое действие над объектом в данный момент времени. Если один поток в настоящее время выполняет функцию-член объекта, то любой другой поток, который пытается вызвать функцию-член этого объекта, должен будет дождаться завершения первого.

A семафор is a объект нижнего уровня. Вы вполне можете использовать семафор для реализации монитора. Семафор по существу-это просто счетчик. Когда счетчик положителен, если поток пытается получить семафор, то это разрешено, и счетчик уменьшается. Когда поток выполняется, он освобождает семафор и увеличивает счетчик.

Если счетчик уже равен нулю, когда поток пытается получить семафор, то он должен ждать, пока другой поток освобождает семафор. Если несколько потоки ждут, когда поток освобождает семафор, тогда один из них получает его. Поток, который освобождает семафор, не обязательно должен быть тем же потоком, который его приобрел.

монитор похож на общественный туалет. Только один человек может войти одновременно. Они запирают дверь, чтобы никто не вошел, делают свое дело, а затем открывают ее, когда они уходят.

семафор-это как место проката велосипедов. У них есть определенное количество велосипедов. Если вы попытаетесь взять напрокат велосипед и у них один бесплатно тогда вы можете взять его, иначе вы должны ждать. Когда кто-то возвращает свой велосипед, то кто-то другой может взять его. Если у вас есть велосипед, то вы можете дать его кому-то еще, чтобы вернуться - - - место проката велосипедов не волнует, кто возвращает его, пока они получают свой велосипед обратно.

следующее объяснение фактически объясняет, как wait() и signal () монитора отличаются от P и V семафора.

The ждать() и сигнал() операции с условными переменными в A монитор подобное P и V операции по подсчету семафоры.

оператор wait может заблокировать выполнение процесса, в то время как утверждение сигнал может вызвать другой процесс, чтобы быть разблокированы. Однако, есть некоторые различия между ними. Когда процесс выполняет операцию P, он не обязательно блокирует этот процесс, потому что Счетный семафор может быть больше нуля. Напротив, когда выполняется оператор wait, он всегда блокирует процесс. Когда задача выполняет операцию V на семафоре, она либо разблокирует задачу, ожидающую этого семафора, либо увеличивает счетчик семафора, если нет задачи для разблокировки. На с другой стороны, если процесс выполняет оператор сигнала, когда нет другого процесса для разблокирования, нет никакого влияния на переменную условия. Другое различие между семафорами и мониторами заключается в том, что пользователи, пробужденные операцией V, могут возобновить выполнение без задержки. Напротив, пользователи, пробужденные сигнальной операцией, перезапускаются только тогда, когда монитор разблокирован. Кроме того, решение монитора более структурировано, чем решение с семафорами, поскольку данные и процедуры инкапсулированы в виде одиночный модуль и что взаимное исключение обеспечено автоматически вставкой.

ссылки: здесь для дальнейшего чтения. Надеюсь, это поможет.

семафор позволяет нескольким потокам (до заданного числа) получить доступ к общему объекту. Мониторы обеспечивают взаимоисключающий доступ к общему объекту.

монитор

семафор

Одна Строка Ответа:

монитор: элементы управления только один поток за раз может выполняться на мониторе. (нужно получить блокировку для выполнения одного потока)

семафор: блокировка, которая защищает общий ресурс. (необходимо приобрести блокировку для доступа к ресурсу)

монитор представляет собой набор нескольких процедур, которые защищены взаимной блокировкой исключения в то время как семафор – это более простая конструкция, чем монитор, потому что это просто блокировка, которая защищает общий ресурс, а не набор процедур, таких как монитор. Приложение должно получить блокировку перед использованием этого общего ресурса, защищенного семафором.

оба монитора и семафоры используются для одной и той же цели-синхронизации потоков. Но, мониторы проще в использовании, чем семафоры, потому что они обрабатывают все детали захвата и освобождения замка.

еще одно отличие при использовании семафоров заключается в том, что каждая процедура доступа к общему ресурсу должна явно получить блокировку перед использованием ресурса. Это можно легко забыть при кодировании подпрограмм, имеющих дело с многопоточностью . Мониторы, в отличие от семафоров, автоматически приобретают необходимые блокировки.

когда семафор используется для защиты критической области, нет прямой связи между семафором и защищаемыми данными. Это одна из причин, почему семафоры могут быть рассеяны вокруг кода, и почему легко забыть позвонить ждать или уведомления, и в этом случае результатом будет, соответственно, нарушить взаимное исключение или заблокировать ресурс навсегда.

напротив, Нихтер из этих плохих вещей может случиться с монитором. Монитор устает непосредственно к данным (он инкапсулирует данные) и, поскольку операции монитора являются атомарными действиями, невозможно написать код, который может получить доступ к данным без вызова протокола ввода. Протокол выхода вызывается автоматически по завершении операции монитора.

монитор имеет встроенный механизм для синхронизации условий в виде переменной условия перед продолжением. Если условие не выполняется, то процесс должен ждать, пока он не будет уведомлен об изменении состояния. Когда процесс ожидает синхронизации условий, реализация монитора решает проблему взаимного исключения и позволяет другому процессу получить доступ к монитору.

взятый из Открытого университета М362 Блок 3 "взаимодействующий процесс" материал курса.

семафор :

использование счетчика или флага для управления доступом к некоторым общим ресурсам в параллельной системе подразумевает использование семафор.

пример:

  1. счетчик, позволяющий только 50 пассажирам приобретать 50 мест (общий ресурс) любого театра/автобуса/поезда/веселой поездки/класса. И пускать нового пассажира только в том случае, если кто-то освободит место.
  2. двоичный флаг, указывающий на свободный / занятый статус любая ванная комната.
  3. светофоры являются хорошим примером флаги. Они управляют потоком, регулируя проезд транспортных средств по дорогам (общий ресурс)

флаги показывают только текущее состояние ресурса, нет подсчета или любой другой информации о ожидающих или запущенных объектах на ресурсе.

монитор :

A монитор синхронизирует доступ к объекту, связываясь с потоками, заинтересованными в объекте, запрашивая они получают доступ или ждут, пока какое-то условие станет истинным.

пример:

  1. отец может выступать в качестве монитора для своей дочери, позволяя ей встречаться только с одним парнем за раз.
  2. школьный учитель, используя дубинку, чтобы позволить только одному ребенку говорить в классе.
  3. наконец, технический, транзакции (через потоки) на объекте счета синхронизируются для поддержания целостности.

Comments

    Ничего не найдено.