OSDev

для всех
Текущее время: 30 апр 2024, 05:55

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 15 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: IPC
СообщениеДобавлено: 10 окт 2010, 23:35 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Пожалуй, нужно соблюдать закономерность. Если сообщение изменяет состояние или режим работы устройства (конфигурирующее/настраивающее сообщение), то оно должно быть блокируемым, потому что от него зависит выполнение следующих сообщений.
А линейная передача данных может быть в виде посылок.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: IPC
СообщениеДобавлено: 11 окт 2010, 13:54 

Зарегистрирован: 16 фев 2010, 22:03
Сообщения: 101
Цитата:
Пожалуй, нужно соблюдать закономерность. Если сообщение изменяет состояние или режим работы устройства (конфигурирующее/настраивающее сообщение), то оно должно быть блокируемым, потому что от него зависит выполнение следующих сообщений.

Не совсем. Пока драйвер будет конфигурировать устройство, он нее будет обрабатывать другие сообщения. И пока не закончит не выполнит следующее действие.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: IPC
СообщениеДобавлено: 11 окт 2010, 19:10 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
KIV, я тоже так считаю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: IPC
СообщениеДобавлено: 13 окт 2010, 15:46 

Зарегистрирован: 16 фев 2010, 22:03
Сообщения: 101
Цитата:
KIV, я тоже так считаю.

В этом на мой взгляд плюс очереди сообщений - не надо предпринимать дополнительных усилий, чтобы действия выполнились именно в той последовательности к которой были запросы к драйверу, и ещё не надо дополнительно заботится о защите от одновременного обращения к одному и тому же устройству.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: IPC
СообщениеДобавлено: 02 фев 2012, 01:11 

Зарегистрирован: 25 май 2010, 20:58
Сообщения: 136
Наверное, уже не актуально, но напишу как понял.
Смысл приблизительно такой:
Send - отправить сообщение.
Receive - ожидать сообщение.
SendRec - отправить, и сразу перейти в ожидание.*
Signal - отправить уведомление.**
Это набор юниксовых команд.
- В случае синхронного (без буферов сообщений) IPC первые две команды являются блокирующими. Третья используется тогда, когда нужно последовательно вызвать первые две блокирующие команды (а это сложно, веде сразу после первой - блокировка). А четвёртая (Signal) нужна для коротких неблокирующих уведомлений.
- В твоём случае IPC асинхронный. Т.е. отправка сообщения (Send) не является блокирующей. Поэтому в SendRec и Signal отпадает необходимость. Остаётся всего два вызова Send и Receive. Вот только если у процесса-получателя будет заполнена очередь, то отправка сообщения ему должна вызвать блокировку отправителя. А это переход к синхронному IPC. Либо можно оставить Signal, отправка которого - просто пометка в битовой карте получателя типа: отправитель прислал уведомление. А т.к. битовая карта не "переполнится" как буфер, то и бояться нечего. А лучше: переходи на синхронные IPC:)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB