Задание
1. Выбрать вычислительный процесс и на его примере:
- построить метамодель «асинхронный процесс» и определить свойства исходного процесса на основе анализа метамодели;
- выполнить операции над процессом: репозиция, редукция, композиция, и оценить полученные результаты с практической точки зрения;
- построить предметную интерпретацию метамодели на основе сети Петри и сделать вывод о динамических характеристиках исходного процесса.
Описание процесса
В качестве процесса я выбрал процесс ввода символа с клавиатуры и вывода его на экран. Краткие сведения о клавиатуре и принцип её действия описаны далее.
Клавиатура
Клавиатура — клавишное устройство управления персональным компьютером. Служит для ввода алфавитно-цифровых (знаковых) данных, а также команд управления. Комбинация монитора и клавиатуры обеспечивает простейший интерфейс пользователя. С помощью клавиатуры управляют компьютерной системой, а с помощью монитора получают от нее отклик.
Принцип действия. Клавиатура относится к стандартным средствам персонального компьютера. Ее основные функции не нуждаются в поддержке специальными системными программами (драйверами). Необходимое программное обеспечение для начала работы с компьютером уже имеется в микросхеме ПЗУ в составе базовой системы ввода-вывода (BIOS), и потому компьютер реагирует на нажатия клавиш сразу после включения.
Принцип действия клавиатуры заключается в следующем
1.При нажатии на клавишу (или комбинацию клавиш) специальная микросхема, встроенная в клавиатуру, выдает так называемый скан-код.
2.Скан-код поступает в микросхему, выполняющую функции порта клавиатуры. (Порты — специальные аппаратно-логические устройства, отвечающие за связь процессора с другими устройствами.) Данная микросхема находится на основ ной плате компьютера внутри системного блока.
3.Порт клавиатуры выдает процессору прерывание с фиксированным номером. Для клавиатуры номер прерывания — 9 (Interrupt 9, Int 9).
4.Получив прерывание, процессор откладывает текущую работу и по номеру пре рывания обращается в специальную область оперативной памяти, в которой находится так называемый вектор прерываний. Вектор прерываний — это список адресных данных с фиксированной длиной записи. Каждая запись содержит адрес программы, которая должна обслужить прерывание с номером, совпадаю щим с номером записи.
5.Определив адрес начала программы, обрабатывающей возникшее прерывание, процессор переходит к ее исполнению. Простейшая программа обработки кла виатурного прерывания «зашита» в микросхему ПЗУ, но программисты могут «подставить» вместо нее свою программу, если изменят данные в векторе пре рываний.
6.Программа-обработчик прерывания направляет процессор к порту клавиатуры, где он находит скан-код, загружает его в свои регистры, потом под управле нием обработчика определяет, какой код символа соответствует данному скан- коду.
7.Далее обработчик прерываний отправляет полученный код символа в небольшую область памяти, известную как буфер клавиатуры, и прекращает свою работу, известив об этом процессор.
8.Процессор прекращает обработку прерывания и возвращается к отложенной задаче.
Введенный символ хранится в буфере клавиатуры до тех пор, пока его не забе рет оттуда та программа, для которой он и предназначался, например тексто вый редактор или текстовый процессор. Если символы поступают в буфер чаще, чем забираются оттуда, наступает эффект переполнения буфера. В этом слу чае ввод новых символов на некоторое время прекращается. На практике в этот момент при нажатии на клавишу мы слышим предупреждающий звуковой сиг нал и не наблюдаем ввода данных.
Построение метамодели «асинхронный процесс»
Поставим нашему асинхронному процессу в соответствие четвёрку
, в которой: — непустое множество ситуаций; — отношение непосредственного следования ситуаций, определённое на множестве ; — множество инициаторов;1. Выделить компоненты рассматриваемого процесса.
a) Клавиша (скан-код).
К = 1 / К = 0: клавиша нажата / нет.
б) Порт клавиатуры (прерывание).
ПК = 1 / ПК = 0: в порт поступил скан-код / нет.
в) Вектор прерываний.
ВП = 1 / ВП = 0: вектор прерываний получил запрос от процессора / нет.
г) Процессор (обработчик прерываний).
П = 1 / П = 0: процессор обработал код / нет.
д) Буфер клавиатуры.
БК = 1 / БК = 0: буфер клавиатуры переполнен / нет.
е) Символ.
С = 1 / С = 0: печать возможна / нет
2. Сформировать множество ситуаций рассматриваемого процесса.
1) Клавиша нажата.
2) Порт клавиатуры получил скан-код.
3) Активизируется вектор прерываний.
4) Процессор определил код символа.
5) Буфер клавиатуры получает код символа, буфер не переполнен, печать символа возможна.
асинхронный процесс редукция репозиция
6) Буфер клавиатуры получает код символа, буфер переполнен, печать символа невозможна.
К | ПК | ВП | П | БК | С | |
1 | 0 | 0 | 0 | 0 | 0 | |
1 | 1 | 0 | 0 | 0 | 0 | |
1 | 1 | 1 | 0 | 0 | 0 | |
1 | 1 | 1 | 1 | 0 | 0 | |
1 | 1 | 1 | 1 | 0 | 1 | |
1 | 1 | 1 | 1 | 1 | 0 |
Описать модель «асинхронный процесс»
Ситуация
описывает начальный этап данного процесса – нажатие клавиши, который инициирует ход всего процесса. Ситуация описывает ситуацию, когда процессор определяет код символа, который выводится на печать. Она инициирует дальнейшую работу с этим кодом. Ситуации и описывают два возможных результата – возможность и невозможность печати.Определить траектории выполнения процесса и классы эквивалентности ситуаций и сделать вывод о свойствах рассматриваемого процесса (эффективность, управляемость, простота)
Траектории:
Первая траектория описывает процесс, результат которого – возможность печати. Вторая траектория описывает процесс, результат которого – невозможность печати. Третья траектория описывает определение кода символа и возможность заполнения буфера клавиатуры.
Четвёртая траектория описывает определение кода символа и невозможность заполнения буфера клавиатуры.
АП
эффективен, т.к. из инициаторов все траектории ведут в результанты и все траектории, приводящие к результантам, исходят из инициаторов.Определим классы эквивалентности. Для множества
можно определить отношение такое, что:1)
, если ;2)
.Отношение
позволяет разбить множество на классы эквивалентности:Так как мой АП - эффективный, то:
,где
- множество начальных классов, - множество конечных классов.