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

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


Гуру
******

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



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


Частый гость
**

Группа: Участник
Сообщений: 142
Регистрация: 3-05-18
Пользователь №: 103 639



Цитата(toweroff @ Jun 9 2018, 17:52) *
мютекс - вырожденная форма семафора с количеством вхождений ==1

в плане абстрактной логики примитивов синхронизации.
В плане конкретной реализации он может быть более быстродействующим.
Go to the top of the page
 
+Quote Post
Arlleex
сообщение Jun 9 2018, 17:13
Сообщение #3


Местный
***

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



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

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


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

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



Цитата(toweroff @ Jun 9 2018, 19:52) *
Товарищи, объясните разницу ...

Вот по этой ссылке про это все очень доходчиво расписано. Очень полезный ресурс, рекомендую!


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


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Forger @ Jun 9 2018, 23:04) *
Вот по этой ссылке про это все очень доходчиво расписано. Очень полезный ресурс, рекомендую!

По какой конкретно ссылке? Если нечего сказать, не говори ничего.
Я согласен со стартовым сообщением. Все остальное - шелуха и заумь.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Jun 10 2018, 10:47
Сообщение #6


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (toweroff @ Jun 10 2018, 00:52) *
Товарищи, объясните разницу

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

Семафоры предназначены для "сигнализации" одним процессом другому. Например, наша задача "А" должна дождаться, пока другая задача "В" выполнит какой-то фрагмент когда, затем послать сигнал в ждущую задачу "А". Задача "А", в свою очередь может продолжить выполняться.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jun 10 2018, 11:17
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(haker_fox @ Jun 10 2018, 13:47) *
Семафоры предназначены для "сигнализации" одним процессом другому. Например, наша задача "А" должна дождаться, пока другая задача "В" выполнит какой-то фрагмент когда, затем послать сигнал в ждущую задачу "А". Задача "А", в свою очередь может продолжить выполняться.

Не знаю с чего Вы это взяли, но я на uCOS-II вполне себе много лет уже использую семафоры для разграничения доступа задач ОС к разделяемым ресурсам.
И вообще, имхо, значения этих терминов в разных ОС трактуются не одинаково.
Так что вопрос терминологии бессмысленен без привязки к конкретной ОС.
К тому же исходный вопрос ТС ещё и поставлен некорректно: вопрос "в чём отличия функциональности" и "для чего можно применять" - совершенно разные вопросы. Для разделяемого доступа к ресурсам я могу применять хоть семафоры, хоть мьютексы, хоть даже мэйлбоксы или критические секции (или вообще сделать разделяемый доступ на атомарных операциях LDREX/STREX и Sleep(); или очередях и Sleep()) - всё зависит от понимания работы инструмента и уровня компетентности разработчика. laughing.gif
Go to the top of the page
 
+Quote Post
Forger
сообщение Jun 10 2018, 11:48
Сообщение #8


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

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



Цитата(ViKo @ Jun 10 2018, 13:38) *
По какой конкретно ссылке?

По любой ссылке, которая ведет в поисковик, поскольку вопрос этот из ясельной группы.
Вангую, что это был банальный "вброс" с известной целью. Ведь вон как на него отреагировали wink.gif


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


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (jcxz @ Jun 10 2018, 19:17) *
Не знаю с чего Вы это взяли

Я вам сейчас всё расскажу. Сегодня по утру я скосил знатную долю ганджубаса на своём поле. Увидев поставленный автором вопрос, я подумал, а почему бы и мне не ответить. Раскурив косячок, и подсоединившись к мировому сознанию, я написал то, что мне пришло в моём видении. И заметьте, это не учитывая более, чем два года работы с FreeRTOS, и более, чем 10-летним знакомством и работой с scmRTOS.

QUOTE (jcxz @ Jun 10 2018, 19:17) *
вполне себе много лет уже использую семафоры

А я разве говорил что-то обратное? Я лишь ответил автору вопроса на поставленный вопрос, и специально дал оговорку "своими словами". Впрочем оговорка была лишней, тут и так никто на истину в первой инстанции претендовать не может. rolleyes.gif

