Перспективы | Техноязык и информоделирование | Кое-что об исполнителях алгоритмов
Содержание
Кое-что об исполнителях алгоритмов
Об устройстве и принципе действия информатических машин
Исполнители, структуры данных и алгоритмы
Кое-что об исполнителях алгоритмов
Об устройстве и принципе действия информатических машин
Из каких элементов состоит реальная информашина и как они взаимодействуют? Мы снова будем придерживаться нового системного подхода; стало быть, нужно выделить «большую тройку» структуризации. К счастью, это уже давно сделано: информашину можно укрупнённо представить как полносвязное соединение процессора, памяти и интерфейса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.