|
Семафоры и Мютексы |
|
|
|
 |
Ответов
|
Jun 9 2018, 17:13
|

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

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

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

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

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

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

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

|
Цитата(Viktuar @ Jun 11 2018, 16:54)  Использую по прямому назначению, чтоб избегать инверсии приоритетов. Если в системе с десяток процессов и большинству нужен доступ к разделяемым ресурсам (таким как dma или в5ешняя память), то исключить возможность инверсии приоритетов (и контроля над тем, что происходит) неполучается без этого. Заводить для каждого общего ресурса отдельный поток и очередь сообщений - не вариант (т.к. таких ресурсов много, а ОЗУ всегда в дефиците, да и времени на переключение контекста жалко). А мютексы с наследованием приоритетов решают эту задачу отлично и без дополнительных расходов (ну почти). Эт не ответ. Такие рассуждения сопровождают любой мануал по RTOS. Меня интересует прежде всего с чего вы взяли что у вас возможна инверсия, а если и возможна то с чего вы решили что с ней надо бороться или что она реально опасна. Не проще ли было спланировать приоритеты так чтобы не было инверсии или от нее не исходила бы опасность? Скажем у меня десятки задач, но я не боюсь инверсии. Вот мьютексов я боюсь, поскольку они съедают кучу процессорного времени и внутри их сервисов происходят длительные запреты прерываний. Цитата(Forger @ Jun 11 2018, 18:47)  Вот специально для особо ленивых: ссылка раз, ссылка два, ссылка три, ну и википедия. Не сложно, не правда ли?  Столько ссылок и все не в тему. Вы че совсем не знаете RTOS? Не знаете где FreeRTOS лежит или mbed? Лень было туда сходить и посмотреть? Обязательно этот шлак из первой страницы поиска гугли выгружать?
|
|
|
|
|
Jun 11 2018, 19:33
|

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

|
Цитата(AlexandrY @ Jun 11 2018, 22:16)  Столько ссылок и все не в тему. Прочитайте первый пост еще раз. На этот раз более внимательно и вдумчиво. Потом дайте свои ссылки "в тему". Цитата Вы че совсем не знаете RTOS? Не знаете где FreeRTOS лежит или mbed? ТС ни слова не сказал ни про то, ни про другое. Вы экстрасенс? Умеете читать мысли?
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
|
Jun 11 2018, 20:16
|

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

|
Цитата(AlexandrY @ Jun 11 2018, 23:07)  Если TC молчит, то поддерживаем обсуждение в рамках тематики форума.... Скажите, где учат так выкручиваться от ответов на прямые вопросы? И стоит ли ждать от Вас ссылок "в тему", или хотя бы "в рамках тематики форума"? Ведь мои ссылки про "разницу между семафором и мьютексом" вдруг оказали "не в тему" ((
--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|