Реализация мультимедийных приложений средствами JCSP

Алгебра процессов Хоара как математическое описание синхронизации процессов, а также средства анализа, верификации, исключения тупиков, замыкания. Основное средство синхронизации и взаимодействия процессов. Пример реализации CSP-процесса на Java.

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 15.08.2020
Размер файла 18,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Статья по теме:

Реализация мультимедийных приложений средствами JCSP

Баркова Н.Н., Научно-исследовательский центр новых информационных технологий Орловского государственного технического университета Россия, Орел

Java supports the concept of the monitor for support of synchronization between threads. Use of similar model results in inefficient construction of the large and complex systems. The decision of the given problem is in application Java of library JCSP, using the mathematical theory CSP. In this paper the description of library JCSP, allowing is resulted to build multimedia application without occurrence of deadlocks, livelocks, race hazards etc. Also in this paper the example of use of the given approach is described.

Любое мультимедийное приложение может рассматривать как набор потоков (или процессов), которые взаимодействуют друг с другом. Язык программирования Java [1] имеет возможности многопотокового программирования. Однако, решение использовать данный язык имеет некоторые недостатки [2-5]. Java использует концепцию мониторов для решения вопросов синхронизации потоков. Она легка для понимания, но относительно трудна для применения в сложных системах, т.к. не исключает замыкания потоков, тупиковых состояний, рисков сбоя и т.д. Реализация мультимедийных приложений на Java, таким образом, является довольно трудоемкой задачей.

Алгебра процессов Хоара (CSP) [6] предлагает математическое описание синхронизации процессов, а также средства анализа, верификации, исключения тупиков, замыкания и т.д. CSP - процесс - это компонент, который инкапсулирует структуры данных и алгоритмы для манипулирования этими данными. Окружающий мир не имеет доступ к этим данным и алгоритмам.

В настоящее время существуют две Java-библиотеки, JCSP[2, 5, 7] и CTJ[3, 4, 8], обеспечивающие CSP модель для Java. Обе библиотеки построены поверх модели потоков Java и показывают, что CSP является отличной основой для конкурентного программирования в объектно-ориентированных языках по следующим причинам [9]:

процесс- и канал-ориентированная парадигма является объектно-ориентированной по своей природе;

процессы являются составными, анонимными для других процессов и могут запускаться везде;

каналы являются простыми примитивами синхронизации, которые обеспечивают взаимодействие между конкурентными и распределенными процессами; и др.

Примером процесса в JCSP является любой класс, который реализует интерфейс CSProcess. В этом интерфейсе описан лишь один метод run(), который и определяет поведение процесса. Процесс может иметь несколько "жизней", но они должны выполняться последовательно. Различные экземпляры одного и того же класса-процесса могут действовать параллельно.

Реализацией оператора выбора является класс Alternative. JCSP - обеспечивает пассивный механизм для ожидания того какое событие произошло и несколько способов определения выбора, т.е. не существует некоторого специального опроса. События в CSP являются атомарными. Событие не может быть экземпляром некоторого класса. Примерами событий могут быть успешное завершение процессов, появление прерывания, тайм-аут, передача сообщений между процессами. Выбор в классе Alternative происходит среди некоторого количества охранных событий. JCSP определяет несколько типов охран - альтернативные каналы, таймер, пропуск (этот процесс всегда готов).

Таймер - это объект JCSP, который может использоваться для установки тайм-аута при выборе. Тайм-аут определяется в терминах абсолютного значения времени, а не задержки.

Основным средством синхронизации и взаимодействия процессов являются каналы. Взаимодействие через каналы надежное и быстрое. JCSP поддерживает каналы один-к-одному, один-ко-многим, многие-к-одному и многие-ко-многим. Однако их использование должно быть хорошо обдуманным и аккуратным [5].

Использование библиотеки JCSP рассмотрим на примере, описанном ранее, но предварительно дадим его формальное описание на CSP. Итак, задача заключается в том, чтобы осуществить перелистывание страниц книги. Пользователь выбирает необходимую ему страницу и щелкнув по ней мышью, переходит к ее просмотру. Повторным щелчком вызывается перелистывание данной страницы и переход к следующей. Решение данной задачи на языке CSP выглядело следующим образом:

КНИГА = КНИГА[0],

КНИГА[i:0..N] = (when(i<N) лист[i]->КНИГА[i+1]

|when(i==N) лист[N]->КНИГА

| when (i<=N) щелчок -> демо[i] ->щелчок->КНИГА[i]).

(1)

где КНИГА[i] - процесс описывающий страницу книги, лист[i] - событие перелистывания страницы, демо[i] - событие просмотра страницы, щелчок - событие щелчка кнопки мыши по странице.

При реализации данного процесса в JCSP[7], возникает проблема, которая заключается в определении момента перелистывания страницы. Для решения было предложено добавить в процесс событие от таймера, по которому можно определить, что должно произойти событие лист. Кроме этого, событие таймера можно использовать для определения продолжительности просмотра страницы. Поэтому процесс (1) в терминах алгебры процессов Хоара примет вид:

