Файл: Оперативные графические системы в автоматизации проектирования..pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 23.10.2024

Просмотров: 75

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Ниже рассматриваются принципы построения н алго­ ритмы работы некоторых частей программного обеспе­ чения ОГС.

Важной задачей управления при работе в режиме диалога является согласование двух асинхронных про­ цессов: вычислений и обслуживания запросов пользова­ теля: Возможны два состояния ОГС: счет по программе, ожидание ввода с пульта.

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

Синхронизацию процессов обеспечивает программный блок связи ОГС с пользователем — монитор и ряд ап­ паратурных блоков. Основными сигналами для управле­ ния и обмена являются требование ввода от программы; запрос ввода пульта, указывающий на готовность информации к вводу; команда ввода, вызывающая пере­ дачу информации от пульта. Рассмотрим некоторые способы синхронизации.

 

Поздний

Ранний

 

(

запрос

 

запрос

Вычислительная

 

Требование

 

■оШдао—

программа

i Г

 

Монитор

 

Время

 

 

Рис. 5.2. Синхронное обслуживание запросов. Однопрограммпын процессор

138

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

В первом случае (ранний запрос) сигнал запроса ус­ танавливает указатель запроса У3: = 1, т. е. запоминает­ ся до момента анализа указателя программой. По уста­ новленному в 1 указателю производится обмен с пуль­ том, и указатель гасится. Во втором случае (поздний запрос) отсутствие запроса вызывает останов процессора

Рис. 5.3. Синхронное обслуживание запросов. Многопрограммный процессор

139



ii ожидание. Сигнал запроса инициирует продолжение программы с команды ввода. В момент анализа указа­ теля должен быть аппаратурпо задержан сигнал запро­ са, чтобы избежать «зависания». Таким образом, случаи одновременного поступления запроса сводится к случаю

позднего запроса.

Во время ожидания процессор не используется диало­ говой программой, и его целесообразно загрузить другп-

 

Поздний

Ранний

Вычислительная

запрос

запрос

 

 

программа I

J U

 

Монитор о—о

 

Супервизор

Время

Фонобая задача

 

 

 

Рис'. 5.4. Асинхронное облуживамне запросов

мп вычислениями. В мультипрограммной системе — это фоновые задачнББлок-обмена монитора в такой системе может выполняться на прерывающей ветви программы как часть супервизора (рис. 5.3). При выполнении блока обмена анализируется, был ли запрос. При его отсутст­ вии (Пр3 = 0) происходит обращение к супервизору си­ стемы с макрокомандой «Ждать». После этого пронсхо-

140

днт прерывание диалоговой программы и запускается фоновая задача. Поздний запрос вызывает возврат управления монитору, который обменивается с пультом и гаопт признак запроса (Пр3: = 0), после чего продолжа­ ется выполнение диалоговой пропраммы. Ранний запрос с помощью супервизора устанавливает признак (ПрЗ: = —1). Об,мен производится в момент, определяемый диа­ логовой программой. Запрос, поступивший во время работы супервизора или монитора, задерживается аппа­ ратурою (запоминается) или игнорируется и не вызывает их прерывания.

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

5.3. ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ УПРАВЛЕНИЯ

Существует несколько

методов для описания реакции

ОГС на внешние события, о которых

сигнализируют ей

прерывания (запрос ввода

пульта,

сбой при

обмене

и т. п.). Все эти методы служат для

определения,

какая

процедура должна

быть

выполнена при возникновении

данного события.

В любом

случае

при возникновении

прерывания от пульта операционная

система

собирает

определенную информацию о состоянии пульта и

про­

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

141-


Эти процедуры могут вызываться двумя способами: син­ хронно или асинхронно по отношению к текущей про­ грамме, как это было описано выше.

Рассмотрим способы описания процедур обработки запросов с помощью процедурно-ориентированных язы­ ков высокого уровня.

Использование оператора условного перехода IF в языках FORTRAN, ALGOL, PL/1. При получении запроса от пульта система должна ввести и записать некоторую информацию (тип вводного устройства, инициировавше­ го запрос; идентификатор элемента изображения для светового пера или код нажатой клавиши для функцио­ нальной клавиатуры и т. п.). При этом система присваи­ вает значение TRUE (истина) булевской переменной типа устройства LIGHTPEN, K.EY и т. п. и значение соответ­

ствующего

кода — арифметической

переменной

ELEMENT, CODE и т. п.

 

В дальнейшем при выполнении в программе операто­

ра типа IF iLIGITTPEN THEN GOTO

LABEL 1 ELSE

GOTO LABEL2 пли IF KEY THEN CALL ROUTINE уп­ равление передается на блок с указанной меткой LABEL или к соответствующей процедуре ROUTINE, которые выполняют действия по обслуживанию запроса. Это при­ мер синхронной обработки.

Табличный метод определяет переходы в программе, соответствующие каждому типу запроса. Таблица пере­ ходов реализуется с помощью специальной программы либо путем расширения языка за счет введения соответ­ ствующих операторов. При использовании подпрограммы она содержит в качестве параметров список пар, связы­ вающих тип запроса (atlnlype) с соответствующей про­ цедурой (routine). Обращение к такой подпрограмме имеет вид: CALL TABLE (attntype 1, routine 1; ...; attntype n, routine п). Обычно используется характерный для FORTRAN-систем метод синхронного обслуживания. Запрос запоминается операционной системой. В дальней­ шем программа в ходе выполнения проверяет наличие запроса. Если был запрос, то с помощью подпрограммы TABLE генерируется вызов процедуры, соответствующей типу запроса. При отсутствии запроса выполнение про­ граммы может быть задержано до его получения. Таб­ личный метод применим и для асинхронного обслужива­ ния, если система обеспечивает асинхронный вызов под­

142

программ. Тогда переход к соответствующей процедуре произойдет немедленно при получении запроса.

Использование оператора ON. Оператор ON в PL/1 предназначен для определения операций, которые долж­ ны быть выполнены при возникновении сбойных ситуа­ ций, вызывающих прерывание: переполнение, нулевой делитель и т. п. [6]. Язык может быть расширен вклю­ чением в список этих ситуаций прерываний от графиче­ ского пульта [7]. Тогда процедура обработки запроса светового пера будет иметь вид:

ON LIGHTPEN BEGIN

оператор 1

оператор

END.

Метод В. Р. Сазерленда и В. М. Ньюмена. Приведен­ ные выше методы требуют описания всех возможных в данном состоянии программы типов запросов и процедур их обслуживания (так, если разрешен только один тип запроса, то необходимо, кроме его описания, привести

все остальные типы и указать, что они

игнорируются).

В [8] предлагается метод, требующий

указания пар

«тип запроса — переход» только для разрешенных типов запросов. Таблица состояний и причин переходов пред­ ставляется операторами вида: ОПЕРАТОР ((тип запроса 1, метка состояния 1), ... (тип запроса п, метка состояния п), ОЖИДАНИЕ/ЦИКЛ)) для каждого состояния.

