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

 
 
> Семафоры и Мютексы
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
Forger
сообщение Jun 11 2018, 19:33
Сообщение #8


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

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



Цитата(AlexandrY @ Jun 11 2018, 22:16) *
Столько ссылок и все не в тему.
Прочитайте первый пост еще раз. На этот раз более внимательно и вдумчиво.
Потом дайте свои ссылки "в тему".

Цитата
Вы че совсем не знаете RTOS? Не знаете где FreeRTOS лежит или mbed?

ТС ни слова не сказал ни про то, ни про другое. Вы экстрасенс? Умеете читать мысли?


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


Ally
******

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



Цитата(Forger @ Jun 11 2018, 22:33) *
ТС ни слова не сказал ни про то, ни про другое. Вы экстрасенс? Умеете читать мысли?

Если TC молчит, то поддерживаем обсуждение в рамках тематики форума.
Вернитесь в начало форума и посмотрите его тематику.
Go to the top of the page
 
+Quote Post
Forger
сообщение Jun 11 2018, 20:16
Сообщение #10


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

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



Цитата(AlexandrY @ Jun 11 2018, 23:07) *
Если TC молчит, то поддерживаем обсуждение в рамках тематики форума....

Скажите, где учат так выкручиваться от ответов на прямые вопросы?

И стоит ли ждать от Вас ссылок "в тему", или хотя бы "в рамках тематики форума"?
Ведь мои ссылки про "разницу между семафором и мьютексом" вдруг оказали "не в тему" ((


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
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   Цитата(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 Текстовая версия Сейчас: 22nd July 2025 - 08:11
Рейтинг@Mail.ru


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