КНИГА = КНИГА[0],

КНИГА[i:0..N] = (when(i<N) тайм->лист[i]->КНИГА[i+1]

|when(i==N) тайм->лист[N]->КНИГА

| when (i<=N) щелчок -> ДЕМО[i]),

ПРОСМОТР = ПРОСМОТР[0],

ПРОСМОТР[i:0..N] = (when(i<N) тайм->демо[i]->ПРОСМОТР[i]

|when(i<N) щелчок->лист[i]->КНИГА[i+1]

| when (i==N) щелчок -> лист[N]->КНИГА).

(2)

где КНИГА[i] - процесс, описывающий страницу книги, лист[i] - событие перелистывания страницы, демо[i] - событие просмотра страницы, щелчок - событие щелчка кнопки мыши по странице, тайм - событие таймера, ПРОСМОТР[i] - процесс, описывающий просмотр страницы книги.

JCSP содержит набор специальных активных процессов, которые обеспечивают интерфейсы каналов для всех управляющих элементов Java AWT и графических операций. Для описания процесса - КНИГА [i] воспользуемся, например, классом ActivePanel, который является расширением класса Panel и реализует интерфейс CSProcess, т.е. является процессом. Процесс, описывающий поведение книги, может, например, описываться следующим образом:

public class Page extends ActivePanel {

/* . . . переменные, описывающие параметры, необходимые для реализации страницы*/

// Создание экземпляра класса CSTimer, который необходим для установки //времени ожидания

final CSTimer tim = new CSTimer ();

final One2OneChannel myMouseEvent =

One2OneChannel.create (new OverWriteOldestBuffer (1));

public Page(параметры) {

/*. . . инициализация страницы*/

//добавление канала для работы с мышью

this.addMouseEventChannel (myMouseEvent);

}

public void run() {

// . . .

//Создание массива охран, из которых далее будет выбираться //произошедшее событие

final Guard[] g_ = {tim, (AltingChannel)myMouseEvent};

//Создание экземпляра класса альтернатив

final Alternative alt = new Alternative (g_);

tim.setAlarm(tim.read()+interval);

boolean list_=true;

while(list_){

switch (alt.priSelect()){

case 0:

this.listPage();

list_=false;

break;

case 1:

if (((MouseEvent) myMouseEvent.read ()).getID () == MouseEvent.MOUSE_PRESSED){

this.demo();

list_=false;

}

break;

}

}

}

protected void listPage(){

/*действия необходимые для того, чтобы произошло событие лист */

}

private void demo(){

//. . .

// запуск процесса ПРОСМОТР

Demo d=new Demo(this);

d.run();

}

public void paint(Graphics g){

//прорисовка объекта

}

}

Необходимо обратить внимание на описание канала myMouseEvent. В качестве хранилища данных он использует буфер единичной длины. Подобная реализация необходима, чтобы в каждый момент времени в буфере хранилась информация о только что произошедшем событии, т.к. наша модель использует единственное событие мыши - щелчок по кнопке.

При реализации данного и других процессов возникла проблема с определением события в JCSP. Выше уже приводились примеры событий. В нашем случае в качестве события можно рассматривать и успешное завершение некоторого метода. Например, метод listPage() описывает действия, которые происходят при перелистывании страницы. Успешное его завершение показывает, что произошло событие лист.

Процесс ПРОСМОТР по своей структуре практически идентичен процессу КНИГА [i], за исключением того, что он не имеет суперкласса, и будет только реализовывать интерфейс CSProcess.

Хоар Ч. доказал, что процессы подобные (1) и (2) можно представить как последовательную комбинацию процессов. Процесс КНИГА, который управляет работой всех страниц, должен содержать фрагмент кода, подобный следующему:

//создание массива для N страниц

Page[] book = new Page[N];

//создание последовательного процесса

Sequence s=new Sequence();

//создание необходимого количества страниц

for (int i=0; i<N; i++){

book[i]=new Page(параметры);

//добавление страницы к последовательному процессу

s.addProcess(book[i]);

}

/*добавление в последовательный процесс самого себя для создания бесконечной работы*/

s.addProcess(s);

хоар процесс java

Рассмотренный пример показывает реализацию CSP-процесса на Java. JCSP дает возможность разрабатывать многопотоковые системы и обосновывать их в терминах CSP примитивов синхронизации, таких как каналы и события. Кроме этого, использование данной библиотеки позволяет математическую верификацию программ. Разработав некоторую систему с использованием CSP можно легко ее реализовать на JCSP. Решение подобной задачи не повлечет за собой никаких сложностей, т.к. это становится естественным. Результирующий код не только прост для программирования и понимания, но и может быть использован, потому что JCSP гарантирует корректное взаимодействие между конкурентными процессами. Программисту нет необходимости беспокоиться о формальной математической теории, т.к. алгебра процессов Хоара является развитой, хорошо обоснованной и основанной на той математике, которая может быть доступна в тот момент, когда в этом появляется необходимость.

Литература

1. JavaTM 2 SDK, Standard Edition Documentation [Электронный ресурс], 2003. - Режим доступа: http://java.sun.com/j2se/1.4.2/docs/index.html - Загл. с экрана. - Яз. англ.

2. Welch P.H. Process Oriented Design for Java: Concurrency for All / P.H.Welch // Daily News and Information for the Global Grid Community, Vol.1, No.21, 2002.

3. Hilderink G. Communicating Java Threads / G.Hilderink, A.Bakkers, R.van Rein // Proceedings of WoTUG-20 conference Parallel Programming and Java, IOS Press, 1997. - pp.48-76.

4. Hilderink G. Communicating Threads for Java / G.Hilderink, J.Broenink, A.Bakkers // IOS Press, 1999. - pp. 243-261.

5. Schaller N.C. Using Java for Parallel Computing: JCSP versus CTJ, a Comparison / N.C.Schaller, G.H.Hilderink, Welch P.H. // Communicating Process Architectures 2000, Vol.58 of Concurrent Systems Engineering, pp. 205-226. WoTUG, IOS Press (Amsterdam), Sep. 2000.

6. Хоар Ч. Взаимодействующие последовательные процессы: Пер. с анг. / Ч.Хоар. - М.: Мир, 1989. - 264с., ил.

7. Welch P.H. The JCSP Home Page [Электронный ресурс], 1999 / P.H.Welch, P.D.Austin - Режим доступа: http://www.cs.ukc.ac.uk/projects/ofa/jcsp/ - Загл. с экрана. - Яз. англ.

8. Hilderink G.H. The CTJ (Communicating Threads in Java) Home Page [Электронный ресурс], 1998 / G.H.Hilderink. - Режим доступа: http://www.ce.utwente.nl/javapp/ - Загл. с экрана. - Яз. англ.

9. Hilderink G. A Distributed Real-Time Java System Based on CSP / G.Hilderink, A.Bakkers, J.Broenink // IOS Press, 1999. - pp. 229-236.

Размещено на Allbest.ru


Подобные документы

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

    доклад [26,7 K], добавлен 27.12.2013

  • Понятие процесса и потока, характеристика их свойств и особенности создания. Требования к алгоритмам синхронизации, суть взаимного исключения на примере монитора и семафора. Методика изучения элективного курса "Процессы в операционной системе Windows".

    дипломная работа [1,7 M], добавлен 03.06.2012

  • Взаимодействие процессов и потоков в операционной системе, основные алгоритмы и механизмы синхронизации. Разработка школьного курса по изучению процессов в операционной системе Windows для 10-11 классов. Методические рекомендации по курсу для учителей.

    дипломная работа [3,2 M], добавлен 29.06.2012

  • Управление процессами - часть операционной системы, влияющая на функционирование вычислительной машины. Контекст дескриптор процесса и алгоритм его планирования. Средства синхронизации и взаимодействия процессов. Критическая секция, тупики и нити.

    лекция [166,6 K], добавлен 05.02.2009

  • Классификация компьютерной памяти. Использование оперативной, статической и динамической оперативной памяти. Принцип работы DDR SDRAM. Форматирование магнитных дисков. Основная проблема синхронизации. Теория вычислительных процессов. Адресация памяти.

    курсовая работа [1,5 M], добавлен 28.05.2016

  • Реализация детерминированных переходных процессов c погрешностью измерения. Сопоставление корреляционных функций переходных процессов с типовыми по виду их реализаций и перенос областей на данные реализации. Применение реализаций в качестве моделей.

    отчет по практике [454,0 K], добавлен 21.07.2012

  • Рассмотрение проблемы моделирования процессов в Q-схемах – математических схемах, разработанных для формализации процессов функционирования систем массового обслуживания. Разработка моделирующего алгоритма, машинная реализация и математическое описание.

    курсовая работа [781,9 K], добавлен 03.07.2011

  • История разработки многозадачной операционной системы POSIX-стандарта - FreeBSD; описание ее виртуальной памяти, файловой системы, уровня защиты. Описание основных средств синхронизации процессов - сигналов и семафоров. Способы блокировки файлов.

    презентация [584,2 K], добавлен 02.06.2011

  • Разработка приложения, автоматизирующего процесс синхронизации файлов между сменным носителем и каталогом на другом диске. Классы для работы с файловой системой. Интерфейс программы и способы взаимодействия пользователя с ним. Создание новой синхропары.

    курсовая работа [632,0 K], добавлен 21.10.2015

  • Программные средства и системы для создания, автоматизирования технологических процессов. Разработка технологического процесса в системе "Вертикаль". Создание 3D моделей операционных заготовок в системе "Catia", технологической оснастки в "Solid Works".

    дипломная работа [6,1 M], добавлен 25.06.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.