QUOTE (jcxz @ Jun 10 2018, 19:17) *
Для разделяемого доступа к ресурсам я могу применять хоть семафоры, хоть мьютексы, хоть даже мэйлбоксы или критические секции (или вообще сделать разделяемый доступ на атомарных операциях LDREX/STREX и Sleep(); или очередях и Sleep()) - всё зависит от понимания работы инструмента и уровня компетентности разработчика. laughing.gif

Я тоже их применяю. Неразумно защитать одну 4-байтовую переменную мьютексом и дёргать шедулер, когда там проще использовать критическую секцию. Так и сделано в одном из моих проектов. А вот аппаратный SPI я отдал одной из задач (роутеру), и и дал ему очередь, из которой он бесконечно долго ждёт сообщений. Сообщение может послать любой процесс, или даже прерывание. Тут я пришёл к выводу, что мьютекс или критическая секция совершенно не уместны.
Как видите, по одному лишь ответу трудно судить о компетентности. Всё зависит от понимания работы другого человека и уровни компетентности разработчика. rolleyes.gif rolleyes.gif rolleyes.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 10 2018, 14:27
Сообщение #10


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
Viktuar
сообщение Jun 10 2018, 15:13
Сообщение #11


Участник
*

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



Цитата(AlexandrY @ Jun 10 2018, 15:27) *
Но при этом можно сделать destroy мьютекса из другой задачи, не в той в которой он был залочен.
И он разлочится для всех остальных задач. Разница в поведении с семафорами здесь эфемерная.
Так что мьютексам найти достойное применение очень сложно. Я их никогда не использую.
Гораздо удобнее для этого Lightweight Semaphores. Они и быстрее мьютексов создаются, и лочат задачи в два раза быстрее.

А как же "priority inheritance" в мьютексах? Его вы тоже не используете?
Go to the top of the page
 
+Quote Post
Forger
сообщение Jun 10 2018, 16:04
Сообщение #12


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

Группа: Свой
Сообщений: 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
Сообщение #13


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
Forger
сообщение Jun 11 2018, 05:51
Сообщение #14


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

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



Цитата(AlexandrY @ Jun 11 2018, 08:43) *
все что можно надо делать глобальным, иначе лишаетесь кучи полезных фичей

Вы аккуратнее шутите! Все-таки, это - раздел для новичков, и некоторые из них могут воспринять "это" всерьез!







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


Ally
******

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



Цитата(Forger @ Jun 11 2018, 08:51) *
Вы аккуратнее шутите! Все-таки, это - раздел для новичков, и некоторые из них могут воспринять "это" всерьез!

Дело в том что программирование малых embedded систем - это несколько иная наука чем программирование скажем PC или даже одноплатных компьютеров.
Но это открывается только через достаточно лет практики.
Поэтому я не удивляюсь незнанию вами таких очевидных истин. wink.gif
Go to the top of the page
 
+Quote Post
Forger
сообщение Jun 11 2018, 06:16
Сообщение #16


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

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



Цитата(AlexandrY @ Jun 11 2018, 09:02) *
Дело в том что программирование малых embedded систем - это несколько иная наука чем программирование скажем PC или даже одноплатных компьютеров.

Так говорили лет 15..20 назад, когда еще делили программистов на два лагеря: PC и PIC-контроллеры ...
К счастью, на дворе совсем другие времена, та "грань" практически размыта и поэтому очередная попытка подобного деления звучит уже как минимум наивно wink.gif
Не отставайте, а то затопчут :D

1. Глобальные переменные в большинстве случаев нарушают инкапсуляцию. К ним открыт неконтролируемый доступ отовсюду.
2. В большом проекте при обилии глобальных переменных возникает путаница в именах. Глобальную переменную же видно отовсюду, надо, чтобы отовсюду было понятно, зачем она.
3. Глобальные переменные в большинстве случаев нарушают принцип инверсии зависимостей (или делают возможным его нарушение).
4. Глобальные переменные ухудшают масштабируемость проекта.
5. Глобальные переменные ухудшают читаемость кода (в каком-то конкретно взятом месте непонятно, нужна ли какая-то конкретная глобальная переменная, или нет).
6. Глобальные переменные приводят к трудноуловимым ошибкам. Примеры: нежелательное изменение её значения в другом месте/другим потоком, ошибочное использование глобальной переменной для промежуточных вычислений из-за совпадения имен, возвращение функцией неправильного значения при тех же параметрах (оказывается, она зависима от глобальной переменной, а ее кто-то поменял).
7. Глобальные переменные создают большие сложности при использовании модульного тестирования.
8. Глобальные переменные увеличивают число прямых и косвенных связей в системе, делая её поведение труднопредсказуемым, а её саму - сложной для понимания и развития.


