Д Р А К О Н О Г Р А Ф И К А

Перспективы | Техноязык и информоделирование | Кое-что об исполнителях алгоритмов


Содержание

Кое-что об исполнителях алгоритмов

Об устройстве и принципе действия информатических машин

Исполнители, структуры данных и алгоритмы

О реализации техноязыка

Кое-что об исполнителях алгоритмов

Об устройстве и принципе действия информатических машин

Из каких элементов состоит реальная информашина и как они взаимодействуют? Мы снова будем придерживаться нового системного подхода; стало быть, нужно выделить «большую тройку» структуризации. К счастью, это уже давно сделано: информашину можно укрупнённо представить как полносвязное соединение процессора, памяти и интерфейса1. Далее можно выделить узлы этих компонент, но это скорее нужно специалистам.

Для классических информашин принципы работы установлены Дж. Фон Нейманом. В соответствии с ними особую роль играет содержимое основной, или адресуемой, памяти ОП. Как оно определяется? Скажем, у Н. Вирта можем прочитать: «Для компьютера память представляется однородной массой битов без явной структуры.»2; однако так можно рассматривать только устройства (блоки) памяти до их включения в конкретную систему. Работа же реальной машины зависит от следующих обстоятельств:

1. Структуры каждой команды процессора (деления на поля операции и операндов).

2. Адреса начального пуска (НП), т.е. позиции на «ленте памяти», к которой обращается процессор в начале работы (после включения питания или перезагрузки).

3. Содержимого, находящегося в памяти по адресу начального пуска.

Процессор по коду команды устанавливает, где должна начинаться следующая (это обеспечивается его разработчиками). Поэтому сочинитель программы должен обеспечить, чтобы с адреса НП была записана команда, а за ней ещё одна, а за ней ещё одна... :) и все эти команды должны «идти к делу», т.е. образовывать программу решения конкретной задачи. В данном случае это программа начального пуска; в своё завершение она обычно загружает управляющую программу, а уже её работа обеспечивает размещение и выполнение программ, решающих задачи, для которых и предназначена машина.

Программа НП обычно неизменна и должна таковой оставаться; поэтому память для неё делается перезаписываемой не в ходе работы машины (в виде постоянного ЗУ); иногда то же касается и управляющей программы. Остальная память делается перезаписываемой при работе (в виде оперативного ЗУ).

Итак, «пейзаж» машинной памяти на низком уровне рассмотрения определяется общим правилом построения команд процессора, а именно:

Это правило служит и основой задания процесса исполнения команды (алгоритма т.н. командного цикла); пример такого алгоритма содержится в одном из упражнений по визуализации (см. п. 2.1.1 Приложения 4).

Каковы базовые действия (команды)? Можно подразделить их, как указано в п/п 2.1.1.2, на преобразования данных, их передачу (в пространстве – обмен, пересылку и во времени – хранение) и управление (дальнейшим ходом программы, состоянием машины, ). При этом передачи происходят как внутри машины, так и для обмена со внешней средой. Из этого можно вывести и функциональную схему информашины.

Функциональная схема информашины на СТ-языке

Основные идеи данной схемы:

1. Машина не является «вещью в себе» и потому показана в связи с человеком-пользователем и объектом управления (реальным; в общем случае бывает и виртуальным – массивом данных, которые машина только перерабатывает для человека).

2. В процессе основной переработки участвуют как текущие, так и накопленные на предыдущих этапах переработки данные; текущие данные могут сразу отправляться на хранение.

3. Связи образуют замкнутые контуры управления (в общем случае один или оба контура м.б. разомкнутыми).

Использован язык структурно-топологического (СТ) описания исполнителей, определённый кратко в Приложении 2, п/р. 4.1.

Отметим, что такое описание, помимо прочего, служит также для представления исполнителя в некотором физическом пространстве (как говорят, интерпретации на местности). В результате такой интерпретации схема может усложниться (так, очевидно, предпереработка может выполняться вместе с основной в одном устройстве КСА, а м.б. полностью или частично вынесена ближе к удалённому источнику в отдельном устройстве; устройств одного назначения в КСА м.б. много в разных местах и т.п.); появятся дополнительные тракты переработки. Также данный способ м.б. использован и для описания операторов и внешних объектов.