При использовании ЦИКЛа циклически выполняются операторы последующей процедуры до получения запро­ са. Если в ОПЕРАТОРе задан режим ОЖИДАНИЕ, вы­ полнение программы блокируется до получения запроса, после чего программа переходит в соответствующее со­ стояние. Такое описание может использоваться как для синхронной, так и для асинхронной обработки.

В качестве примера реализации программного управ­ ления диалогом в ОГС рассмотрим алгоритмы работы блоков монитора, обеспечивающих синхронизацию про­ цессов ввода и вычислений в ОГС на базе мультипро­ граммной ЭВМ «Мпнск-32» [9].

143


Для ввода информации используется электромехани­ ческий планшет (УВГИ), устройство управления свето­ вым маркером (М), алфавитно-цифровая клавиатура (АЦК) и программируемая функциональная клавиатура (ПФК.) с подсветами. Вместе с оперативным устройст­ вом отображения перечисленные устройства составляют пульт, который рассматривается как одно активное внеш­ нее устройство по отношению к ЭВМ «Мипск-32». Подго-

Рис. 5.5. Структурная схема вводной части пульта

товленная к вводу информация хранится на буферных регистрах вводных устройств. Требование ввода иниции­ руется устройствами при нажатии пользователем на одну из клавиш или сигналом совпадения в режиме указания элемента световым маркером. При этом в ЭВМ поступает сигнал «запрос прерывания», служащий причиной пре­ рывания на 3-й уровень программы «Диспетчер». Одно­ временно в специальный регистр символа состояния (РгСС) пульта заносится код, идентифицирующий источник вводимой информации (рис 5.5). «Диспетчер»

144

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

спомощью «Диспетчера» управление возвращается в прерванную программу. Источники информации и соот­ ветствующие нм коды РгСС и определители команд вво­ да приведены в табл. 3. При реализации программ актив­ ного ввода существенными оказались вопросы согласова­ ния во времени моментов возможного получения запросов

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

Процесс проектирования в режиме диалога состоит из последовательности выполняемых процедур и выборов пользователем очередной процедуры. Команды пользова­ теля на выполнение определенных действий принимает и расшифровывает блок монитора — интерпретатор ко­ мандного языка. Он запускает программы расчетов и обслуживание процедуры, а также выдает сообщения о состоянии вычислительного процесса на пульт пользова­ теля. Выполнение программ заканчивается выводом ре­ зультатов на пульт и передачей управления монитору. Асинхронное обслуживание запросов позволяет по ко­ манде пульта прервать выполнение расчетов и перейти в состояние ожидания команды интерпретатора. При реа­ лизации интерпретатора командного языка необходимо стремиться к созданию процедур, упрощающих описание

 

 

 

 

 

Т а б л и ц а 3

Источник вводимой

Состав информации

Код РгСС

Определитель

 

информации

команды ввода

 

УВГИ

Координаты X ,

V'

00001

11100

Маркер в режиме

Координаты X ,

Y

00010

10100

задания

координат

 

 

00100

10101

Маркер

в режиме

Адрес команды

 

указания

отображения

 

01000

10011

 

АЦК

Код клавиши

 

 

ФК

Код клавиши

 

10000

10001

 

РгСС •

Код источника

 

 

10000

запроса

10. Зак. 218

145