реклама на сайте
подробности

 
 
> Семафоры и Мютексы
toweroff
сообщение Jun 9 2018, 16:52
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Товарищи, объясните разницу
Мютекс - запрещает доступ от разных процессов
Семафор - имеет счетчик вхождений
получается, мютекс - вырожденная форма семафора с количеством вхождений ==1?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Arlleex
сообщение Jun 9 2018, 17:13
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 492
Регистрация: 12-11-11
Пользователь №: 68 264



Не совсем так.
Мьютекс - это объект синхронизации, имеющий состояния "захвачен" и "отпущен", причем отпустить мьютекс может только тот процесс, который его захватил, в отличие от семафоров. Не забывайте, что есть еще счетные семафоры, а также рекурсивные мьютексы. У них у обоих счетчик захватов/сигнализации увеличивается/уменьшается, только вот опять же, освободить мьютекс может только занявший его процесс. При обработке мьютекса ОС проверяет принадлежность объекта синхронизации к текущему процессу. В случае семафора - нет.

Сообщение отредактировал Arlleex - Jun 9 2018, 17:14
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 10 2018, 14:27
Сообщение #3


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Arlleex @ Jun 9 2018, 20:13) *
Мьютекс - это объект синхронизации, имеющий состояния "захвачен" и "отпущен", причем отпустить мьютекс может только тот процесс, который его захватил, в отличие от семафоров. Не забывайте, что есть еще счетные семафоры, а также рекурсивные мьютексы. У них у обоих счетчик захватов/сигнализации увеличивается/уменьшается, только вот опять же, освободить мьютекс может только занявший его процесс. При обработке мьютекса ОС проверяет принадлежность объекта синхронизации к текущему процессу. В случае семафора - нет.

Но при этом можно сделать destroy мьютекса из другой задачи, не в той в которой он был залочен.
И он разлочится для всех остальных задач. Разница в поведении с семафорами здесь эфемерная.
Так что мьютексам найти достойное применение очень сложно. Я их никогда не использую.
Гораздо удобнее для этого Lightweight Semaphores. Они и быстрее мьютексов создаются, и лочат задачи в два раза быстрее.
Go to the top of the page
 
+Quote Post
Forger
сообщение Jun 10 2018, 16:04
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(AlexandrY @ Jun 10 2018, 17:27) *
Но при этом можно сделать destroy мьютекса из другой задачи, не в той в которой он был залочен.

Достаю свою "шарманку": если не делать мьютекс глобальным (доступным со "всех щелей"), то такая проблема ему не грозит. Впрочем, как и любому другому "объекту" wink.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 11 2018, 05:45
Сообщение #5


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Forger @ Jun 10 2018, 19:04) *
Достаю свою "шарманку": если не делать мьютекс глобальным (доступным со "всех щелей"), то такая проблема ему не грозит. Впрочем, как и любому другому "объекту" wink.gif

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

Цитата(Viktuar @ Jun 10 2018, 18:13) *
А как же "priority inheritance" в мьютексах? Его вы тоже не используете?

Да не использую.
А вы используете? Расскажите как.
Go to the top of the page
 
+Quote Post
Viktuar
сообщение Jun 11 2018, 13:54
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 18-12-16
Пользователь №: 94 676



Цитата(AlexandrY @ Jun 11 2018, 05:45) *
Да не использую.
А вы используете? Расскажите как.

Использую по прямому назначению, чтоб избегать инверсии приоритетов. Если в системе с десяток процессов и большинству нужен доступ к разделяемым ресурсам (таким как dma или в5ешняя память), то исключить возможность инверсии приоритетов (и контроля над тем, что происходит) неполучается без этого. Заводить для каждого общего ресурса отдельный поток и очередь сообщений - не вариант (т.к. таких ресурсов много, а ОЗУ всегда в дефиците, да и времени на переключение контекста жалко). А мютексы с наследованием приоритетов решают эту задачу отлично и без дополнительных расходов (ну почти).
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 11 2018, 19:16
Сообщение #7


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Viktuar @ Jun 11 2018, 16:54) *
Использую по прямому назначению, чтоб избегать инверсии приоритетов. Если в системе с десяток процессов и большинству нужен доступ к разделяемым ресурсам (таким как dma или в5ешняя память), то исключить возможность инверсии приоритетов (и контроля над тем, что происходит) неполучается без этого. Заводить для каждого общего ресурса отдельный поток и очередь сообщений - не вариант (т.к. таких ресурсов много, а ОЗУ всегда в дефиците, да и времени на переключение контекста жалко). А мютексы с наследованием приоритетов решают эту задачу отлично и без дополнительных расходов (ну почти).