Какова взаимосвязь компонентов информатических машин (автоматизированных систем) вообще? В своё время была проведена наиболее общая структуризация информашин (инфорсим) как объектов безопасности3; в результате выделены три категории технических объектов: аппаратура, программы, информация (точнее, машинные данные). По тому же основанию предложили деление и специалисты в смежной области – судебной экспертизы4. Примем эту структуру за вертикально-иерархическую модель машинной части инфорсимы (т.е. косавта) и рассмотрим её содержание с учетом уровней эффективности (в машинном смысле). Информашина есть кибернетическая система, т.е. имеет управляющие и управляемые элементы, объединенные прямыми и обратными связями; её важнейшая особенность (исходящая из модели алгопроцесса) – адресность взаимодействия элементов.

Принцип адресности впервые сформулировал Дж. Фон Нейман для пространственного (координатного) способа адресации; позднее были введены адресация по времени поступления в память (стековая) и по значению данных (ассоциативная), применяемые в современных информашинах наряду с пространственной.

Аппаратура служит физической базой для машинных данных и в общем делится на устройства обработки, памяти и интерфейса. Дальнейшее деление учитывает общетехнический закон «выигрываем в качестве (как-то: быстродействии, универсальности, надёжности) – проигрываем в реализации (как-то: сложности, энергоёмкости)». Поэтому выделяют среди устройств обработки главные, непосредственно реализующие алгопроцесс или его часть – центральные процессоры (универсальны, но для некоторых целей неэффективны и часто сложны) и вспомогательные – периферийные (специализированы по целям, но эффективны для них); вторые называют контроллерами или адаптерами, если они специализированы на местном управлении или сопряжении. Память делится на основную (адресуемую процессором и быструю, но сложную и энергоёмкую) и внешнюю (с высокой плотностью хранения и низкими энергозатратами, но медленную и неадресуемую). Интерфейсы подразделяют на сенсорные (с человеком) и технические (внутри- и межмашинные) в силу специфики реализации первых.

Состав и свойства аппаратных элементов, их структура обеспечивают выполнение определённого набора операций, из которых строится алгоритмический процесс, и формирование состава этих операций применительно к процессам, возможным согласно назначению машины.

Аппаратное управление исходит из следующего базового принципа – состояние управляемых элементов зависит от состояния управляющих и (при замкнутом управлении) отслеживается последними. Зависимость реализуется сигналами, т.е. физическими процессами в цепях прямой и обратной связи. Часть сигналов связана со внешней средой.

Поступающие сигналы изменяют ход физических процессов в элементе машины заранее предусмотренным образом (если он работает правильно), в противном случае (когда на предусмотренные значения сигналов возникает непредусмотренная реакция) говорят об отказе (повторяющемся) или сбое (разовом).

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

Для адаптации аппаратуры структура (схема соединения) элементов (схемных узлов, устройств, подсистем) и/или свойства (режимы) отдельных элементов, связей изменяются, чтобы реализовать новый процесс или вариант прежнего; этот процесс называют настройкой аппаратуры. Для упрощения адаптации вводят настроечные органы, позволяющие вносить изменения без монтажных операций (иногда и в ходе работы).

На программном уровне алгоритмический процесс рассматривается как программный код из операций, реализованных аппаратно. Все элементы машины, включающей средства (возможности) обработки данных (наряду с обработкой вещества и/или энергии либо без неё) м.б. разделены на два класса:

В свою очередь ПДЭ м.б. доступны (для других ПДЭ) по чтению/записи, только по чтению или только по записи; последние два вида м.б. размещены по одному адресу.

Базовый принцип программного управления машинами – состояние программно недоступных элементов машины управляется и (при замкнутом управлении) отслеживается через состояние программно-доступных элементов. Это последнее определяется различными источниками, как предопределенными в данном процессе, так и независимыми от его хода, включая данные о внешней среде и вводимые человеком-оператором. Состояния ПДЭ могут рассматриваться как параметры условий выбора дальнейшего пути.

Текущее состояние при программном управлении может влиять на дальнейший ход обработки данных. Чтобы реализовать это, в программу вводятся возможности выбора в зависимости от значений тех или иных ПДЭ. Правильность решения задачи посредством программы зависит как от правильной работы аппаратуры в ходе её выполнения, так и от свойств её кода.

Пригодность программ обеспечивается учётом всех существенных условий обстановки в виде величин, точностью результатов их обработки и логической правильностью каждого выбора, исходя из назначения программы, а также реализуемостью на данной аппаратуре. Оптимальность достигается выбором таких способов кодирования алгоритмов, которые экономят машинное время решения (занятия устройств), расходуемую память, ресурсы ввода-вывода .

Возникающие сигналы (состояния ПДЭ) могут прерывать выполнение текущего процесса и инициировать (вызывать) другой процесс, способный целесообразно реагировать на этот сигнал (обрабатывать ситуацию прерывания); при этом текущие состояния разных процессов сменяют друг друга.