Взято отсюда.


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


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

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(Forger @ Jun 10 2018, 14:48) *
По любой ссылке, которая ведет в поисковик, поскольку вопрос этот из ясельной группы.
Вангую, что это был банальный "вброс" с известной целью. Ведь вон как на него отреагировали wink.gif
Даже если "вброс" - одобрямс.
"Проблем" в том, что найти оптимальную-умную ссылку из нескольких сотен, что вываливает поисковик - уже сама по себе задача сложная.
Чтобы выудить из этой свалки внятный ответ на свой вопрос нужно угрохать много времени. То, что наилучшая инф. находится на первых двух страницах - не факт.
Искатель рискует получить в голове грандиозную кашу из информации и дез-информации sm.gif
По данной теме это может и не так, но если вопрос чуть сложнее - то факт есть факт.


Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 11 2018, 08:50
Сообщение #18


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата
Mutex stands for “Mutual Exclusion”. In reality, a mutex is a specialized version
of semaphore. Like a semaphore, a mutex is a container for tokens. The
difference is that a mutex can only contain one token which cannot be created or
destroyed. The principle use of a mutex is to control access to a chip resource
such as a peripheral. For this reason a mutex token is binary and bounded. Apart
from this it really works in the same way as a semaphore.

Отсюда:
https://electronix.ru/forum/index.php?showt...t&p=1547597
Go to the top of the page
 
+Quote Post
Forger
сообщение Jun 11 2018, 09:25
Сообщение #19


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

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



Цитата(k155la3 @ Jun 11 2018, 11:04) *
"Проблем" в том, что найти оптимальную-умную ссылку из нескольких сотен, что вываливает поисковик - уже сама по себе задача сложная.

Если не учиться в детстве ходить и бегать, то так и будешь всю жизнь ползать и звать на помощь мамку по всяким пустякам wink.gif


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


Участник
*

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



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

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


Частый гость
**

Группа: Участник
Сообщений: 142
Регистрация: 3-05-18
Пользователь №: 103 639



А очереди не должны приводить к лишним переключениям контекста. Более того, могут позволить их частоту снизить, в ситуациях, когда имеется выраженная неравномерность поступления единиц обработки во времени (пачками поступают, например). Но тут да, размен емкости системы в единицах отложенной обработки на потребляемое ОЗУ и предсказуемость (число возможных состояний) )
Go to the top of the page
 
+Quote Post
Herz
сообщение Jun 11 2018, 14:51
Сообщение #22


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(Forger @ Jun 11 2018, 12:25) *
Если не учиться в детстве ходить и бегать, то так и будешь всю жизнь ползать и звать на помощь мамку по всяким пустякам wink.gif

А Вам-то что?
Здесь раздел для начинающих в форуме электронщиков/программистов как раз для выяснения простых вопросов. Чтобы ответы на них не искать по всем просторам интернета. И, как видим, они не всегда элементарны и односложны, как кажутся.
Поэтому, присоединяюсь к ViKo: нет желания разжёвывать "пустяки" - проходите, и не надо нравоучений.
Go to the top of the page
 
+Quote Post
Forger
сообщение Jun 11 2018, 15:47
Сообщение #23


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

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



Цитата(Herz @ Jun 11 2018, 17:51) *
Здесь раздел для начинающих в форуме электронщиков/программистов как раз для выяснения простых вопросов.

