DRAKON.SU

Текущее время: Пятница, 26 Апрель, 2024 11:04

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




Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
 Заголовок сообщения: Рисунок из книг(и)
СообщениеДобавлено: Воскресенье, 03 Март, 2013 10:10 

Зарегистрирован: Воскресенье, 06 Апрель, 2008 14:43
Сообщения: 1657
Замечание ко книгам В.Д. Паронджанова.
Вложение:
ПараллельнаяРаботаАлгоритмов.png
Процесс В останавливается в результате выполнения в алгоритме процесса А иконы ПараллельныйПроцесс с командой Останов, т.е. выдается команда из процесса А в Процесс В.
Влияния процесса В на процесс А отсутствует.

Предлагаю в рисунке линию взаимодействия по команде Останов выполнить с направлением стрелки от процесса А к процессу В.

Владимир Даниелович, по возможности, приведите примеры Дракон-схем алгоритма параллельного процесса, принимающего команды от другого параллельного процесса для различных команд: Порождение, Запуск, Управление, Останов, Ликвидация с реализацией:
1. иконами ПараллельныйПроцесс,
2. с взаимодействием параллельных процессов, обменивающихся сообщениями, т.е. иконы Вывод и Ввод,
3. с использование глобальных переменных - икона Полка.

Предполагаю, команда Порождение и возможно Ликвидация направляются не к параллельному процессу В, а к диспетчеру системы реального времени.


Последний раз редактировалось ==== Воскресенье, 03 Март, 2013 11:31, всего редактировалось 9 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рисунок из книг(и)
СообщениеДобавлено: Воскресенье, 03 Март, 2013 10:30 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
Да. Здесь как бы неявно предполагается, что идёт передача управления (вызов/возврат). :) Чтобы "спасти стрелку", можно предполагать, что запущенный из А процесс В выдаёт для сведения А что-то, по результатам анализа чего А решает уже остановить В... но тогда протокольная диаграмма будет объёмнее, вроде как здесь для ввода (сначала, а потом ещё добавится посылка Останов и какая-то реакция на неё)...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рисунок из книг(и)
СообщениеДобавлено: Воскресенье, 03 Март, 2013 12:51 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5851
Откуда: Москва
Геннадий Тышов писал(а):
Замечание ко книгам В.Д. Паронджанова.
Процесс В останавливается в результате выполнения в алгоритме процесса А иконы ПараллельныйПроцесс с командой Останов, т.е. выдается команда из процесса А в Процесс В.
Влияния процесса В на процесс А отсутствует.

Предлагаю в рисунке линию взаимодействия по команде Останов выполнить с направлением стрелки от процесса А к процессу В.


Геннадий Николаевич, Вы правы, а я не прав.

Направление стрелки надо изменить как Вы сказали. Впрочем, эта ошибка не имеет неприятных последствий, так как это ошибка в рисунке, но не в идеологии. Короче, эта ошибка типа "мелкая опечатка", которая ни на что не влияет. Но ее (как любую опечатку) желательно исправить.

Попутно сделаю Пояснение.

              Алгоритм В может закончить работу в двух случаях:

              — по команде Останов от алгоритма А;

              — без команды Останов. Имеется в виду, что В работает до того момента, когда он выполнит свою задачу и останавливается. Можно сказать, что он "умирает" естественной смертью, а не потому, что получил приказ "Умри" (Останов) от алгоритма А.

================================

На остальные вопросы отвечу позже, после того как внимательно прочитаю и подумаю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рисунок из книг(и)
СообщениеДобавлено: Понедельник, 04 Март, 2013 09:26 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5851
Откуда: Москва
Привожу цитату из моей книги "Учись писать, читать и понимать алгоритмы... ", стр. 219, 220.

Цитата:
§15. КРАТКОЕ СООБЩЕНИЕ ДЛЯ ПРОГРАММИСТОВ

На рис. 140, 142–145 показаны операторы реального времени: «пауза», «пуск таймера», «синхронизатор», «период», а также цикл ЖДАТЬ.

Эти операторы нарисованы внутри алгоритмов. Поэтому может создаться впечатление, что они реализуются этими алгоритмами (то есть прикладными программами реального времени).

Но это не так.

На самом деле перечисленные операторы реализуются совместно:

 прикладной программой реального времени;

 дракон-диспетчером, входящим в состав операционной системы реального времени.

Когда в прикладной программе встречается оператор «пауза», происходят события, не показанные на наших рисунках. А именно, выход из прикладной программы и передача управления в дракон-диспетчер (с одновременной передачей параметра, записанного в иконе «пауза»).

Получив параметр, диспетчер отсчитывает время, указанное в паузе. Когда время истечет, диспетчер возвращает управление в прикладную программу – в точку, расположенную после иконы «пауза».

