Контрольная работа: Модель асинхронного процесса ввода символа с клавиатуры и вывода его на экран
Первая траектория описывает процесс, результат которого – возможность печати. Вторая траектория описывает процесс, результат которого – невозможность печати. Третья траектория описывает определение кода символа и возможность заполнения буфера клавиатуры.
Четвёртая траектория описывает определение кода символа и невозможность заполнения буфера клавиатуры.
АП эффективен, т.к. из инициаторов все траектории ведут в результанты и все траектории, приводящие к результантам, исходят из инициаторов.
Определим классы эквивалентности. Для множества можно определить отношение такое, что:
1) , если ;
2) .
Отношение позволяет разбить множество на классы эквивалентности:
Так как мой АП - эффективный, то:
,
где - множество начальных классов, - множество конечных классов.
Так как в моём ЭАП каждый класс идёт от начального в один и тот же конечный класс эквивалентности, то он управляемый.
Данный ЭАП не является простым, так как первая и вторая траектории содержат 2 инициатора.
Таким образом, АП P1 является эффективным и управляемым, но не является простым.
Операции над процессами
Смыслом репозиции данного процесса будет повторное нажатие клавиши, причём неважно после какой ситуации – успешной (символ напечатался) или нет (символ не напечатался).
- resetallsettings (interrupt)
Осуществлённая репозиция является частичной, так как .
Репозиция позволяет инициировать процесс повторно после его выполнения. Для данной модели это означает, что нажатие клавиши может быть вызвано не только один раз, но и несколько. Фактически репозиция процесса показывает, что процесс выполняется не один, а столько, сколько нужно в какой-то конкретной ситуации.
Редукция
Выделим в качестве входных компонент первую и вторую – клавишу и порт клавиатуры. Первая компонента может принимать только одно значение – 1, вторая – 1 и 0.
Выделим , т.к. все ситуации, входные компоненты которых равны значениям , либо являются результантами, либо ведут к ним, т.е. способствуют окончанию выполнения процесса.
Составим множество ситуаций, входящие в блок разбиения , которые соответствуют выбранным значениям входной компоненты.
Для каждого инициатора построим множество ситуаций, встречающихся на траекториях процесса, ведущих из указанного инициатора.