Эт не ответ. Такие рассуждения сопровождают любой мануал по RTOS.
Меня интересует прежде всего с чего вы взяли что у вас возможна инверсия, а если и возможна то с чего вы решили что с ней надо бороться или что она реально опасна.
Не проще ли было спланировать приоритеты так чтобы не было инверсии или от нее не исходила бы опасность?
Скажем у меня десятки задач, но я не боюсь инверсии.
Вот мьютексов я боюсь, поскольку они съедают кучу процессорного времени и внутри их сервисов происходят длительные запреты прерываний.


Цитата(Forger @ Jun 11 2018, 18:47) *
Вот специально для особо ленивых: ссылка раз, ссылка два, ссылка три, ну и википедия.
Не сложно, не правда ли? wink.gif

Столько ссылок и все не в тему.
Вы че совсем не знаете RTOS?
Не знаете где FreeRTOS лежит или mbed?
Лень было туда сходить и посмотреть?
Обязательно этот шлак из первой страницы поиска гугли выгружать?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- toweroff   Семафоры и Мютексы   Jun 9 2018, 16:52
- - Serge V Iz   Цитата(toweroff @ Jun 9 2018, 17:52) мюте...   Jun 9 2018, 17:07
|- - Viktuar   Цитата(AlexandrY @ Jun 10 2018, 15:27) Но...   Jun 10 2018, 15:13
|- - Forger   Цитата(AlexandrY @ Jun 11 2018, 08:43) вс...   Jun 11 2018, 05:51
||- - AlexandrY   Цитата(Forger @ Jun 11 2018, 08:51) Вы ак...   Jun 11 2018, 06:02
||- - Forger   Цитата(AlexandrY @ Jun 11 2018, 09:02) Де...   Jun 11 2018, 06:16
|- - Forger   Цитата(AlexandrY @ Jun 11 2018, 22:16) Ст...   Jun 11 2018, 19:33
|- - AlexandrY   Цитата(Forger @ Jun 11 2018, 22:33) ТС ни...   Jun 11 2018, 20:07
|- - Forger   Цитата(AlexandrY @ Jun 11 2018, 23:07) Ес...   Jun 11 2018, 20:16
- - Forger   Цитата(toweroff @ Jun 9 2018, 19:52) Това...   Jun 9 2018, 20:04
|- - ViKo   Цитата(Forger @ Jun 9 2018, 23:04) Вот по...   Jun 10 2018, 10:38
|- - Forger   Цитата(ViKo @ Jun 10 2018, 13:38) По како...   Jun 10 2018, 11:48
|- - k155la3   Цитата(Forger @ Jun 10 2018, 14:48) По лю...   Jun 11 2018, 08:04
|- - Forger   Цитата(k155la3 @ Jun 11 2018, 11:04) ...   Jun 11 2018, 09:25
|- - Herz   Цитата(Forger @ Jun 11 2018, 12:25) Если ...   Jun 11 2018, 14:51
|- - Forger   Цитата(Herz @ Jun 11 2018, 17:51) Здесь р...   Jun 11 2018, 15:47
- - haker_fox   QUOTE (toweroff @ Jun 10 2018, 00:52) Тов...   Jun 10 2018, 10:47
|- - jcxz   Цитата(haker_fox @ Jun 10 2018, 13:47) Се...   Jun 10 2018, 11:17
|- - haker_fox   QUOTE (jcxz @ Jun 10 2018, 19:17) Не знаю...   Jun 10 2018, 12:43
- - ViKo   ЦитатаMutex stands for “Mutual Exclusion”. In real...   Jun 11 2018, 08:50
- - Serge V Iz   А очереди не должны приводить к лишним переключени...   Jun 11 2018, 14:33
- - Herz   Я согласен, многое можно выяснить самостоятельно. ...   Jun 11 2018, 18:13
|- - Forger   Цитата(Herz @ Jun 11 2018, 21:13) Как Вы ...   Jun 11 2018, 18:25
|- - Herz   Цитата(Forger @ Jun 11 2018, 21:25) А вот...   Jun 12 2018, 11:34
- - toweroff   ТС не молчит, праздники... спасибо за обсуждение, ...   Jun 12 2018, 05:39
- - Forger   Цитата(toweroff @ Jun 12 2018, 08:39) в р...   Jun 12 2018, 06:36


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 03:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.04073 секунд с 7
ELECTRONIX ©2004-2016