Иными словами, всякий раз, когда на рисунке алгоритма изображена пауза происходят два события:

 выход из прикладной программы (в начале паузы);

 вход в прикладную программу (в конце паузы).

Рассмотрим еще один пример – оператор «период». Длительность периода отсчитывает не прикладная программа на рис. 144, а дракон-диспетчер, входящий в состав операционной системы реального времени.

Оператор «период» означает выход из прикладной программы. Управление переходит к дракон-диспетчеру (с одновременной передачей параметра 4с). Через каждые 4 секунды дракон-диспетчер передает управление в начало цикла ЖДАТЬ (точка Z на рис. 144).

Если все три условия дают ответ «нет», оператор «период» возвращает управление в дракон-диспетчер.

Таким образом, функционирование цикла ЖДАТЬ обеспечивается совместными усилиями прикладной программы и дракон-диспетчера.

Этот вывод относится ко всем операторам реального времени.

На рисунках показаны алгоритмы, которые имеют одно начало (один вход) и один конец (один выход). В действительности программы реального времени имеют много входов и много выходов.

Дополнительные входы и выходы появляются всякий раз, когда в алгоритм добавляется оператор пауза или период. Но эти дополнительные входы и выходы на рисунках не показаны. Они не показаны из эргономических соображений – чтобы не загромождать рисунок.


ПОЯСНЕНИЕ

Участники форума (наверно) привыкли к тому, что ДРАКОН дает точную фотографию всех маршрутов алгоритма. Поэтому иногда говорят, что ДРАКОН — это маршрутный язык.

Это не совсем так. А применительно к программам реального времени — СОВСЕМ НЕ ТАК.

1. Когда это эргономически необходимо, ДРАКОН дает точную фотографию маршрутов.

2. В программах реального времени (в ряде случаев) ситуация обратная. В этом случае эргономически необходимо СПРЯТАТЬ (УБРАТЬ С ГЛАЗ ДОЛОЙ) служебные передачи управления между прикладной программой и дракон-диспетчером. Именно об этом идет речь в цитате, приведенной выше.

=================================

Продолжение следует


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рисунок из книг(и)
СообщениеДобавлено: Воскресенье, 10 Март, 2013 12:25 

Зарегистрирован: Воскресенье, 06 Апрель, 2008 14:43
Сообщения: 1657
Владимир Даниелович,
все таки остается не понятно, как в Драконе выглядит алгоритм параллельного процесса, принимающего команды (на рисунке процесс В), в частности для команд: Порождение, Запуск, Управление, Останов, Ликвидация.

Создается впечатление, что язык Дракон не обладает полнотой средств для изображения алгоритма параллельного процесса, принимающего команды от другого процесса.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рисунок из книг(и)
СообщениеДобавлено: Понедельник, 11 Март, 2013 09:00 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5851
Откуда: Москва
Геннадий Тышов писал(а):
Создается впечатление, что язык Дракон не обладает полнотой средств для изображения алгоритма параллельного процесса, принимающего команды от другого процесса.


В книге "Учись" сказано на стр. 227:
Цитата:
§5. КОМАНДЫ УПРАВЛЕНИЯ ПАРАЛЛЕЛЬНЫМИ ПРОЦЕССАМИ

Команды управления пишут на верхнем этаже иконы «параллельный процесс». Ниже представлен перечень команд управления:

Пуск Осуществляет пуск параллельного процесса

Останов Осуществляет останов параллельного процесса

Стоп Осуществляет приостановку параллельного процесса

Рестарт Осуществляет повторный пуск приостановленного параллельного процесса
К этому списку при необходимости можно добавить Ликвидация

Геннадий Николаевич, если Вы пришли к выводу, что этого недостаточно, следует добавить то, что Вы считаете правильным.

========================

Чтобы понять мою позицию, следует учесть это:
viewtopic.php?p=78487#p78487
(одно сообщение). В особенности пункты 4 и 5.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рисунок из книг(и)
СообщениеДобавлено: Понедельник, 11 Март, 2013 18:09 

Зарегистрирован: Воскресенье, 06 Апрель, 2008 14:43
Сообщения: 1657
Владимир Паронджанов писал(а):
Геннадий Николаевич, если Вы пришли к выводу, что этого недостаточно, следует добавить то, что Вы считаете правильным.

Владимир Даниелович, да, этого недостаточно, а личного опыта у меня нет.

Каким графическим оператором обеспечивается прием команды от другого параллельного процесса?

Как в среде Графит-Флокс изображается алгоритм параллельного процесса принимающий команду от другого параллельного процесса? Если это возможно, или рисунок из одной из книг.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рисунок из книг(и)
СообщениеДобавлено: Понедельник, 11 Март, 2013 19:56 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5851
Откуда: Москва
Геннадий Тышов писал(а):
Каким графическим оператором обеспечивается прием команды от другого параллельного процесса?