Прерывание даёт возможность программной адаптации функционирования информашины и всей системы, которой она управляет, к условиям обстановки, целям применения. Другой путь адаптации на этом уровне – введение в машину ПДЭ конфигурации, которые играют роль настроечных органов аппаратуры. Наиболее эффективно включение элементов памяти конфигурации; значения, хранимые в них, соответствуют положениям заменяемых органов настройки.

Если данные в ПДЭ представлены в цифровой форме (как дискретные коды арифметических и/или логических величин), то говорят о цифровом управлении. Оно является непосредственным (НЦУ), когда имеется цифровая информашина, целью которой является управление данным объектом (обычно другой машиной, напр. станком, реактором и т.д.).

НЦУ широко применяется и в составе самих информашин; именно для этой цели выделяются контроллеры сложных устройств.

На уровне данных (информационном) выделяются управляющие и управляемые (изменяемые, обрабатываемые) элементы данных (состояния ПДЭ); сами ПДЭ рассматриваются как ресурсы данных. Именно здесь можно говорить о структурах управления и массивах данных, т.е. субъектах и объектах алгоритмического процесса. Массив данных имеет некую логическую структуру (т.н. формат) только для конкретного процесса (класса процессов).

Базовый принцип управления данными – в ходе алгоритмического процесса в информашине формируются и (при замкнутом управлении) отслеживаются данные о результатах процесса, его внешней среде и режимах выполнения (задаваемых человеком-оператором). Для этого в программах предусматривают переменные контекста; программа должна формировать их значения и целесообразно реагировать на изменение значений (при необходимости – в реальном времени).

Управляющие данные могут поступать от оператора, других внешних источников, формироваться в самой программе или передаваться от других программ через основную или внешнюю память. Реакция процесса обеспечивается программированием в нем структур управления, использующих эти данные. Отслеживание контекста других программ и его модификация дают возможность взаимного управления; при этом управление, не замкнутое на уровне управляемой программы (ряда программ), замыкается через управляющую с учетом всех обстоятельств их совместного (поочерёдного, параллельного) выполнения.

Структура исходных данных непосредственно влияет на ход и исход алгопроцесса. Хорошей иллюстрацией этому может служить игра «Жизнь» Конвея, где от начальной конфигурации фишек на игровом поле зависит (при одном и том же алгоритме получения следующей конфигурации из текущей) как последовательность дальнейших конфигураций, так и протекание процесса их смены; он может стать повторяющимся и «зациклиться».

Пригодность информационного уровня обеспечивается выбором структур (форматов) данных и управления так, чтобы учесть все существенные условия обстановки во всем ожидаемом дипапазоне их изменения; возможности, не реализуемые аппаратно, достигаются программным путём. Оптимальность достигается выбором структур данных и управления и способов их реализации, наилучшим образом отвечающих конкретным целям обработки.

Информационная адаптация реализуется изменением структур данных и управления посредством специального процесса, учитывающего цели и условия обстановки. В более широком смысле адаптация инфорсимы осуществляется, если также одни программы в ней рассматриваются при определённых условиях как данные для переработки другими программами в соответствии с целями применения. Если информашина реализует полноценную модель алгоритмического процесса (типа машины Тьюринга), то возможна т.н. самомодификация программ.

В связи с этим можно дать следующие определения:

Инфопрограммное изделие (ИПИ) – комплекс программного кода для информашины и встроенных данных для её оператора. Как правило, ИПИ может работать в различных режимах, определяемых средой автоматизации и/или требованиями пользователя.

Программный код – совокупность кодов машинных инструкций, кодирующих алгоритм реализации функций изделия.

Встроенные данные – набор сообщений, поддерживающих диалог «человек-машина» в процессе выполнения изделием своих функций и настройки его конфигурации, и машинных констант, используемых алгоритмом. Среди констант выделяются т.н. настроечные, определяющие режим работы ИПИ.

Понятно, что ИПИ на инфоуровне представляется совокупностью структур данных и управления, на программном – в виде структуры ПДЭ, зависимых друг от друга (в т.ч. через программно недоступные элементы) и на аппаратном уровне – как физические состояния элементов схемы информашины.

Именно совокупность конкретной аппаратуры, программно-доступных элементов, спецификаций структур данных и управления образует определённый комплекс средств автоматизации (напр. персональную инфорсиму).

В начало страницы

Исполнители, структуры данных и алгоритмы

Попробуем связать сказанное выше в целостное представление. Для этого воспользуемся концепцией «трёх схем», впервые применённой в датаматике, т.е. к структурам данных.