Вы путаете простые вопросы, на которые трудно найти однозначные ответы, с вопросами, на которые ответы найти очень легко самостоятельно.
Первые же ссылки при поиске в гугле по запросу "мьютексы и семафоры разница" дают вполне однозначные и внятные ответы.
Вот специально для особо ленивых: ссылка раз, ссылка два, ссылка три, ну и википедия.
Не сложно, не правда ли? wink.gif


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


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Я согласен, многое можно выяснить самостоятельно. И даже говорят, при правильном подборе литературы, получить неплохое образование, не покидая туалет.
Меня тоже, например, раздражает лень нерадивых студентов, не желающих палец о палец ударить, чтобы решить домашнее задание (по определению требующее самостоятельности).
Но здесь, ИМХО, не тот случай. Как Вы могли заметить, у отвечающих тоже не нашлось однозначного ответа. Даже специалистам иногда не вредно "тряхнуть стариной", дабы освежить в памяти предмет.
Поэтому пользу обсуждения не стоит недооценивать.
И, обратите внимание: на отстаивание своей позиции вы затратили в итоге больше работы, чем требовалось для ответа на вопрос ТС.
Так что, ради реплики типа: "имей совесть - поищи сам" не стоило утруждаться.
Go to the top of the page
 
+Quote Post
Forger
сообщение Jun 11 2018, 18:25
Сообщение #25


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

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



Цитата(Herz @ Jun 11 2018, 21:13) *
Как Вы могли заметить, у отвечающих тоже не нашлось однозначного ответа.

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

Цитата
Поэтому пользу обсуждения не стоит недооценивать.
Где я с этим и спорил??
Все мои "вопросы" к элементарной лени ТС. Не более того.

Цитата
И, обратите внимание: на отстаивание своей позиции вы затратили в итоге больше работы, чем требовалось для ответа на вопрос ТС.
Так что, ради реплики типа: "имей совесть - поищи сам" не стоило утруждаться.

А вот тут я как-нибудь сам разберусь на что и сколько мне тратить своё время!


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


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
Сообщение #27


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

Группа: Свой
Сообщений: 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
Сообщение #28


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
Сообщение #29


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

Группа: Свой
Сообщений: 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 12 2018, 05:39
Сообщение #30


Гуру
******

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



ТС не молчит, праздники...
спасибо за обсуждение, с интересом почитал
Никакого холивара не планировалось, столкнулся с этим делом в рамках CMSIS Rtos и Keil RTOS
Вывод в порт дебажный сделал и так, и так. Разницы не увидел, поэтому и спросил
А операционки да, все разные. Тут жизнь заставила делать под линух, так там с сигналами, например, совсем другая идеология, сижу, разбираюсь...
Go to the top of the page
 
+Quote Post
Forger
сообщение Jun 12 2018, 06:36
Сообщение #31


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

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



Цитата(toweroff @ Jun 12 2018, 08:39) *
в рамках CMSIS Rtos и Keil RTOS

Мануал RTX говорит очень однозначно:
Semaphores are used to manage and protect access to shared resources. Semaphores are very similar to Mutexes.

Отличия:
Whereas a Mutex permits just one thread to access a shared resource at a time, a semaphore can be used to permit a fixed number of threads to access a pool of shared resources.
Using semaphores, access to a group of identical peripherals can be managed (for example multiple DMA channels).


Мьютекс по сути - вырожденный семафор (бинарный), но имеющий дополнительное ограничения:
Mutex management functions cannot be called from interrupt service routines (ISR), unlike a binary semaphore that can be released from an ISR.

Но есть у мьютекса и особая "фича":
The advantage of a mutex is that it introduces thread ownership.
When a thread acquires a mutex and becomes its owner, subsequent mutex acquires from that thread will succeed immediately without any latency.
Thus, mutex acquires/releases can be nested.


Поэтому "Вывод в порт дебажный" будет работать одинаково как на мьютексе так и на семафоре.

По крайней мере так сделано в Keil RTX. В других ОСях это может немного отличаться.
С точки зрения реализации и производительности это также очень сильно зависит от конкретной RTOS.



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


Гуру
******

Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287



Цитата(Forger @ Jun 11 2018, 21:25) *
А вот тут я как-нибудь сам разберусь на что и сколько мне тратить своё время!

А вот тут я Вам напомню о Правилах Форума. Можете тратить его на что угодно, но не на флейм здесь. Настоятельно прошу воздержаться впредь от наездов и приреканий.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 17:40
Рейтинг@Mail.ru


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