Виртуальная машина автоматного программирования Наумов А.С., СПбГУ ИТМО 2006 Цель работы Проектирование и реализация платформы нижнего уровня для автоматного программирования в виде виртуальной машины автоматного программирования (ВМАП) 2 Существующие реализации Интерпретация Многопоточное выполнение Взаимодействие автоматов в условиях многопоточности нет нет нет нет XML есть нет нет нет Java нет нет есть есть нет Windows нет VFSMML есть ВМ в явном виде нет нет UniMod Eclipse Java XML есть ВМ в неявном виде есть нет visualSTATE Windows нет Txt есть нет нет 3 нет Операционная система Исходные коды Формат файла Отладка, трассировка Finite State Kernel Creator Unix C Bin Finite State Machine Editor Unix C++ JSpasm Java StateWORKS Общие недостатки Прямая кодогенерация Зависимость от платформы Отсутствие многопоточности Специфический формат Закрытая реализация 4 Постановка задачи Необходимо спроектировать и реализовать ВМАП Истинная многопоточность и детерминированное взаимодействие Выполнение различных типов моделей конечных автоматов Верификация загружаемых программ Статическая проверка выполнимости Изменение загруженной программы во время выполнения Поддержка наследования автоматов Инструменты кодогенерации Графическая нотация XML Ассемблер Байт-код 5 Графическая нотация Номер и название состояния Состояние 0. Начальное состояние x1 && e0 z1 Группа состояний 1 x3 z3 2 A1(e2) Условие перехода x2 && e1 z2; A1(e1) z3; z4 x4 z4 Действия на входе в состояние Переход Действие на переходе 6 Автоматная модель Входные переменные Выходные воздействия Запуск с событием (обрабатывается синхронно), события обязательны Конечное число состояний Группы состояний Действия при входе в состояния Переходы Условие перехода Действия на переходе 7 Архитектура ВМ Вызов автомата == вызов метода Отказ от “тактичности” 16-ти разрядная, 8 регистров Память: ПЗУ, Программа, Данные Стековая машина Нуль-адресные команды 8 Формат программы табл. Автоматы табл. Описание автомата табл. Описание состояния Количество автоматов (N) Номер автомата Номер состояния Описание автомата 1 Количество состояний (K) Действия на входе … Описание состояния 1 Количество переходов (M) Описание автомата N ... Описание перехода 1 Описание состояния K ... Описание перехода M Процедура табл. Описание перехода Булева функция Условие Действия Процедура Номер нового состояния 9 Многопоточность Ни один из проанализируемых инструментов не предоставляет механизмов многопоточного выполнения Проблема недетерминированности Проблема взаимной блокировки потоков Решение: разбиение процесса обработки на три фазы, блокировки автоматов потоками 10 Реализация .NET Framework 2.0, C# ВМАП, API XML (MetaAuto, UniMod) ASM ASM Байт-код 11 Апробация Подсчет количества слов Нет генерации кода, только модель в Visio В случае ошибки в модели, нет необходимости перекомпиляции программы Обедающие философы Не надо задумываться над механизмом многопоточного выполнения 12 Результаты Предложена концепция ВМАП и определены требования Разработана архитектура и система команд ВМАП Разработан механизм многопоточного выполнения автоматных программ для широкого класса исполнимых автоматных моделей Реализованы программные компоненты Проведена апробация Развитие: трассировщик, отладчик, новый язык ассемблера 13 Спасибо 14