Синхронизация и взаимодействие программных потоков в операционной среде реального времени. Дорогов А.Ю. - 31 стр.

UptoLike

Составители: 

31
Атомарные операции могут быть использованы где угодно, но особенно по-
лезны они в двух случаях:
между процедурой обработки прерывания (ISR) и потоком;
между двумя потоками.
Так как ISR может вытеснить поток в любой точке, то естественный
путь защитить поток от прерыванийзапретить все прерывания. Для сис-
тем реального времени это плохо, так как ведет не только к снижению про-
изводительности, но и к возможной потере внешних событий. Использова-
ние атомарных функций позволяет решить данную проблему.
2.11. Синхронизация через сообщения
Сообщение представляет собой группу байт, значение которых имеет
смысл только для взаимодействующих потоков и не имеет какого-либо аб-
солютного значения для ядра операционной системы.
Таблица 2.7
Функция Описание
MsgSend() Послать сообщение и блокироваться до получения ответа
MsgReceive() Ожидать приема сообщения
MsgReply() Ответить на сообщение
MsgError() Возвратить код ошибки без передачи ответного сообщения
Потоки получают и отправляют сообщения, а также отвечают на них.
При этом состояния потоков изменяются. Передача сообщений между пото-
ками связана с блокировками, т. е. механизм синхронизации встроен в про-
MsgSend()
RECEIVE
blocked
READY
SEND
blocked
REPLY
blocked
MsgSend()
MsgReceive()
MsgReceive()
MsgReply() or
MsgError()
MsgReply() or
MsgError()
Поток А
Поток Б
Рис. 2.7