Изучение организации параллельных вычислительных процессов с помощью библиотек программирования и средств моделирования - Студенческий научный форум

II Международная студенческая научная конференция Студенческий научный форум - 2010

Изучение организации параллельных вычислительных процессов с помощью библиотек программирования и средств моделирования

 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF
Цель работы - изучить проектирование параллельных вычислительных процессов и основные алгоритмы обнаружения конфликтных ситуаций и механизмы предотвращения

Задача: "Голодные птенцы". Есть N птенцов и их мать. Птенцы едят из общей миски, в которой сначала находятся F порций пищи. Каждый птенец съедает порцию еды, спит некоторое время, затем снова ест. Когда кончается еда, птенец, питавшийся последним, зовет мать. Птица наполняет миску F порциями еды и снова ждет, пока миска опустеет. Эти действия повторяются без конца. Представьте птиц процессами и разработайте код, моделирующий их действия. Для синхронизации используйте механизм монитора.

Первоначально была построена сеть Петри, для моделирования использована программа VIPeNET (рис. 1).

Мама птенцов наполняет миску 20-ью порциями еды. При моделировании не показывается процесс наполнения миски, визуально идет некоторая задержка по времени, и 20 порций появляются в миске. Затем, мама спит, и еда из миски распределяется по очереди, между каждым из 5-ти птенцов, до тех пор, пока не закончится вся. Визуально, значение порций в миске уменьшается на единицу, соответственно, по очереди прибавляется число съеденных порций в счетчике каждого птенца. Когда миска становится полностью пустой, процессы птенцов блокируются, и мама наполняет миску следующими 20-ю порциями (есть счетчик количества наполненных мисок). И начинается очередной цикл распределения еды между птенцами. Соответственно этому алгоритму реализован код следующей программы, написанный на Java 2 SE. Интерфейс программы состоит из одного окна (рис. 2).

Процессы наполнения миски и поедания еды из миски птенцами визуально представлены прогресс-барами и сообщениями в текстовом поле. Исходный код программа представляет собой 9 файлов-классов, объединенных в пакете package chick:

1. MainFrame. Фрейм для запуска программы. Содержит метода main

2. EnterFrame. Класс формирует методом CreateGUI() панели, созданные в классах PanelComponent и ComponentBtn.

3. PanelComponent. В этом классе создаются все компоненты пользовательского интерфейса (за исключением кнопок) средствами пакета Swing и AWT: панели, прогресс-бары, метки, текстовое поле, рамки, определяются цвет и тип шрифтов, начальное значение текста.

4. ComponentBtn. В этом классе создаются компоненты кнопок СТАРТ, СТОП и ЗАКРЫТЬ.

5. BoxLayoutUtils. Класс содержит методы для удобной работы блочным расположением компонентов. Используется в классах EnterFrame и PanelComponent.

6. LongProcess. Класс для создания поток и запуска прогресс-баров. Расширяет класс Thread из пакета java.lang.Thread. Точка входа потоков - метод void run().

7. OkAction. Класс - обработчик событий для кнопки СТАРТ (возможно обработка события мышью и с клавиатуры.

8. CancelAction. Класс - обработчик событий для кнопки СТОП. Содержит стандартный пакетный метод actionPerformed для обработки события мышью и метод keyPressed для обработки событий

9. CloseAction. Класс - обработчик событий для кнопки СТОП.

Просмотров работы: 36