Схематизация – это процесс получения формальной модели сущностей и их связей – схемы, которая используется в рамках некоей искусственной системы. Обычно имеют в виду модель обобщённых знаний. В случае датаматизации (схематизации деклар-знаний) данных имеется в виду информатическая (программно-аппаратная) система, практически воплощаемая различным образом. Для информатического моделирования с применением традиционных систем программирования на алгоязыках требуется задание алгоритма решения задачи, и тогда датаматизация происходит одновременно и взаимосвязанно с алгоритмизацией. Однако используемые сегодня при информатизации системы управления базами данных (СУБД) часто реализуют алгоритмы обработки данных согласно заданным схемам (напр. путём визуального программирования); в таком случае СУБД м.б. не нужно задавать алгоритм явно.

При схематизации, как и при алгоритмизации любой задачи, существуют две точки зрения на информатическую модель: пользователя и разработчика (вторая иногда называется «машинной»). Первая формализует данные с точки зрения сути решаемой задачи, вторая – с точки зрения возможностей ИС, используемой для информатизации решения. В результате образуются две схемы данных, называемые внешней (по отношению к ИС) и внутренней.

Структурная схематизация стала подробно разрабатываться раньше, чем структурная алгоритмизация – возможно, потому, что задачи построения СУБД раньше достигли такого уровня сложности, при котором структурирование просто необходимо. В результате выработана концепция согласования схем данных через третью, т.н. концептуальную схему; т.о. и здесь мы видим переход от бинарной оппозиции к тернарной, где одна сущность (схема данных) служит «арбитром» для разрешения противоречий между двумя другими.

Концептуальная схема данных должна обладать следующими свойствами:

1. Достоверно отражать структуру и свойства реальных сущностей, которым соответствуют данные.

2. Допускать определение новых данных без изменения ранее определенных.

3. Удобно адаптироваться как к меняющимся точкам зрения пользователей, так и к меняющимся параметрам машинной инфраструктуры данных (многообразию структур хранения, доступа и машинной обработки).

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

Чтобы облегчить процесс алгоритмизации, необходимо выполнить некоторые требования к представлению алгоритма. Во-первых, необходимо выражать разные виды формализуемых знаний в адекватных формах. Во-вторых, нужно задать определенные правила создания схем, облегчающие выражение содержания задачи и его понимание. Тем самым мы фактически определяем некий алгоритмический язык (алгоязык, АЯ) – знаковую систему записи алгоритмов; однако таких языков, вообще говоря, можно создать много. Они будут отличаться семантикой (набором типов вершин), синтаксисом (правилами составления схем), прагматикой (удобством описания задач того или иного рода).

В информашине каждая константа или переменная занимает определенную область (ячейку) памяти либо представляется как набор входных сигналов данных; то же относится к операциям. Конкретные правила кодирования конструкций алгоязыка определяются программой-транслятором этого языка. Транслятор вместе с машиной и образуют простейшую информатическую систему. Т.о. алгоритм преобразуется из представления с точки зрения человека-специалиста в информатике во внутреннее, заданное «с точки зрения» инфорсимы (на деле это представление также определяется людьми-создателями машины и транслятора).

Первоначальная формулировка (постановка) задачи исходит от человека-потребителя результатов её решения. Он не интересуется деталями машинной реализации алгоритма решения, а описывает его концепцию, обычно в терминах своей предметной области. Тем самым определяется внешнее представление алгоритма. Описание на алгоязыке можно рассматривать как третье, нейтральное представление, в котором согласуются внешняя и внутренняя точки зрения за счет того, что язык по-прежнему понятен человеку и в то же время формален настолько, чтобы его конструкции выполнялись информашиной.

Также возможно подобное согласование и в иной плоскости рассмотрения. Так, Вирт ищет общность между элементами структур управления (операторами алгоритмов) и структур данных (объявлениями типов)5.

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

В начало страницы

О реализации техноязыка

Прерывания в визуалах. Рассмотрим один из вопросов реализации, насущный в случае визуализации для формального исполнителя (информашины).

Для адекватного отражения характера машинной части в дракон-программах необходимо решить вопрос о визуализации прерываний, т.е. вызова визуала-обработчика не тогда, когда это задано маршрутом сочиняемого визуала (назовём его целевым), а тогда, когда происходит обрабатываемое событие. Здесь нужно привлекать представление об архитектуре исполнителя. Так, информашина работает по командному циклу – алгоритму выполнения команды, «зашитому» в логику её процессора. Типичный алгоритм командного цикла изображался как блок-схема6. Если выделить то, что нам нужно, то получим тело командного цикла как блок, где целевому оператору (в данном случае – микрооперациям, реализующим назначение машинной команды) предшествует ветвление по вопросу "есть ли (необработанные) сигналы прерываний ?". На вопрос отвечает система прерываний исполнителя (проверяя, есть ли несброшенные/незамаскированные сигналы о событиях).