Геннадий Тышов писал(а):
Как в среде Графит-Флокс изображается алгоритм параллельного процесса принимающий команду от другого параллельного процесса? Если это возможно, или рисунок из одной из книг.

В Графит-Флоксе прием команды от другого параллельного процесса не используется.

Используется только выдача команды. Этого достаточно (для задач НПЦАП).

Предположим, выдана команда "Пуск В". По этой команде запускается параллельный процесс В.

Предположим, выдана команда "Останов В". По этой команде останавливается параллельный процесс В.

Таким образом, в Графит-Флоксе не используется операция "Прием".

Примеры даны здесь и далее:
viewtopic.php?p=61683#p61683

Читать до сих пор (до §6). Дальше можно не читать.
Цитата:
§6. АЛЬТЕРНАТИВНЫЙ СПОСОБ ИЗОБРАЖЕНИЯ
ПАРАЛЛЕЛЬНЫХ ПРОЦЕССОВ


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рисунок из книг(и)
СообщениеДобавлено: Понедельник, 11 Март, 2013 22:20 

Зарегистрирован: Понедельник, 09 Ноябрь, 2009 17:29
Сообщения: 904
Откуда: Россия, Питер
Геннадий Тышов писал(а):
Каким графическим оператором обеспечивается прием команды от другого параллельного процесса?

Можно так:
Вложение:
ab.png
ab.png [ 25.53 КБ | Просмотров: 14903 ]


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рисунок из книг(и)
СообщениеДобавлено: Вторник, 12 Март, 2013 09:07 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5851
Откуда: Москва
У меня нет никаких возражний против предложения Эдуарда Владимировича Ильченко.

=========================================

В качестве комментария добавлю:

В технологии Графит-Флокс не используются операции Передать данные и Получить данные.
Это объясняется (в частности) тем, что все идентификаторы в Графит-Флоксе глобальные. Поэтому их не надо пересылать и принимать. Они всегда доступны.

Разумеется, решение о глобальности идентификаторов является частным случаем (используемым в НПЦАП), который не претендует на широкое применение.

Предложение Эдуарда Владимировича полезное, так как оно охватывает общий случай.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рисунок из книг(и)
СообщениеДобавлено: Вторник, 12 Март, 2013 12:40 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 631
Откуда: Россия, Орёл
Я тоже полностью поддержу предложение Эдуарда Владимировича.
Чем же ещё обозначать межпроцессное взаимодействие, как не операциями ввода-вывода...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рисунок из книг(и)
СообщениеДобавлено: Вторник, 12 Март, 2013 13:40 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Илья Ермаков писал(а):
Я тоже полностью поддержу предложение Эдуарда Владимировича.
Чем же ещё обозначать межпроцессное взаимодействие, как не операциями ввода-вывода...

Присоединяюсь. Считаю удобным и естественным.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рисунок из книг(и)
СообщениеДобавлено: Вторник, 12 Март, 2013 14:28 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Иконы языка ДРАКОН Ввод и Вывод прекрасно позволяют изображать
межпроцессное взаимодействие путём обмена сообщений.

Вывод - это отправка сообщения другому процессу.
Ввод - ожидание сообщения от другого процесса.


Часто бывает удобно отправлять сообщения асинхронно. То есть без ожидания, когда процесс-приёмник получит сообщение.
Пример: оператор send языка Erlang.

А вот при получении сообщения можно и подождать.
Пример: оператор receive языка Erlang.

Хорошее объяснение здесь:
http://learnyousomeerlang.com/the-hitch ... oncurrency


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Рисунок из книг(и)
СообщениеДобавлено: Вторник, 12 Март, 2013 14:35 
Аватара пользователя

Зарегистрирован: Вторник, 04 Октябрь, 2011 17:45
Сообщения: 585
Работа с семафором и прочими похожими объектами синхронизации - это тоже обмен сообщениями.

Вывод - мы "сигналим" семафор, т.е. отправляем сообщение другому процессу.
Ввод - мы "ждём" на семафоре, т.е. ожидаем сообщения от другого процесса.

Конечно, данные при использовании семафора не передаются.
Для этого потребуются дополнительные средства.

Вот примеры из некоторых популярных API:

Икона Вывод, отправка сообщения:
Windows: SetEvent
.NET: EventWaitHandle.Set
pthread: sem_post

Икона Ввод, ожидание сообщения:
Windows: WaitForSingleObject
.NET: WaitHandle.WaitOne
pthread: sem_wait


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

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


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

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


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

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2008-2024, участники конференции «DRAKON.SU», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB