ИНФОРМАТИКА, ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА И УПРАВЛЕНИЕ
УДК 681.3.012
В. И. Волчихин, Н. П. Вашкевич, Р. А. Бикташев
МОДЕЛИ СОБЫТИЙНЫХ НЕДЕТЕРМИНИРОВАННЫХ АВТОМАТОВ ПРЕДСТАВЛЕНИЯ АЛГОРИТМОВ УПРАВЛЕНИЯ ВЗАИМОДЕЙСТВУЮЩИМИ ПРОЦЕССАМИ В МНОГОПРОЦЕССОРНЫХ ВЫЧИСЛИТЕЛЬНЫХ СИСТЕМАХ НА ОСНОВЕ ИСПОЛЬЗОВАНИЯ МЕХАНИЗМА МОНИТОРА1
Аннотация. Целью работы является создание методики формального описания алгоритма управления взаимодействующими параллельными процессами при обмене сообщениями между ними, выполняющимися с использованием механизма монитора, кольцевого буфера и типовой задачи «производители-потребители». В основу работы положен метод событийных недетерминированных автоматов (СНДА), позволяющий представить алгоритм управления в простой и компактной форме в виде системы рекуррентных канонических бескванторных уравнений, описывающих все реализуемые в системе управления частные события. Отличительная особенность метода СНДА заключается в том, что система уравнений, представляющая функции переходов в управляющем алгоритме, описывается не в терминах состояний детерминированных автоматов (ДА), а в терминах частных событий недетерминированных автоматов, одновременное существование которых и определяет состояние эквивалентного ему ДА. Так как число частных событий недетерминированных автоматов значительно меньше числа состояний эквивалентных ему ДА, то описание управляющего алгоритма на языке СНДА будет отличаться значительной простотой. Представленная методика формального описания частных событий алгоритма управления передачей сообщений в распределенных и многопроцессорных системах на языке СНДА обеспечивает реализацию основных свойств, которыми должны обладать системы управления: отсутствие тупиковых ситуаций (бесконфликтность) и справедливость (отсутствие бесконечного ожидания и нахождения в мониторе процессов, обращающих к общему ресурсу). Аналитическое представление алгоритма управления взаимодействующими параллельными процессами в виде системы рекуррентных канонических бескванторных уравнений позволяет выполнить простую трансформацию описания алгоритма управления на языки описания аппаратуры (например, УИБЬ) для верификации алгоритма и его аппаратной реализации.
Ключевые слова: алгоритм управления, взаимодействующие параллельные процессы, событийные недетерминированные автоматы, задача «производители -потребители», механизмы монитора.
1 Работа выполнена в рамках федеральной целевой программы «Научные и научнопедагогические кадры инновационной России» на 2009-2013 гг.
V. I. Volchikhin, N. P. Vashkevich, R. A. Biktashev
MODELS OF EVENT NONDETERMINISTIC AUTOMATA FOR REPRESENTATION OF CONTROL ALGORITHMS OF INTERACTING PROCESSES IN MULTIPROCESSOR SYSTEMS BASED ON THE USE OF THE MONITOR MECHANISMS
Abstract. The aim of the paper is to develop the methodology of formal description
of the control algorithm for interacting parallel processes during the exchange of messages between them that includes the use of the monitor, the ring buffer and the "producers-consumers” sample task. The study is based on the method of event nondeterministic automata (ENDA), which allows to express the control algorithm in a simple and compact form as a quantifier-free system of recurrent canonical equations (SRCE describes all private events that have been implemented in the control system). A distinctive feature of the method ENDA is that the system (SRCE), which represents the transition function in the control algorithm is not described in terms of states of deterministic automata (DA), and in terms of private events NDA, the simultaneous existence of which determines the status of an equivalent DA. Since the number of ENDA private events is much smaller than the number of states of DA equivalent to it, then the description of the control algorithm in the language of ENDA will be significantly easier. The presented method of the formal description of the private events control algorithm in distributed message-passing multiprocessor system, and the language of the ENDA provides realization of the basic properties necessary for the control system: absence of deadlocks (lack of conflicts) and justice (no endless waiting and searching in the monitor for the processes accessing the shared resource). Analytical representation of the control algorithm by the interacting parallel processes as a system of SRCE allows to perform a simple transformation of the description of the control algorithm for hardware description languages (e. g., VHDL) to verify the algorithm and its hardware implementation using PLD, which in turn provides greater reliability and performance of messages transmission systems.
Key words: control algorithm, interacting parallel processes, event nondeterministic automata, «producers-consumers» task, monitor mechanisms.
Введение
В параллельных программах неизбежно возникают межпроцессные взаимодействия, проявляющиеся в виде обмена данными между параллельными ветвями алгоритма или параллельными процессами (потоками). Для такого обмена существует множество механизмов, таких как разделяемая память, именованные и неименованные каналы. Все эти механизмы реализуются программно в составе операционной системы, что приводит к снижению производительности операционной системы. Перенесение части функций межпроцессного обмена в аппаратную часть системы может существенно понизить латентность системы, повысить пропускную способность, а также освободить процессор для выполнения прикладной задачи.
Любой процесс обмена происходит с использованием буфера некоторого объема, причем буфером может быть либо разделяемая область в оперативной памяти, либо объект операционной системы. В каждом случае процесс-передатчик формирует данные и записывает их в буфер, т.е. является
производителем, процесс-приемник читает их из него, т.е. является потребителем.
Проектирование средств аппаратной поддержки является сложной технической задачей и требует разработки верифицированных алгоритмов управления передачей сообщений. В статье предлагается использование аппарата событийных недетерминированных автоматов (СНДА) для формального описания и структурной реализации механизмов синхронизации при доступе к общему (критическому) ресурсу.
Будем считать, что используемая модель программирования системы обмена сообщениями является многопоточной. Отсюда следует, что в многопроцессорной системе возможно существование независимых потоков, в том числе и потоков процесса-передатчика. В частности, один поток может формировать данные, а другой поток записывать их в согласующий буфер. Такая постановка приводит к усложнению процедуры управления процессами и требует дополнительных средств ее реализации, однако является наиболее общей.
Для решения задач управления взаимодействующими параллельными процессами используют различные механизмы синхронизации процессов, в том числе и механизм монитора [1, 2], который был впервые предложен в 1974 г. Хоаром [3] и Бринчем Хансеном [4] для организации синхронизации процессов при обращении к общим критическим ресурсам. Применение такого механизма синхронизации процессов по сравнению с механизмами критических интервалов с использованием семафоров позволяет существенно повысить надежность и компактность программного обеспечения реализации информационных систем [1, 5, 6].
В данной работе рассматривается методика формального описания алгоритма управления взаимодействующими параллельными процессами при обмене сообщениями с использованием механизма мониторов и кольцевого буфера в качестве общего критического ресурса. Использование языка СНДА для описания всех реализуемых в алгоритме частных событий позволяет представить алгоритм управления в простой и компактной форме, так как описание алгоритма выполняется не в терминах состояний детерминированных автоматов (ДА), а в терминах частных событий [7, 8]. Такое представление алгоритма управления позволяет просто трансформировать его на другие языки с целью структурной реализации алгоритма (в том числе аппаратно и микропрограммно) и его верификации на моделях [9, 10].
Учитывая, что функции согласующего кольцевого буфера при обмене сообщениями между сервером (производителем) и клиентом (потребителем) рассмотрены подробно в [8], в данной работе указывается только на формирование основных переменных, которые определяют состояние согласующего буфера, а следовательно, и логические условия выполнения операций над ним. В данном случае производитель (сервер) помещает сообщение в кольцевой буфер, а потребитель (клиент) извлекает их оттуда. Таким образом, буфер содержит очередь уже помещенных, но еще не извлеченных сообщений. Эта очередь может быть представлена связным списком или массивом.
Для представления очереди сообщений используются две целочисленные переменные, которые указывают соответственно первую заполненную и первую пустую ячейки буфера. Эти переменные формируются с помощью счетчиков буфера записи (СчБз) и счетчика буфера чтения (СчБчт). Показа-
ния СчБз будут определять номер первой незаполненной ячейки, а счетчика СчБчт - номер первой заполненной ячейки. Для этой цели при инициализации системы управления в указанные счетчики записываются единицы и устанавливается число ячеек буфера. Тогда по показаниям этих счетчиков определяются события: буфер полон (^Бп = 1) и буфер пуст (^бо = 1). Введение таких двух событий позволяет охарактеризовать промежуточное состояние буфера сообщений, когда он может быть и не полон и не пуст. Это может иметь место, когда при очередной записи буфер был заполнен не полностью или когда после очередного чтения буфер не пуст. Для этого варианта использования буфера сообщений вводятся еще два дополнительных счетчика: Сч*з и Сч*чт, в которые перед операцией с буфером сообщений заносится число порций информации, записываемой или считываемой из буфера за один раз. По показаниям этих счетчиков определяются события, свидетельствующие о том, что должна быть прекращена операция записи = 1) или чтения = 1).
Формализация основных событий, реализующих алгоритм
управления процессами в решаемой задаче при использовании механизма монитора и языка СНДА
Для формального описания основных событий алгоритма управления процессами в решаемой задаче необходимо сформулировать основные свойства и требования к монитору, чтобы обеспечить бесконфликтную реализацию взаимодействия процессов (отсутствие тупиков) и свойства справедливости реализации операций над критическим ресурсом. Такие основные свойства монитора были сформулированы, например, в [5] таким образом:
а) чтобы изменить состояние общего ресурса процесс должен войти в монитор. При этом только один процесс имеет исключительное право доступа в монитор, а вне монитора известны только имена процедур, которые могут изменить состояние общего ресурса и неизвестно состояние общего ресурса;
б) внутри монитора процесс не может обращаться к переменным, объявленным вне монитора;
в) постоянные переменные, характеризующие состояние ресурса, инициируются до вызова его процедур.
Учитывая эти свойства, можно сформулировать основные требования к механизму монитора, которые в принципе идентичны требованиям к критическим интервалам, обеспечивающим отсутствие конфликтных ситуаций (свойство безопасности) и обеспечение справедливости доступа процессов к общему ресурсу, которые были определены Деккером и Дейкстра [1, 11]. Таким образом, эти требования можно представить следующим образом:
1. В любой момент времени только один процесс может находиться внутри монитора.
2. Ни один процесс не может оставаться внутри монитора бесконечно
долго.
3. Ни один процесс не должен бесконечно долго ждать входа в монитор.
4. Процесс, вышедший из монитора не обслуженный, имеет преимущественное право на повторный вход в монитор по сравнению с процессами,
находящимися в начальной очереди и требующими выполнить такую же процедуру над общим ресурсом.
Учитывая указанные свойства и требования к монитору, можно сформулировать условия зарождения и сохранения основных событий, реализующих алгоритм управления процессами при обращении к общему ресурсу на основе использования языка СНДА следующим образом.
Первое и второе требования к механизму монитора обеспечиваются реализацией событий, позволяющих войти в монитор и находиться в нем в любой момент времени только одному процессу, который не может бесконечно долго находиться в нем. Описание таких событий ( SМ ) будет состоять из двух частей: первая составляющая определяет зарождение события, определяющего начальный вход /-го процесса в монитор (мз), а вторая - его
сохранение в мониторе (м с), т.е. имеем
^м (1 +1) = £гм,з у Siм,с, (1)
где первая составляющая уравнения (1) в свою очередь должна определяться конъюнкцией трех событий:
<$М,3 = ^ВП ^ВЗ ^ПР, (2)
где SгВп - событие, определяющее прием заявки /-го процесса на обслуживание; SгВ3 - событие, обеспечивающее взаимоисключение событий SМ; SПР -
событие, определяющее приоритет /-го процесса.
Вторая составляющая уравнения (1) в свою очередь должна определяться конъюнкцией из трех событий:
Sм,с = Sм Sкp,з, (3)
где Slп - событие, свидетельствующее об окончании одноразовой операции
/-го процесса с общим критическим ресурсом; SlкРз - событие, свидетельствующее о том, что критический ресурс для /-го процесса занят.
Рассмотрим формальное описание отдельных составляющих в уравнениях (1) и (2).
Событие SвП обеспечивает реализацию третьего требования к механизму монитора, основанного на том, что заявка /-го процесса на обслуживание воспринимается и сохраняется только в том случае, когда данный процесс не находится в мониторе. Тогда это событие формализуется следующим образом:
^ВП^ +1) = С^З у ^вп) ^ ^МП, (4)
где S3 - заявка /-го процесса; SМП - событие, определяющее повторный
вход /-го процесса в монитор, вышедшего из монитора необслуженным, т.е.
это событие обеспечивает четвертое требование к механизму монитора и будет иметь следующий вид:
SMn(t + 1) - SMhSKp,0 V SMnSn, (5)
где sMh - событие, свидетельствующее о выходе /-го процесса из монитора необслуженным; sKp о - событие, свидетельствующее об освобождении критического ресурса для операции с ним /-го процесса после выполнения
предыдущей операции.
Событие ^вз является основным событием, определяющим вход в монитор в одно и то же время только одного /-го процесса, и определяется взаимоисключением событий входа процессов в монитор на основе их несовместимости с /-м процессом. Это событие представляется следующей формулой:
sb3-Л( М V s Мп ). (6)
(Va)[a#'j
Событие Sj^p обеспечивает однозначность входа процессов в монитор, используя их приоритетность, которая определится следующей формулой:
Snp - Snp(0) V SВпSКР,0 SМН, (7)
где Snp(0) - событие, определяющее приоритет /-го процесса в начальный период. Введение этого события объясняется тем обстоятельством, что в начальный период обращения процессов к общему ресурсу могут быть истины все события типа SB3 и SBn .
В дальнейшем при описании всех событий алгоритма управления при обращении к критическому ресурсу будем базироваться в качестве примера на варианте решения задачи взаимодействия для двух процессов: один производитель и один потребитель, заявки которых будут фиксироваться в двух очередях - одна начальная очередь, а другая очередь ждущих заявок процессов, вышедших из монитора необслуженными. Для этого варианта полная система уравнений, определяющая доступ процессов к критическому ресурсу и выполнение операций над ними, будет иметь следующий вид:
s M(t +1) - SBn SB3 snp V s М (Sn V sKp,3 ), S M(t +1) - S Bn S ВзS np V S М (S П V S Kp,3 ),
SMn(t +1) - sMhsKp,0 V SMn Sh, SMn(t +1) - SMhsKp,0 v sМп sn,
SBn(t +1) - (s3 v SBn)(sМ V SMn), SBn(t +1) -(S3 V SBn)(sМ V SMn),
snp - snp(0) V SBnSKp,0 sMh, snp - snp(0) V sBnsKp,0 sMh,
SПР(0) = S0XnSВп, S^,3 = SБП , SКр,з = Sбо ,
Sp3(t +1) = (м v SMn)sКp,c v SP3(sбп v Sкз),
Sрч(^ +1) - (м у $мп)$кр,с у $рч (БО у $кч)),
$КР,С -( БП V $ БО ) $ КР,С -( БП V $ БО )
$и(^ +1) - $р3( $ КЗ у $ БП) , $ +1) - $ рЗ( $ КЧ у $ БоХ (8)
где $рЗ и $рЧ - события, определяющие выполнение операции записи и чтения соответственно; $Крс и $КРс - комбинационные события, определяющие возможность выполнения операции записи и чтения соответственно; $КЗ и $кч - события, свидетельствующие об окончании операции записи и чтения порций информации, определяемых счетчиками $ч*з и $ч*чт соответственно.
Учитывая представленное аналитическое описание всех основных частных событий (уравнения 8), реализующих управляющий алгоритм взаимодействия процессов в решаемой задаче, можно для наглядности представить рассматриваемый алгоритм в виде графа СНДА (рис. 1).
Заключение
В заключение можно отметить, что полученные уравнения описания алгоритма управления параллельными процессами в виде стандартной системы рекуррентных бескванторных предикатных формул, представляющих все основные частные события в решаемой задаче, отличаются следующими особенностями:
1. Обеспечивается выполнение всех основных требований к монитору, а именно: отсутствие тупиковых ситуаций (свойство безопасности) и учет реализации свойства справедливости.
р. Возможна простая трансформация описания алгоритма управления процессами на язык УИБЬ для моделирования и верификации алгоритма и аппаратной реализации алгоритма управления с использованием ПЛИС, что, в свою очередь, обеспечивает более высокую надежность и производительность систем управления.
3. Если сравнить формальное описание основных частных событий управления процессами в решаемой задаче с использованием механизма монитора и механизма критических интервалов (участков), то можно отметить, что для второго варианта число уравнений, представляющих алгоритм управления процессами, будет значительно больше, так как каждый процесс должен иметь свой критический участок, который организует обращение про-
цесса к критическому ресурсу. Откуда следует, что для первого варианта при использовании монитора структурная реализация алгоритмов управления процессами в решаемой задаче будет отличаться значительной простотой по сравнению с использованием механизмов критических участков для второго варианта.
S^,o S\
а)
б)
Рис. 1. Графы СНДА алгоритмов управления процессов производителя (а) и потребителя (б) при их обращении к общему ресурсу (буферу сообщений)
Список литературы
1. Дейтел, Г. Введение в операционные системы : в 2-х т. ; пер. с англ. / Г. Дейтел. -М. : Мир, 1987. - Т. 1. - 359 с.
2. Соловьев, Г. И. Операционные системы ЭВМ : учеб. пособие / Г. И. Соловьев, В. Д. Никитин. - М. : Высш. шк., 1988. - 207 с.
3. Hoare, C. A. R. Monitors, An Operating System Structuring Concept / C. A. R. Hoare // Erratum in Commun. Of the ACM. - 1975. - V. 18. - P. 95.
4. Brinch Hansen, P. The Programming Language Concurrent Pascal / P. Brinch Hansen // IEEE Trans. On Software Engineering. - 1975. - V. SE-1. - P. 199-207.
5. Эндрюс, Г. Р. Основы многопоточного и распределенного программирования : пер. с англ. / Г. Р. Эндрюс. - М. : Вильямс, 2003. - 512 с.
6. Таненбаум, Э. Современные операционные системы / Э. Таненбаум. -2-е изд-е. - СПб. : Питер, 2002. - 1040 с.
7. Вашкевич, Н. П. Недетерминированные автоматы в проектировании систем параллельной обработки : учеб. пособие / Н. П. Вашкевич. - Пенза : Изд-во Пенз. гос. ун-та, 2004. - 280 с.
8. Вашкевич, Н. П. Формальное описание алгоритма управления взаимодействующими параллельными процессами в задаче «производители-потребители» с использованием кольцевого согласующего буфера / Н. П. Вашкевич, Р. А. Бикта-шев, А. А. Тараканов // Известия высших учебных заведений. Поволжский регион. Технические науки. - 2007. - № 4. - С. 98-107.
9. Кларк, Э. М. Верификация моделей программы: Model Checking : пер. с англ. / Э. М. Кларк, О. Грамберг, Д. Пелед. - М. : МЦНМО, 2002. - 416 с.
10. Вашкевич, Н. П. Аппаратная реализация функций синхронизации параллельных процессов при обращении к разделяемому ресурсу на основе ПЛИС / Н. П. Вашкевич, Р. А. Бикташев, Е. И. Гурин // Известия высших учебных заведений. Поволжский регион. Технические науки. - 2007. - № 2. - С. 3-12.
11. Кейлингерт, П. Элементы операционных систем : пер. с англ. / П. Кейлингерт. -М. : Мир, 1985. - 295 с.
References
1. Deytel G. Vvedenie v operatsionnye sistemy : v 2-kh t. [Introduction into operative systems: in 2 vol.]. Moscow: Mir, 1987, vol. 1, 359 p.
2. Solov'ev G. I., Nikitin V. D. Operatsionnye sistemy EVM: ucheb. posobie [Computer operational systems: tutorial]. Moscow: Vyssh. shk., 1988, 207 p.
3. Hoare C. A. R. Erratum in Commun. Of the ACM. 1975, vol. 18, p. 95.
4. Brinch Hansen P. IEEE Trans. On Software Engineering. 1975, vol. SE-1, pp. 199-207.
5. Endryus G. R. Osnovy mnogopotochnogo i raspredelennogo programmirovaniya [Basics of multithreaded and dispense programming]. Moscow: Vil'yams, 2003, 512 p.
6. Tanenbaum E. Sovremennye operatsionnye sistemy [Modern operational systems]. Saint Petersburg: Piter, 2002, 1040 p.
7. Vashkevich N. P. Nedeterminirovannye avtomaty v proektirovanii sistem parallel’noy obrabotki: ucheb. posobie [Nondeterministic automata in parallel processing systems design: tutorial]. Penza: Izd-vo Penz. gos. un-ta, 2004, 280 p.
8. Vashkevich N. P., Biktashev R. A., Tarakanov A. A. Izvestiya vysshikh uchebnykh zavedeniy. Povolzhskiy region. Tekhnicheskie nauki [University proceedings. Volga region. Engineering sciences]. 2007, no. 4, pp. 98-107.
9. Klark E. M., Gramberg O., Peled D. Verifikatsiya modeley programmy: Model Checking [Verification of program models: Model checking]. Moscow: MTsNMO, 2002, 416 p.
10. Vashkevich N. P., Biktashev R. A., Gurin E. I. Izvestiya vysshikh uchebnykh zavedeniy. Povolzhskiy region. Tekhnicheskie nauki [University proceedings. Volga region. Engineering sciences]. 2007, no. 2, pp. 3-12.
11. Keylingert P. Elementy operatsionnykh sistem [Operational system elements]. Moscow: Mir, 1985, 295 p.
Волчихин Владимир Иванович
доктор технических наук, профессор, президент Пензенского государственного университета (г. Пенза, ул. Красная, 40)
E-mail: [email protected]
Вашкевич Николай Петрович
доктор технических наук, профессор, кафедра вычислительной техники, Пензенский государственный университет (г. Пенза, ул. Красная, 40)
E-mail: [email protected]
Бикташев Равиль Айнулович
кандидат технических наук, профессор, кафедра вычислительных машин и систем, Пензенская государственная технологическая академия (г. Пенза, проезд Байдукова, д. 1а)
E-mail: [email protected]
Volchikhin Vladimir Ivanovich Doctor of engineering sciences, professor, president of Penza State University (Penza, 40 Krasnaya str.)
Vashkevich Nikolay Petrovich Doctor of engineering sciences, professor, sub-department of computer science, Penza State University (Penza, 40 Krasnaya str.)
Biktashev Ravil' Aynulovich Candidate of engineering sciences, professor, sub-department of computing machines and systems, Penza State Technological Academy (Penza, 1a Baydukova passage)
УДК 681.3.012 Волчихин, В. И.
Модели событийных недетерминированных автоматов представления алгоритмов управления взаимодействующими процессами в многопроцессорных вычислительных системах на основе использования механизма монитора / В. И. Волчихин, Н. П. Вашкевич, Р. А. Бикташев // Известия высших учебных заведений. Поволжский регион. Технические науки. -2013. - № 2 (26). - С. 5-14.