На этой основе можно предложить два способа визуализации прерываний:

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

2. Добавлять к каждой прерываемой иконе модификатор-указатель на визуал прерывания (допустим, ту же икону Вставка, присоединённую справа – т.к. слева присоединяется икона Синхронизатор) либо модифицировать изображение иконы (иметь версию).

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

Для лучшего понимания сказанного визуализируем командный цикл несколько более простой структуры, чем у Кагана:

Визуализация типичного командного цикла процессора ЦИМ

Здесь с алгоритмом (импер-частью) совмещён показ обмена данными в результате исполнения некоторых фаз цикла.

Прерывание можно отразить на любом этапе визуализации; при этом имеем в виду «иконный цикл» как расширение командного цикла на визуальный оператор, произвольно укрупнённый по сравнению с машинной командой и допускающий реакцию исполнителя (в т.ч человека; возможно, неформально описанную на данном этапе) на события из определённого круга, принятого во внимание сочинителем целевого визуала.

Прерывание во многом сродни исключению. А если его визуализировать аналогичным образом? Однако для этого нужно знать точное место по ходу алгопроцесса, где присходит прерывание, а это противоречит его смыслу как реакции на внешнее/внутреннее по отношению к исполнителю событие, момент наступления которого (в маршрутном измерении, т.е. определяемый положением рабочей точки) заранее неизвестен; если бы он был известен, то и прерывание не потребовалось бы :) Поэтому можно только указать, на каких участках каких маршрутов разрешены конкретные типы прерываний, а на каких – не разрешены (это называется маскированием прерываний).

Обработчик же прерываний, как и исключений, представляет собой процедуру, выполнение которой может привести либо к перепроверке состояния (исчезла ли ситуация, требующая обработки?), либо к останову исполнителя (по завершении обработки, если она пошла определённым образом, либо по истечении времени, отведённого на обработку). Разница именно в том, что не указывается конкретное вхождение вызова обработчика прерываний в данный алгоритм; считается, что после каждого оператора (в визуальной шампур-записи – на каждом звене вертикали визуала) он м.б. вызван или нет в зависимости от состояния (расширенного), в которое реально пришёл исполнитель после этого оператора.

Отметим, что исключительная ситуация также может генерировать прерывание (если её обработка проходит определённым образом).

Инварианты исполнения в визуалах. По исполнении каждого оператора алгопроцесс находится в некотором состоянии; на схеме состояние соответствует звену вертикали. Исполнитель, взятый в совокупности с окружением, находится в расширенном состоянии, включающем не только значения ПДЭ, соответствующие величинам данного алгопроцесса.

Расширенное состояние можно проверять на соответствие некоторому условию-инварианту, как и обычное. Определим, что последствие несоответствия (т.н. исключительной ситуации исполнения) - выбор маршрута не просто альтернативного, но ведущего к останову процесса до основного конца (или даже при отсутствии такового — в «зацикленном» визуале). Этот останов в случае обычного инварианта безусловен, а в случае исключения — наступает, если предусмотренная сочинителем процедура обработки исключительной ситуации (исполненная разово или циклически) не восстановила соответствия состояния инварианту.

Сказанное можно визуализировать нижеследующей схемой:

Визуализация работы с инвариантом

По сути, можно сказать, что «исключение – это прерывание в известной (при сочинении) точке маршрута». Именно возможность останова до целесообразного конца процесса объединяет исключение с прерыванием. При этом останов влечёт за собой выход в системный управляющий алгопроцесс (программу ОС), а если платформа исполнителя таковой не содержит — то просто прекращение работы исполнителя. А основное отличие — в том, что обработка исключения реализуется сочинителем.

В начало страницы | Оглавление | Главная | Версия для печати

Copyright © Жаринов В.Н.

1 См., напр. : Шилейко А.В., Шилейко Т.И. Беседы об информатике. – М.:Молодая гвардия, 1988. – с. .

2 Вирт Н., 2010. – с.21.

3 Мельников В.В. Защита информации в компьютерных системах. – М.:ФиС; Электронинформ, 1997. – п. 16.4.

4 Россинская Е.Р., Усов А.И. Судебная компьютерно-техническая экспертиза. – М.: Право и закон, 2001.

5 Вирт Н., 2010. – п. 4.1, 4.2.

6 См. напр.: Каган Б.М. ЭВМ и системы. – М.:Энергоатомиздат, 1991 – Рис. 9.34.

Hosted by uCoz