В чем разница во взаимном исключении между монитором и семафором

Я запутался в части синхронизации операционной системы. Я не понимаю проблему Взаимного исключения при использовании в Монитор и Семафор. Это отличие друг от друга?

Четко; Имеет ли взаимное исключение какую-либо разницу с использованием в мониторе и семафоре? Или применяются те же правила при использовании взаимного исключения в мониторе и семафоре?

Дополнительное примечание = Это предложение меня смутило. «Семафоры и мониторы предназначены для решения проблемы взаимного исключения на одном или нескольких процессорах, каждый из которых имеет доступ к общей памяти».

Также я прочитал эти статьи = Монитор — взаимное исключение

Мьютекс против семафора


person TeachMeJava    schedule 12.05.2014    source источник
comment
Терминология синхронизации потоков не является универсальной. Даже статья в Википедии, на которую вы ссылаетесь, определяет мониторы как минимум двумя разными способами. У вас есть конкретная реализация или операционная система, о которой вы спрашиваете, или это просто общий вопрос?   -  person b4hand    schedule 12.05.2014
comment
Семафор - это общий термин. Мьютекс — это особый тип семафора с несколькими отличительными характеристиками: 1. Он может быть освобожден только потоком, который его заблокировал. 2. Он способен обнаруживать взаимоблокировки, унаследованные от приоритета, и решать их с помощью инверсии приоритета. Эти взаимоблокировки могут возникать, когда поток с низким приоритетом и поток с высоким приоритетом совместно используют общий ресурс. В какой-то момент времени выполняется поток с низким приоритетом. Затем он вытесняется в пользу (несвязанного) потока со средним приоритетом, оставляя поток с высоким приоритетом заблокированным.   -  person barak manos    schedule 12.05.2014
comment
@b4hand Я спросил о конкретной реализации взаимного исключения и правилах реализации, если они существуют.   -  person TeachMeJava    schedule 12.05.2014


Ответы (2)


Взаимное исключение — это требование к поведению нескольких параллельных процессов, использующих общую память. Предложение, которое вас смутило, относится к этому: общая память = общая память.

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

Семафоры и мониторы — это устройства, с помощью которых можно обеспечить взаимное исключение, поэтому они отвечают на вопрос «как». Оба должны использоваться в соответствии со своими собственными правилами, но оба могут обеспечить взаимное исключение.

Надеюсь это поможет.

person xxa    schedule 13.05.2014
comment
спасибо, теперь я так ясно об этом вопросе. проголосовать и принять. - person TeachMeJava; 14.05.2014

Вот как вы должны думать о взаимном исключении.

Взаимное исключение — это арбитраж доступа к критическому разделу (общий код между разными потоками), так что только один поток может выполнять критический раздел в любое время. Существует несколько способов, с помощью которых вы можете обеспечить взаимное исключение, включая использование семафора. , мьютекс и мониторы. Не имеет значения, какой механизм вы используете для обеспечения взаимного исключения, будь то семафор или монитор. Единственная разница заключается между семафором и монитором. Семафор обычно предоставляется ОС (хотя вы можете создать свой собственный) и мониторы - это конструкция языка программирования для обеспечения взаимного исключения.

person akashchandrakar    schedule 13.11.2014