Файл: Каган Б.М. Цифровые вычислительные машины и системы учеб. пособие.pdf

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

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

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

Добавлен: 09.04.2024

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

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

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

часть устройства. Работой считывающего устройства управляет блок управления.

Если перед окном считывания документа нет, в механизме про­ тяжки происходит автоматическая подача следующего документа на транспортер. При появлении документа перед началом считывания транспортер останавливается. Блок управления выдает в логическую часть сигнал Д о к у ме нт и запускает генератор поисковой развертки в блоке разверток. При помощи поисковой развертки происходит раз­ вертывание луча вдоль строки. При обнаружении подлежащей чте­ нию строки по импульсам «черного цвета» блок управления переклю-

^

I C —

I L -

Рис 7-22.

Последовательность

 

 

 

разверток

в оптическом считы­

ТР1 4 7 2

вающем

устройстве.

/ — поисковая

развертка; 2 — рабо­

 

 

 

чая

развертка.

чает блок разверток на работу от генератора рабочей развертки. На­ правления движения луча относительно знаков во время поисковой и рабочих разверток изображены на рис. 7-22.

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

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

знак не сцентрирован,

то в генератор рабочих разверток

подается

■ сигнал ошибки и луч

по данному знаку развертывается

вторично.

По истечении заданного количества разверток фиксатор знака выдает сигнал о наличии знака и переходит к поиску второго знака в строке.

После считывания всей строки устройство переходит к считыванию следующей строки.

Существующие в настоящее время устройства производят в ос­ новном считывание информации, записанной стандартизированным

шрифтом. Скорость считывания для устройств последовательного

действия достигает 200—500 зн/сек, для устройств параллельного действия — до 4 000.


Г л а в а в о с ь м а я

СИСТЕМЫ ПРЕРЫВАНИЯ ПРОГРАММ

8-1. ОСНОВНЫЕ ОПРЕДЕЛЕНИЯ И ХАРАКТЕРИСТИКИ

Работу вычислительной системы можно представлять в виде некоторой последовательности событий, происхо­ дящих как внутри, так и вне ее. Такими событиями явля­ ются, например, выполнение арифметических и логичес­ ких операций в процессоре, работа вводных-выводных аппаратов, изменение состояния объекта, управляемого машиной, и др. Часть из этих событий являются програм­ мно-определяемыми, так как они порождаются програм­ мой и возможные моменты их возникновения заранее из­ вестны. Другие события являются программно-независи­ мыми, так как они вызваны посторонними по отношению к программе источниками, либо моменты их возникнове­ ния не могут быть установлены заранее при программи­ ровании.

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

События, происходящие внутри процессора, могут относиться к обоим указанным типам. Последователь­ ность моментов выполнения различных математических операций известна программисту — она определяется последовательностью команд в программе. Если, на­ пример, по ходу задачи необходимо произвести сравне­ ние двух чисел X и У и делается это путем вычисления разности X—У, то момент для проверки этой разности на нуль также легко находится программистом—непос­ редственно после вычитания У из X. Данные события являются программно-определяемыми. С другой стороны, при выполнении программы могут возникнуть исключи­ тельные условия, определяемые не алгоритмом решения

453


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

Вычислительная система должна, вообще говоря, иметь возможность реагировать на любые события, мо­ гущие оказать влияние на процесс выполнения прог­ раммы. В случае программно-определяемых событий для этого достаточно, как правило, иметь набор команд условных переходов по различным признакам. В вы­ шеприведенном примере сравнения чисел X и Y програм­ мист должен после команды вычитания X— Y поставить команду условного перехода по нулю, и программа, яв­ ляющаяся реакцией на равенство операндов, будет вве­ дена в действие без особых трудностей.

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

команд машины

имеется команда условного

перехода

по какому-либо

программно-независимому

событию.

Так как момент возникновения события неизвестен, не­ обходимо составить программу так, чтобы указанная команда перехода повторялась после определенного чис­ ла команд, периодически проверяя выполнение требуе­ мого условия. Этот метод называют иногда «сканирова­ нием входов». Если сканирование производится, напри­ мер, через каждые 50 команд, то это означает, что вре­ мя выполнения программы и требуемый объем памяти для хранения программы увеличиваются на 2%, а ре­ акция на проверяемое событие будет следовать с боль­ шой задержкой во времени (максимально — на длитель­ ность выполнения 50 команд). Кроме того, если прог­ рамма сложна и содержит многочисленные циклы и пе­ реходы, а количество проверяемых условий велико, то реализация сканирования является достаточно трудной задачей для программиста.

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

454


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

П р е р В а н н а я

программа

Запрос___________________

_______________1___________ _______________________________

прерывания

 

 

 

Прерыва ю щ а я

777777?.

 

77777777У

программа

 

 

 

 

л г 3 J

 

 

Время З а я о ш

Собственно

Выход

 

реакции нание

прерывающая

из преры­

 

состоя-

программа

вающей)

 

ния пре-

 

програм-

 

роаннои

 

м ы

 

программы

 

Рис. 8-1. Упрощенная временная диаграмма процесса прерывания.

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

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

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

455


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

На рис. 8-1 приведена упрощенная временная ди­ аграмма процесса прерывания. Запрос прерывания вы­ зывает к исполнению соответствующую прерывающую

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

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

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

456