Министерство общего и профессионального образования Российской Федерации Пензенский государственный университет
ПРОЕКТИ...
13 downloads
191 Views
625KB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
Министерство общего и профессионального образования Российской Федерации Пензенский государственный университет
ПРОЕКТИРОВАНИЕ И РЕАЛИЗАЦИЯ РАСПРЕДЕЛЕННЫХ СИСТЕМ НА ОСНОВЕ ЛОКАЛЬНОЙ ВЫЧИСЛИТЕЛЬНОЙ СЕТИ
Методические указания к выполнению лабораторных работ
ПЕНЗА 1998
УДК 681.324
П 79 Даны методические указания к выполнению шести лабораторных работ, связанных с проектированием и реализацией распределенных систем на основе локальной вычислительной сети (ЛВС). Целью первой работы является изучение сетевых моделей как средства спецификации, верификации и проектирования систем с параллельными процессами. Цель второй работы - приобретение навыков построения прототипов распределенных систем на основе ЛВС с использованием сетевых моделей. Тематика последних четырех работ связана с использованием протокола IPX. Для работы с IPX рекомендуется использовать библиотеку функций NetWare C Interface for DOS фирмы Novell. При выполнении лабораторных работ могут использоваться языки Паскаль, Си, Си++. Приводится список дополнительных тем лабораторных и курсовых работ. Методические указания подготовлены на кафедре "Вычислительная техника" и предназначены для студентов специальности 22.05, изучающих дисциплину "Системотехника, вычислительные комплексы и сети ЭВС", а также для студентов специальности 22.01, изучающих дисциплину "Вычислительные комплексы, системы и сети". Составитель В.Н.Дубинин Р е ц е н з е н т В.Д.Былкин, канд. техн. наук, доц. кафедры "Периферийные средства вычислительной техники" Пензенского технологического института ВВЕДЕНИЕ В настоящее время широкое распространение получили локальные вычислительные сети (ЛВС), позволяющие интегрировать аппаратные, программные и информационные ресурсы узлов, входящих в сеть [13-14,17]. На основе ЛВС создаются распределенные вычислительные, информационные, управляющие и кон-
2
тролирующие системы различного назначения, а также системы передачи данных [1]. Одна из наиболее распространенных и популярных ныне ЛВС - сеть Ethernet. В качестве метода доступа к среде передачи (коаксиальному кабелю) в ней используется протокол CSMA/CD. Сетевая архитектура ЛВС часто строится на основе протоколов IPX/SPX. Стандарт Ethernet распространяется теперь на такие среды передачи, как оптическое волокно и неэкранированная витая пара. Самый новый из стандартов Ethernet - стандарт 802.3 100BaseT Fast Ethernet, определяющий скорость передачи 100 Мбит/с. К последним разрабатываемым стандартам Ethernet относится стандарт 1000BaseT Gigabit Ethernet, определяющий скорость передачи 1 Гбит/с [18]. Динамика работы распределенных систем характеризуется параллельностью и асинхронностью протекающих в системе процессов, сложностью межпроцессных взаимодействий [11]. Вышеизложенное определяет актуальность данных методических указаний, ориентированных на получение студентами знаний и навыков по проектированию и реализации распределенных систем на основе ЛВС. Методические указания включают описание шести лабораторных работ. Для каждой лабораторной работы приводятся варианты лабораторных заданий. Целью первой работы является изучение сетей Петри и их модификаций как средства спецификации, верификации и проектирования систем с параллельными процессами, построение и исследование сетевой модели конкретной вычислительной системы или системы параллельных процессов. Цель второй работы - приобретение навыков построения прототипов распределенных систем на основе ЛВС с использованием сетевых моделей. Предлагаемая технология создания распределенных систем включает разработку сети процессов, протекающих в системе, и оптимальную "раскладку" процессов по узлам. Для выполнения первых двух лабораторных работ используется комплекс программ для графического моделирования расширенных
3
сетей Петри ("Петрис"), разработанный на кафедре "Вычислительная техника" Пензенского государственного университета [20,24]. Тематика последних четырех работ связана с использованием протокола IPX (Internetwork Packet Exchange) - межсетевого протокола передачи пакетов [11]. Данный протокол используется в сетевом программном обеспечении Novell и является реализацией уровня дейтаграмм. Уровень дейтаграмм соответствует сетевому уровню (network layer) семиуровневой модели вычислительной сети, разработанной Международной организацией стандартизации (МОС). Протокол IPX широко применяется в различных ЛВС, в том числе и в популярной кабельной ЛВС Ethernet. Для упрощения использования протокола IPX в лабораторном практикуме рекомендуется использовать библиотеку функций NetWare C Interface for DOS фирмы Novell, описанную, например, в работе [14]. В случае отсутствия данной библиотеки можно использовать более низкоуровневый интерфейс для работы с функциями протокола IPX , непосредственно загружая в регистр BX код выполняемой функции. При этом необходимо предварительно определить точку входа API драйвера IPX/SPX, используя мультиплексное прерывание INT 2Fh. При выполнении лабораторных работ могут использоваться языки Си и Си++, а также язык Паскаль, поскольку имеется версия библиотеки NetWare C Interface for DOS, адаптированная для языка Паскаль. В результате выполнения работ, связанных с протоколом IPX, студенты должны изучить функции протокола IPX для открытия и закрытия сокетов, приема и передачи дейтаграмм, планирования и отмены событий, приобрести навыки использования данных функций при разработке сетевых приложений, в частности, для реализации процедур передачи данных в ЛВС с использованием механизма квитирования и тайм-аутов. Приводится довольно большой список дополнительных тем лабораторных и курсовых работ, которые при необходимости могут быть детально проработаны.
4
Лабораторная работа N 1 ИССЛЕДОВАНИЕ СЕТЕВЫХ МОДЕЛЕЙ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ С ПАРАЛЛЕЛЬНЫМИ ПРОЦЕССАМИ Цель работы: изучить сети Петри и их модификации, функционирование сетевых моделей, сетевые модели вычислительных систем с параллельными процессами, исследовать их с использованием методов имитационного моделирования и построения графа достижимых маркировок. Порядок выполнения работы 1. Изучить сети Петри и методы их анализа. 2. Изучить основные приемы работы с графическим редактором и интерпретатором, а также конструктором графа достижимых маркировок (ГДМ) сетевых моделей системы "Петрис". 3. Изучить функционирование заданной системы с параллельными процессами. 4. Построить сетевую модель заданной системы с параллельными процессами. 5. Запустить графическую оболочку системы "Петрис". 6. Сформировать в графическом редакторе сетевую модель заданной системы с параллельными процессами. 7. Установить режим пошаговой интерпретации и изучить функционирование сетевой модели, запуская вручную поочередно те или иные переходы. 8. Установить демонстрационный режим автоматической интерпретации и пронаблюдать автоматическое функционирование сетевой модели, состоящее в запуске переходов и передвижении меток на экране монитора.
5
9. Распечатать или срисовать с экрана содержимое файлов таблицы позиций (.POS) и таблицы переходов (.TR). 10. Установить имитационный режим автоматической интерпретации и запустить процесс интерпретации сетевой модели. Число срабатываний переходов положить равным 10 000. 11. Распечатать или срисовать с экрана содержимое полученных в результате выполнения п.10 файлов таблиц статистики о позициях (.PST) и о переходах (.TST). 12. Проанализировать содержимое файлов таблиц статистики о позициях и переходах и сделать выводы о свойствах сетевой модели, а также системы параллельных процессов. 13. Построить ГДМ для заданной сетевой модели с помощью конструктора ГДМ. При построении ГДМ использовать автоматический режим. 14. Распечатать или срисовать с экрана содержимое следующих полученных в результате выполнения п.13 файлов: .MAR - файл достижимых маркировок; .GDS - файл структуры ГДМ. 15. На основе полученных в п.14 данных построить графическое представление ГДМ. 16. Проанализировать полученный ГДМ и сделать выводы о свойствах сетевой модели, а также системы параллельных процессов. 17. Подготовить отчет о проделанной работе. Примечание 1. П.п. 1-4, 8, 15-17 выполняются в домашних условиях. Примечание 2. При облегченном варианте возможно исходное задание не системы параллельных процессов, а ее сетевой модели непосредственно.
6
Содержание отчета 1) Титульный лист; 2) задание; 3) содержательное описание системы с параллельными процессами; 4) графическое представление сетевой модели; 5) описание сетевой модели; 6) таблицы позиций и переходов; 7) таблицы статистики о позициях и переходах; 8) таблицы достижимых маркировок и дуг ГДМ; 9) графическое представление ГДМ; 10) выводы о свойствах сетевой модели и системы с параллельными процессами. Основные сведения и методические указания Структура сетей Петри Сеть Петри (СП) - это двудольный ориентированный граф, включающий вершины двух типов - позиции и переходы [2-3,1011]. Графически позиции изображаются кружками, а переходы прямоугольниками. В позиции может находиться одна или несколько меток, графически отображаемых точками. Число меток в позиции называется маркировкой позиции. Маркировка позиции p обозначается как M(p). Маркировка всех позиций в совокупности называется маркировкой сетевой модели. Маркировка сетевой модели часто представляется вектором маркировки. Начальную маркировку сетевой модели обозначим как M0. Для увеличения описательной и моделирующей мощности в определение сети Петри вводятся модификации. Формальное описание сетевых моделей, используемых в системе "Петрис", можно найти в работах [20,24]. Основная интерпретация сетей Петри для моделирования систем дается в терминах событий и условий. Переходы сетевой модели интерпретируются как события, входные позиции перехода - как условия возникновения события (пред-условия), выходные позиции − как условия, возникающие после совершения события (пост-условия).
7
Функционирование сетей Петри Сетевая модель функционирует, переходя от одной маркировки к другой. Текущая маркировка сети Петри изменяется в результате срабатывания переходов. В один момент времени может сработать только один из разрешенных переходов (какой именно в сетях Петри не определяется). Переход разрешен, если каждая из его входных позиций содержит хотя бы одну метку. При срабатывании перехода маркировка сети изменяется следующим образом: из входных позиций перехода удаляется по одной метке, а в выходные − добавляется по одной. Свойства сетевых моделей Свойства СП подразделяются на две группы: 1) определяющие активность сети; 2) свойства функций маркировок. Маркировка M' достижима в данной сетевой модели из маркировки M, если существует последовательность срабатывания переходов, в результате которой маркировка М меняется на М'. Маркировка M' называется тупиковой, если при этой маркировке нет ни одного разрешенного перехода. Переход t сетевой модели называется живым, если из любой маркировки, достижимой из начальной, существует последовательность срабатывания, включающая переход t. Сетевая модель является живой, если живыми являются все ее переходы. Переход t сетевой модели называется потенциально живым, если существует достижимая от начальной разметки маркировка, при которой переход может сработать. Переход t сетевой модели называется мертвым, если он не является потенциально живым.
8
Позиция сетевой модели называется k-ограниенной (k>0), если для любой достижимой из M0 маркировки M(p) ≤ k. Сетевая модель, в которой все позиции k-ограничены, называется kограниченной. Если сеть 1-ограничена, то она называется безопасной. Основным методом для определения свойств сетевых моделей в данной лабораторной работе является метод построения графа достижимых маркировок (ГДМ). Граф достижимых маркировок Граф достижимых маркировок (ГДМ) сетевой модели N есть ориентированный граф G = (V,E,L), где V − множество вершин, равное множеству достижимых маркировок сетевой модели; Е − множество дуг такое, что (Mi,Mj) ∈ E, если маркировка Mj непосредственно достижима из маркировки Mi; L:E->T − функция разметки дуг именами переходов такая, что L(Mi,Mj)=t, если маркировка Мj непосредственно достижима из маркировки Mi при срабатывании перехода t. Исследование графа достижимых маркировок Анализ свойств сетевой модели по ГДМ дает наиболее полную характеристику ее поведения. Рассмотрим некоторые свойства сетевой модели, которые могут быть получены на основе визуального анализа ГДМ. Маркировка М' достижима в сети N от маркировки М, если в ГДМ имеется путь от вершины, представляющей маркировку М, к вершине, представляющей маркировку М'. Безопасность и ограниченность определяются на основе просмотра множества достигнутых маркировок. Любая достижи-
9
мая в безопасной сети маркировка представляет собой вектор из 0 и 1. Переход t живой при маркировке М, если из любой вершины ГДМ существует путь, содержащий дугу, помеченную t. Переход t условно-живой при маркировке М, если в ГДМ всегда можно найти маршрут, в котором переход t встречался бы сколь угодно большое наперед заданное число раз. Переход t частично-мертвый при маркировке М, если в ГДМ нет такого маршрута, начинающегося из М, в котором переход t встречался бы сколь угодно большое число раз. Переход t мертвый при маркировке М в сети N, если в ГДМ нет пути, где переход t появился бы хотя бы один раз. Тупиковой маркировке в сетевой модели соответствует висячая вершина в ГДМ. Определение свойств сетевой модели на основе результатов интерпретации Под интерпретацией сетевой модели понимается процесс передвижения меток по ее элементам в соответствии с правилами функционирования сети. В ходе интерпретации в системе "Петрис" собирается статистика о позициях и переходах сетевой модели. Интерпретация сетевой модели не всегда позволяет точно определить свойства сетевой модели. Скорее, она позволяет обнаружить невыполнение каких-либо определяемых свойств. Достоверность выводов по результатам интерпретации повышается с увеличением времени моделирования. Примеры интерпретации результатов интерпретации сетевой модели: 1. Если максимальная маркировка какой-либо позиции, зафиксированная в ходе интерпретации, превысила число k, то
10
данная позиция не k-ограниченна и вся сетевая модель не kограниченна. 2. Если какой-либо переход сработал хотя бы один раз, то он не мертвый. 3. Если какой-либо переход давно не срабатывал, то, вероятно, он "умер" и, следовательно, он не живой. Интерпретация свойств сетевых моделей в терминах свойств системы параллельных процессов В качестве примера ниже приведены три правила: 1. Если сетевая модель живая, то представляемая ею система параллельных процессов свободна от тупиковых ситуаций. 2. Если сетевая модель имеет один или несколько не живых переходов, то в представляемой ею системе параллельных процессов возможен частичный (локальный) тупик. 3. Если сетевая модель безопасна, то в представляемой ею системе параллельных процессов исключены всякого рода переполнения. Объекты моделирования Объектом моделирования в данной лабораторной работе являются вычислительные системы с параллельными процессами. Особенности каждого конкретного взаимодействия между параллельными процессами определяются задачей синхронизации. Количество различных задач синхронизации неограниченно. Однако некоторые из них являются типовыми. К ним относятся: взаимное исключение, «производители-потребители», «писатели-читатели», «обедающие философы», изучаемые в данной лабораторной работе [21,23].
11
Практическая работа в системе "Петрис" Подробное описание работы с графическим редактором и интерпретатором можно найти в [20,24].
Запуск и загрузка Загрузочный (выполнимый) модуль графического интерпретатора системы "Петрис" имеет имя petris.exe и находится в каталоге x:\petris. В этом же каталоге находится и загрузочный модуль конструктора ГДМ. Его имя gdm.exe. Вызов графического интерпретатора из текущего каталога производится следующим образом: > petris Вызов конструктора ГДМ из текущего каталога может быть осуществлен следующим образом: > gdm [] В квадратные скобки заключена необязательная конструкция. Конструктор ГДМ функционирует в следующих режимах: - режим автоматического построения ГДМ без отображения промежуточных результатов с записью конечных результатов в файлы; - режим пошагового построения ГДМ с отображением промежуточных результатов; - режим определения пути в построенном ГДМ до частично или полностью заданной маркировки. Структура выходных файлов
12
При описании структуры выходных файлов системы "Петрис" используются следующие обозначения: символ # означает перевод на новую строку, скобки {} определяют многократное повторение синтаксической конструкции, заключенной в эти скобки. Если необходимо, приводятся имя и тип поля файла. Имя поля заключено в круглые скобки, а тип поля - в квадратные. Файл таблицы позиций (.POS) Таблица позиций содержит описание всех позиций сетевой модели, включая имя позиции и ее атрибуты. Строка таблицы описывает одну позицию. Структура файла: Число позиций # { Порядковый номер [Целое] Имя позиции [Символьное(6)] Начальная маркировка [Целое] Ограниченность позиции [Целое] # } Файл таблицы переходов (.TR) Таблица переходов содержит описание всех переходов сетевой модели, включая имя перехода и его атрибуты. Строка таблицы описывает один переход. Структура файла: Число переходов # { Порядковый номер [Целое] Имя перехода [Символьное(6)] Приоритет [Целое] Закон распределения времени задержки [Целое]
13
Первый параметр закона [Вещественное] Второй параметр закона [Вещественное] Номер потока случайных чисел [Целое] Вес (метка) перехода [Целое] Вероятность перехода [Вещественное] Номер статистической таблицы [Целое] # } Файл достижимых маркировок (.MAR) В этом файле хранятся все достижимые маркировки соответствующей сетевой модели. Каждая маркировка представляет собой вектор. Структура файла: Число позиций в маркировке # { Номер маркировки Вектор маркировки # } Файл структуры ГДМ (.GDS) В этом файле хранятся все дуги ГДМ. Каждая дуга определяется своим источником и приемником. Каждая запись файла определяет одну дугу. Структура файла: Число дуг ГДМ # {Номер маркировки-источника дуги Номер перехода Номер маркировки-приемника дуги # } Файл таблицы статистики о позициях (.PST)
14
Структура файла: Число позиций # Имя позиции [Символьное(6)] (NameP) Номер позиции [Целое] (NumP) Текущая маркировка позиции [Целое] (Mark) Максимальная маркировка позиции [Целое] (MaxMark) Число входов в позицию [Целое] (NEntry) Число пустых входов [Целое] (NEmptEntr) Средняя маркировка позиции [Вещественное](AvrM) Среднее время пребывания метки в позиции [Вещественное](AvrT) Время последнего изменения маркировки [Вещественное] (OldT) Сумма произведений dTdM [Вещественное](Sum) # } {
Файл таблицы статистики о переходах (.TST) Структура файла: Число переходов # { Имя перехода [Символьное(6)] (NameT) Номер перехода [Целое] (NumT) Число срабатываний перехода [Целое] (NFireT) Номер последнего срабатывания по счету [Целое] (LFire) Текущее содержимое задержки [Целое] (MT) Максимальное содержимое задержки [Целое] (MaxMT) Среднее содержимое задержки [Вещественное](AvrMT) Среднее время задержки [Вещественное](AvrT)
15
Число непустых прерываний перехода [Целое] (NInterr) Время последнего изменения содержимого временной задержки [Вещественное](OldT) Сумма произведений dTdMT [Вещественное](Sum) # } Варианты заданий 1. Задача взаимного исключения [21,23]. 2. Система параллельных процессов с тупиковой ситуацией [21]. 3. Задача "производитель-потребитель" [21]. 4. Задача "писатели-читатели" [21]. 5. Задача об обедающих философах [21,23]. 6. Альтернативно-битовый протокол [21,23]. Остальные варианты могут быть взяты из [10], где приведены варианты около 20 сетевых моделей.
Лабораторная работа N 2 ПОСТРОЕНИЕ ПРОТОТИПОВ РАСПРЕДЕЛЕННЫХ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМ С ИСПОЛЬЗОВАНИЕМ СЕТЕВЫХ МОДЕЛЕЙ Цель работы: приобрести навыки построения прототипов распределенных вычислительных систем (РВС) на основе ЛВС с использованием сетевых моделей. Порядок выполнения работы
16
1. Изучить основные расширения сетей Петри; 2. Изучить работу графического интерпретатора в режиме многомашинной интерпретации сетевых моделей; 3. Изучить принципы построения РВС; 4. Изучить принципы организации конвейерной и параллельной обработки в РВС; 5. Составить сетевую модель, представляющую заданную систему процессов по заданному текстовому описанию; 6. Разбить сетевую модель на фрагменты; 7. Произвести распределение фрагментов по узлам РВС; 8. Запустить графическую оболочку системы "Петрис" на каждом узле РВС; 9. Сформировать на каждом узле РВС с использованием графического редактора фрагмент сетевой модели, соответствующий данному узлу; 10. Запустить на каждом узле РВС графическую интерпретацию сетевых фрагментов в пошаговом режиме; 11. Изучить динамику работы системы процессов в РВС, запуская вручную те или иные переходы; 12. Оформить отчет. Примечание 1. Данная лабораторная работа носит коллективный характер. Перед выполнением работы преподаватель разбивает бригады студентов на группы. В группу входят 3 - 4 бригады. Каждая бригада работает за отдельным компьютером. Группа бригад выполняет п.п.5-7, 11 работы совместно. Примечание 2. П.п. 1 - 7, 12 выполняются в домашних условиях. Содержание отчета
17
1) Тèòóëüíûé лист; 2) задание; 3) структура РВС; 4) текстовое описание системы процессов, протекающих в РВС; 5) сетевая модель системы процессов; 6) разбиение сетевой модели на фрагменты; 7) характеристики РВС (степень параллелизма выполнения процессов).
Основные сведения РВС - это целевая система, представляющая совокупность обрабатывающих узлов с распределенными по ним данными, процессами обработки информации и управления, и взаимодействующих через каналы связи путем обмена сообщениями [1]. Динамика работы РВС характеризуется параллельностью и асинхронностью протекающих в системе процессов, сложностью межпроцессорных взаимодействий [11-12,21,23-24]. В данной лабораторной работе РВС реализуется на аппаратной платформе ЛВС Ethernet, имеющей в простом варианте шинную топологию и предоставляющей пользователю широкий спектр коммуникационных услуг (рис. 1). Ì î í î êàí àë
Óçåë 1
Óçåë 2
•••
Рèñ. 1. Сòðóêòóðà ËÂÑ ñ шèííîé тîïîëîãèåé
18
Óçåë N
В РВС возможна и целесообразна организация конвейерной и параллельной обработки. Конвейерная обработка сводится к одновременному выполнению нескольких процессов, каждый из которых выполняет свой этап обработки данных, организуемых в поток. При этом по завершению "своей" работы над данными процесс передает их для дальнейшей обработки своему последователю. При конвейеризации обработки данные обрабатываются последовательно, а процессы выполняются параллельно (рис. 2). È ñõî äí û å äàí í û å
Ï ðî ì åæóòî ÷í û å äàí í û å Ï ðî öåññ 1
...
Ðåçóëüòàò
Ï ðî öåññ N Î ÷åðåäü N
Î ÷åðåäü 1
Рèñ. 2. Кîíâåйåðíàÿ оáðàáîòêà дàííûõ
Суть параллельной обработки состоит в одновременном выполнении нескольких процессов обработки данных на различных процессорах (ЭВМ, узлах). При этом считается, что данные независимы друг от друга. В качестве основы построения алгоритмов функционирования РВС в целом и каждого узла в отдельности используются сетевые модели системы "Петрис". Технология создания РВС включает разработку сети процессов, протекающих в системе, и оптимальную "раскладку" процессов по узлам РВС. Под процессом понимается система действий, реализующих определенную функцию, и связанную с исполнением программы на процессоре. Сеть процессов отражает отношения между процессами. Основными связями в сети процессов являются последовательная и параллельная связь. Сеть процессов может быть выражена в текстовом виде (в виде программы). Для этого используются символьные
19
операторные скобки SEQ-END и PAR-END. Процессы, заключенные в скобки SEQ-END, выполняются последовательно, а процессы, заключенные в скобки PAR-END, − параллельно. Система процессов, заключенная в скобки PAR-END, считается выполненной, если выполнены все процессы в этих скобках. Скобки PAR-END служат управляющими операторами, причем открывающая скобка PAR служит для запуска параллельных процессов, а закрывающая скобка END − для их синхронизации. Пример системы последовательных процессов SEQ Process 1; Process 2; END Пример системы параллельных процессов: PAR Process 3; Process 4; END Пример системы последовательно-параллельных процессов: SEQ Process 5; PAR Process 6; Process 7; END
20
Process 8; END Для представления циклической структуры используется конструкция: CYCLE-END, а для представления источника заявок − GENERATE. Существует множество критериев оптимальности распределения процессов по узлам РВС, в их числе максимальная степень параллелизма выполнения процессов, минимум накладных расходов на межузловые обмены, минимум стоимости системы и т.д. В лабораторной работе будем использовать первый из перечисленных критериев. Для достижения оптимального размещения в этом случае будем пользоваться следующими правилами: 1) процессы, выполняемые параллельно, целесообразно размещать на разных узлах; 2) процессы, выполняемые последовательно, целесообразно размещать на одном узле. При этом к нулю сводятся накладные расходы на межпроцессный обмен через каналы связи. (Прим.: Это правило недействительно для организации конвейерной обработки). Сеть (система) процессов может быть представлена в виде сетевой модели и реализована в системе "Петрис". Преимущества сетей Петри и их модификаций как алгоритмической основы для построения прототипов РВС заключается в возможности описания параллельных процессов, протекающих в системе; в возможности представления алгоритмов на различных уровнях абстракции; ясности и понятности сетевой модели, что делает ее удобной для использования в учебном процессе. Наличие в сетевой модели ингибиторных дуг ставит ее по вычислительной мощности в один ряд с машинами Тьюринга. Каждый процесс представляется следующим фрагментом сетевой модели, приведенным на рис. 3.
21
p1
t1
p2
Рèñ. 3. Фðàãìåíò сåòåâîé мîäåëè, пðåäñòàâëÿþùèé прîöåññ
На данном рисунке переход t1 - переход, представляющий собственно процесс, позиция p1 - условие готовности процесса к выполнению, позиция p2 - условие окончания выполнения процесса. Для представления цикличности процесса следует совместить позиции p1 и p2. Позиции p1 и p2 в системе "Петрис" могут быть входным и выходным портом соответственно. Для распараллеливания процессов используется фрагмент сетевой модели, представленный на рис. 4. t2
Рèñ. 4. Фðàãìåíò сåòåâîé мîäåëè дëÿ рàñïàðàëëåëèâàíèÿ пðîöåññîâ
На данном рисунке переход t2 соответствует скобке PAR. Для синхронизации параллельных процессов используется фрагмент сетевой модели, представленный на рис. 5.
22
t3
Рèñ. 5. Фðàãìåíò сåòåâîé мîäåëè дëÿ сèíõðîíèçàöèè пðîöåññîâ
На данном рисунке переход t3 соответствует скобке END в системе скобок PAR-END. Источник запросов (данных) определяет фрагмент сетевой модели, представленный на рис. 6.
Рèñ. 6. Фðàãìåíò сåòåâîé мîäåëè дëÿ пðåäñòàâëåíèÿ иñòî÷íèêà зàïðîñîâ
Для возможности взаимодействий (путем передачи меток) сетевых фрагментов, расположенных на различных ПЭВМ, в системе "Петрис" используются входные и выходные порты. Под входным портом понимается граничная позиция модуля, в которую поступают метки из других сетевых модулей. Входной порт не имеет входящих дуг. Выходной порт − это граничная позиция модуля, в которую поступают метки из данного модуля для передачи
23
их другим сетевым модулям. Выходной порт не имеет выходящих дуг. Связь между сетевыми модулями организуется на основе глобальных имен входных и выходных портов. Считается, что метки, поступающие в выходной порт, например, с именем Port1 пересылаются (копируются) во входные порты с именем Port1 всех сетевых модулей. При разбиении сетевой модели на фрагменты следует обратить особое внимание на именование входных и выходных портов, поскольку таким образом определяются межфрагментные связи. На рис. 7 в качестве примера представлен сетевой фрагмент в системе "Петрис", имеющий два входных (port1, port2) и пять выходных (port3 - port7) портов. При этом переход t1 представляет элемент синхронизации, переход t2 − некоторый процесс, переходы t3 и t4 − элементы распараллеливания. Представленному сетевому фрагменту присущ недетерминизм вследствие недетерминированности срабатывания переходов t3 и t4, имеющих общую разделяемую позицию p2. Варианты заданий В качестве исходных данных используются следующие варианты текстовых описаний системы параллельных процессов: Вариант 1
Вариант 2
СYCLE
CYCLE
SEQ
PAR Process 1;
Process 1;
Process 1; Process 2;
PAR Process 2;
SEQ Process 3;
SEQ
Process 4;
Process 3; Process 4; END
Вариант 3 GENERATE
END END
24
Process 2; Process 3;
END
END Process 5; END END
Варианты 1 и 3 рассчитаны на 3-4 узла, вариант 2 - на 4-5 узлов. В варианте 3 используется конвейерная обработка данных.
25
26
Лабораторная работа N 3 РАБОТА С СОКЕТАМИ СЕТЕВОГО ПРОТОКОЛА IPX Цель работы: изучить функции IPXOpenSocket и IPXCloseSocket для работы с сокетами протокола IPX, приобрести навыки использования данных функций при разработке сетевых приложений. Порядок выполнения работы 1. Ознакомиться с типами сокетов и операциями над сокетами (открытие, закрытие) в протоколе IPX. 2. Изучить программный интерфейс функций: IPXInitialize - ИНИЦИАЛИЗАЦИЯ ДРАЙВЕРА ПРОТОКОЛА IPX, IPXOpenSocket - ОТКРЫТЬ СОКЕТ, IPXCloseSocket - ЗАКРЫТЬ СОКЕТ. 3. Написать на языке программирования высокого уровня (Паскаль, Си или Си++) программу для открытия и закрытия сокетов. 4. Произвести эксперимент в ЛВС Ethernet по открытию и закрытию сокетов протокола IPX. 5. Оформить отчет о проделанной работе.
Основные сведения Под сокетом понимается логический порт программы, через который она ведет обмен данными с программами, расположен-
27
ными на других станциях. Для идентификации сокетов используются числовые значения. Над сокетами определены две операции: открытия и закрытия. В одной программе может быть открыто несколько сокетов, причем некоторые из них могут использоваться для передачи, а некоторые − для приема пакетов. Для работы с сокетами используются две функции: IPXOpenSocket и IPXCloseSocket для открытия и закрытия сокета, соответственно. Функция IPXInitialize Данная функция получает адрес точки входа для вызова API драйвера протокола IPX и может использоваться для проверки загрузки драйвера IPX. Интерфейс данной функции определен в библиотеке NetWare C Interface следующим образом: BYTE IPXInitialize(void); Возвращаемые значения: 00h - успешное выполнение; F0h - драйвер IPX не установлен. Интерфейс функции IPXInitialize в библиотеке NetWare C Interface, адаптированной для языка Паскаль, определяется таким образом: function IPXInitialize : Word; При использовании низкоуровневого интерфейса для проверки загруженности драйвера IPX необходимо загрузить в регистр AX значение 7А00h и вызвать мультиплексное прерывание INT 2Fh. Если после возврата из прерывания в регистре AL будет значение FFh, драйвер IPX загружен. Адрес точки входа для вызова API драйвера при этом будет находиться в регистровой паре ES:DI. Если же содержимое регистра AL после возврата из прерывания INT 2Fh будет отлично от FFh, драйвер IPX не загружен.
28
Функция IPXOpenSocket Данная функция используется для открытия сокета. Интерфейс функции для открытия сокета определен в библиотеке функций NetWare C Interface следующим образом: int IPXOpenSocket(BYTE *socketNum, BYTE socketType); Параметры: socketNumber - указатель на двухбайтовый массив, содержащий значение сокета или ноль, если требуется получить динамический сокет. socketType - тип сокета (короткоживущий или долгоживущий). Возвращаемые значения: 00h - сокет успешно открыт; FEh - переполнилась таблица сокетов; FFh - сокет уже был открыт раньше. Сокеты бывают короткоживущие и долгоживущие (кодируются соответственно как 00h и FFh). Короткоживущие сокеты освобождаются (закрываются) автоматически после завершения программы. Долгоживущие сокеты можно закрыть только с помощью специально предназначенной для этого функции IPXCloseSocket. Долгоживущие сокеты закрываются при перезагрузке DOS. Такие сокеты больше всего подходят для использования резидентными программами или драйверами. Сокеты от 0 до 4 000h в сети Novell NetWare зарезервированы и не должны использоваться в программном обеспечении пользователей. Сокеты от 4 000h до 8 000h распределяются динамически. В случае, если динамическое распределение сокетов не используется, а задается свой номер сокета, то необходимо также использовать значения в диапазоне от 4 000h до 8 000h. По умолчанию при загрузке оболочки рабочей станции максимально доступно 20 соке-
29
тов. При соответствующей настройке сетевой оболочки можно увеличить это значение до 150. Пример использования функции IPXOpenSocket (для языка Си): unsigned int NumSock=0x6FE7; ... if (IPXOpenSocket((BYTE*)&NumSock,SHORT_LIVED)==0) cout