КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Разработка систем с помощью передачи сообщений
Решение задачи производительности потребителя с помощью мониторов. Монитор – это некоторый приметив синхронизации, обладающий особыми свойствами, иными словами – это некоторая библиотека функций при обращении в любой момент времени может быть активен хотябы 1 процесс. Если при вызове процедуры есть хоть 1-н процесс, вызываемый процесс блокируется. В мониторах были предложены переменные состояния и примитивы wait() и signal(). Примитив wait() вызывается, когда процедура монитора обнаруживает что она не в состоянии продолжить операцию. Она вызывает блокировку процесса, что позволяет другому процессу войти в монитор. Примитив signal() выполняет операцию побудки на его переменную состояния. Хоар предложил при этом немедленный запуск разбуженного процесса и остановку разбудившего, по решению Хансона, процесс, выполнивший signal() немедленно покидает мониторы.
Разработка систем с помощью передачи сообщений связано с рядом проблем: 1. Сообщение может затеряться во время передачи. Во избежании этого отправитель и получатель договариваются о подтверждении приема. Если сообщение не получено отправитель повторяет передачу. 2. Подтверждение может затеряться либо не успешно дойти до отправителя, а он посылает сообщение повторно. Необходим механизм, отличающий посылку от ее конца. Это решается путем занесения номера сообщения в его тело. 3. Необходимо однозначно определять процесс, указываемый в запросах send и receive, что достигается с помощью механизма аутентификации. В механизме передачи сообщений существует свое решение проблемы производителя и потребителя.
#define №100 void producer(void) { int item; message m; while(true) { item=produce_item(); receive(consumer, &m); build_messag(&m, item); send(consumer, &m); } } void consummer(void) { int item; message m; for(int=0;i<N;i++) { send(producer, &m); item=extract_item(&m); send(producer, &m); if(count==N-1)wakeup(produser); consume_item(item); } } В данном примере существуют ограничения: 1. Все сообщения имеютодинаковый размер. 2. Все сообщения которые посланы и не получены помещаются в ОС в буфер. Следует учитывать что потребитель и производитель могут работать с разной скоростью. В этом случае использеутся адресуемые сообщения т.е. каждому из процессов присвоен уникальный адрес и сообщение адресуется по номерам, такой подход называют методом почтового ящика – это некоторый буфер, который просматривает процессы в поисках запросов либо сообщений для себя. При этом send и receive обмен идет между процессом и почтовым ящиком. Существует другой подход, так называемый метод Рандегу, в этом случае процесс обменивается с процессом без буферизации. При отсутствии данных либо запросов соотвецтвующий процесс переключается на другие задачи. Подразумевается что в этом случае процессы работают примерно одинаково либо ведомый процесс производный. Поэтому ведомый процесс работает медленнее ведущего однако он способен производить данные в 2 раза чаще чем происходит значение отклонения контролируемого параметра.
Дата добавления: 2013-12-12; Просмотров: 298; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |