DRAKON.SU https://forum.drakon.su/ |
|
Рисунок из книг(и) https://forum.drakon.su/viewtopic.php?f=62&t=4275 |
Страница 1 из 1 |
Автор: | ==== [ Воскресенье, 03 Март, 2013 10:10 ] |
Заголовок сообщения: | Рисунок из книг(и) |
Замечание ко книгам В.Д. Паронджанова. Вложение: ПараллельнаяРаботаАлгоритмов.png Процесс В останавливается в результате выполнения в алгоритме процесса А иконы ПараллельныйПроцесс с командой Останов, т.е. выдается команда из процесса А в Процесс В.Влияния процесса В на процесс А отсутствует. Предлагаю в рисунке линию взаимодействия по команде Останов выполнить с направлением стрелки от процесса А к процессу В. Владимир Даниелович, по возможности, приведите примеры Дракон-схем алгоритма параллельного процесса, принимающего команды от другого параллельного процесса для различных команд: Порождение, Запуск, Управление, Останов, Ликвидация с реализацией: 1. иконами ПараллельныйПроцесс, 2. с взаимодействием параллельных процессов, обменивающихся сообщениями, т.е. иконы Вывод и Ввод, 3. с использование глобальных переменных - икона Полка. Предполагаю, команда Порождение и возможно Ликвидация направляются не к параллельному процессу В, а к диспетчеру системы реального времени. |
Автор: | Владислав Жаринов [ Воскресенье, 03 Март, 2013 10:30 ] |
Заголовок сообщения: | Re: Рисунок из книг(и) |
Да. Здесь как бы неявно предполагается, что идёт передача управления (вызов/возврат). ![]() |
Автор: | Владимир Паронджанов [ Воскресенье, 03 Март, 2013 12:51 ] |
Заголовок сообщения: | Re: Рисунок из книг(и) |
Геннадий Тышов писал(а): Замечание ко книгам В.Д. Паронджанова. Процесс В останавливается в результате выполнения в алгоритме процесса А иконы ПараллельныйПроцесс с командой Останов, т.е. выдается команда из процесса А в Процесс В. Влияния процесса В на процесс А отсутствует. Предлагаю в рисунке линию взаимодействия по команде Останов выполнить с направлением стрелки от процесса А к процессу В. Геннадий Николаевич, Вы правы, а я не прав. Направление стрелки надо изменить как Вы сказали. Впрочем, эта ошибка не имеет неприятных последствий, так как это ошибка в рисунке, но не в идеологии. Короче, эта ошибка типа "мелкая опечатка", которая ни на что не влияет. Но ее (как любую опечатку) желательно исправить. Попутно сделаю Пояснение.
— по команде Останов от алгоритма А; — без команды Останов. Имеется в виду, что В работает до того момента, когда он выполнит свою задачу и останавливается. Можно сказать, что он "умирает" естественной смертью, а не потому, что получил приказ "Умри" (Останов) от алгоритма А. ================================ На остальные вопросы отвечу позже, после того как внимательно прочитаю и подумаю. |
Автор: | Владимир Паронджанов [ Понедельник, 04 Март, 2013 09:26 ] |
Заголовок сообщения: | Re: Рисунок из книг(и) |
Привожу цитату из моей книги "Учись писать, читать и понимать алгоритмы... ", стр. 219, 220. Цитата: §15. КРАТКОЕ СООБЩЕНИЕ ДЛЯ ПРОГРАММИСТОВ На рис. 140, 142–145 показаны операторы реального времени: «пауза», «пуск таймера», «синхронизатор», «период», а также цикл ЖДАТЬ. Эти операторы нарисованы внутри алгоритмов. Поэтому может создаться впечатление, что они реализуются этими алгоритмами (то есть прикладными программами реального времени). Но это не так. На самом деле перечисленные операторы реализуются совместно: прикладной программой реального времени; дракон-диспетчером, входящим в состав операционной системы реального времени. Когда в прикладной программе встречается оператор «пауза», происходят события, не показанные на наших рисунках. А именно, выход из прикладной программы и передача управления в дракон-диспетчер (с одновременной передачей параметра, записанного в иконе «пауза»). Получив параметр, диспетчер отсчитывает время, указанное в паузе. Когда время истечет, диспетчер возвращает управление в прикладную программу – в точку, расположенную после иконы «пауза». Иными словами, всякий раз, когда на рисунке алгоритма изображена пауза происходят два события: выход из прикладной программы (в начале паузы); вход в прикладную программу (в конце паузы). Рассмотрим еще один пример – оператор «период». Длительность периода отсчитывает не прикладная программа на рис. 144, а дракон-диспетчер, входящий в состав операционной системы реального времени. Оператор «период» означает выход из прикладной программы. Управление переходит к дракон-диспетчеру (с одновременной передачей параметра 4с). Через каждые 4 секунды дракон-диспетчер передает управление в начало цикла ЖДАТЬ (точка Z на рис. 144). Если все три условия дают ответ «нет», оператор «период» возвращает управление в дракон-диспетчер. Таким образом, функционирование цикла ЖДАТЬ обеспечивается совместными усилиями прикладной программы и дракон-диспетчера. Этот вывод относится ко всем операторам реального времени. На рисунках показаны алгоритмы, которые имеют одно начало (один вход) и один конец (один выход). В действительности программы реального времени имеют много входов и много выходов. Дополнительные входы и выходы появляются всякий раз, когда в алгоритм добавляется оператор пауза или период. Но эти дополнительные входы и выходы на рисунках не показаны. Они не показаны из эргономических соображений – чтобы не загромождать рисунок. ПОЯСНЕНИЕ Участники форума (наверно) привыкли к тому, что ДРАКОН дает точную фотографию всех маршрутов алгоритма. Поэтому иногда говорят, что ДРАКОН — это маршрутный язык. Это не совсем так. А применительно к программам реального времени — СОВСЕМ НЕ ТАК. 1. Когда это эргономически необходимо, ДРАКОН дает точную фотографию маршрутов. 2. В программах реального времени (в ряде случаев) ситуация обратная. В этом случае эргономически необходимо СПРЯТАТЬ (УБРАТЬ С ГЛАЗ ДОЛОЙ) служебные передачи управления между прикладной программой и дракон-диспетчером. Именно об этом идет речь в цитате, приведенной выше. ================================= Продолжение следует |
Автор: | ==== [ Воскресенье, 10 Март, 2013 12:25 ] |
Заголовок сообщения: | Re: Рисунок из книг(и) |
Владимир Даниелович, все таки остается не понятно, как в Драконе выглядит алгоритм параллельного процесса, принимающего команды (на рисунке процесс В), в частности для команд: Порождение, Запуск, Управление, Останов, Ликвидация. Создается впечатление, что язык Дракон не обладает полнотой средств для изображения алгоритма параллельного процесса, принимающего команды от другого процесса. |
Автор: | Владимир Паронджанов [ Понедельник, 11 Март, 2013 09:00 ] |
Заголовок сообщения: | Re: Рисунок из книг(и) |
Геннадий Тышов писал(а): Создается впечатление, что язык Дракон не обладает полнотой средств для изображения алгоритма параллельного процесса, принимающего команды от другого процесса. В книге "Учись" сказано на стр. 227: Цитата: §5. КОМАНДЫ УПРАВЛЕНИЯ ПАРАЛЛЕЛЬНЫМИ ПРОЦЕССАМИ К этому списку при необходимости можно добавить ЛиквидацияКоманды управления пишут на верхнем этаже иконы «параллельный процесс». Ниже представлен перечень команд управления: Пуск Осуществляет пуск параллельного процесса Останов Осуществляет останов параллельного процесса Стоп Осуществляет приостановку параллельного процесса Рестарт Осуществляет повторный пуск приостановленного параллельного процесса Геннадий Николаевич, если Вы пришли к выводу, что этого недостаточно, следует добавить то, что Вы считаете правильным. ======================== Чтобы понять мою позицию, следует учесть это: viewtopic.php?p=78487#p78487 (одно сообщение). В особенности пункты 4 и 5. |
Автор: | ==== [ Понедельник, 11 Март, 2013 18:09 ] |
Заголовок сообщения: | Re: Рисунок из книг(и) |
Владимир Паронджанов писал(а): Геннадий Николаевич, если Вы пришли к выводу, что этого недостаточно, следует добавить то, что Вы считаете правильным. Владимир Даниелович, да, этого недостаточно, а личного опыта у меня нет. Каким графическим оператором обеспечивается прием команды от другого параллельного процесса? Как в среде Графит-Флокс изображается алгоритм параллельного процесса принимающий команду от другого параллельного процесса? Если это возможно, или рисунок из одной из книг. |
Автор: | Владимир Паронджанов [ Понедельник, 11 Март, 2013 19:56 ] |
Заголовок сообщения: | Re: Рисунок из книг(и) |
Геннадий Тышов писал(а): Каким графическим оператором обеспечивается прием команды от другого параллельного процесса? Геннадий Тышов писал(а): Как в среде Графит-Флокс изображается алгоритм параллельного процесса принимающий команду от другого параллельного процесса? Если это возможно, или рисунок из одной из книг. В Графит-Флоксе прием команды от другого параллельного процесса не используется. Используется только выдача команды. Этого достаточно (для задач НПЦАП). Предположим, выдана команда "Пуск В". По этой команде запускается параллельный процесс В. Предположим, выдана команда "Останов В". По этой команде останавливается параллельный процесс В. Таким образом, в Графит-Флоксе не используется операция "Прием". Примеры даны здесь и далее: viewtopic.php?p=61683#p61683 Читать до сих пор (до §6). Дальше можно не читать. Цитата: §6. АЛЬТЕРНАТИВНЫЙ СПОСОБ ИЗОБРАЖЕНИЯ
ПАРАЛЛЕЛЬНЫХ ПРОЦЕССОВ |
Автор: | Ильченко Эдуард [ Понедельник, 11 Март, 2013 22:20 ] |
Заголовок сообщения: | Re: Рисунок из книг(и) |
Геннадий Тышов писал(а): Каким графическим оператором обеспечивается прием команды от другого параллельного процесса? Можно так: Вложение:
|
Автор: | Владимир Паронджанов [ Вторник, 12 Март, 2013 09:07 ] |
Заголовок сообщения: | Re: Рисунок из книг(и) |
У меня нет никаких возражний против предложения Эдуарда Владимировича Ильченко. ========================================= В качестве комментария добавлю: В технологии Графит-Флокс не используются операции Передать данные и Получить данные. Это объясняется (в частности) тем, что все идентификаторы в Графит-Флоксе глобальные. Поэтому их не надо пересылать и принимать. Они всегда доступны. Разумеется, решение о глобальности идентификаторов является частным случаем (используемым в НПЦАП), который не претендует на широкое применение. Предложение Эдуарда Владимировича полезное, так как оно охватывает общий случай. |
Автор: | Илья Ермаков [ Вторник, 12 Март, 2013 12:40 ] |
Заголовок сообщения: | Re: Рисунок из книг(и) |
Я тоже полностью поддержу предложение Эдуарда Владимировича. Чем же ещё обозначать межпроцессное взаимодействие, как не операциями ввода-вывода... |
Автор: | Степан Митькин [ Вторник, 12 Март, 2013 13:40 ] |
Заголовок сообщения: | Re: Рисунок из книг(и) |
Илья Ермаков писал(а): Я тоже полностью поддержу предложение Эдуарда Владимировича. Чем же ещё обозначать межпроцессное взаимодействие, как не операциями ввода-вывода... Присоединяюсь. Считаю удобным и естественным. |
Автор: | Степан Митькин [ Вторник, 12 Март, 2013 14:28 ] |
Заголовок сообщения: | Re: Рисунок из книг(и) |
Иконы языка ДРАКОН Ввод и Вывод прекрасно позволяют изображать межпроцессное взаимодействие путём обмена сообщений. Вывод - это отправка сообщения другому процессу. Ввод - ожидание сообщения от другого процесса. Часто бывает удобно отправлять сообщения асинхронно. То есть без ожидания, когда процесс-приёмник получит сообщение. Пример: оператор send языка Erlang. А вот при получении сообщения можно и подождать. Пример: оператор receive языка Erlang. Хорошее объяснение здесь: http://learnyousomeerlang.com/the-hitch ... oncurrency |
Автор: | Степан Митькин [ Вторник, 12 Март, 2013 14:35 ] |
Заголовок сообщения: | Re: Рисунок из книг(и) |
Работа с семафором и прочими похожими объектами синхронизации - это тоже обмен сообщениями. Вывод - мы "сигналим" семафор, т.е. отправляем сообщение другому процессу. Ввод - мы "ждём" на семафоре, т.е. ожидаем сообщения от другого процесса. Конечно, данные при использовании семафора не передаются. Для этого потребуются дополнительные средства. Вот примеры из некоторых популярных API: Икона Вывод, отправка сообщения: Windows: SetEvent .NET: EventWaitHandle.Set pthread: sem_post Икона Ввод, ожидание сообщения: Windows: WaitForSingleObject .NET: WaitHandle.WaitOne pthread: sem_wait |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |