часть устройства. Работой считывающего устройства управляет блок управления.
Если перед окном считывания документа нет, в механизме про тяжки происходит автоматическая подача следующего документа на транспортер. При появлении документа перед началом считывания транспортер останавливается. Блок управления выдает в логическую часть сигнал Д о к у ме нт и запускает генератор поисковой развертки в блоке разверток. При помощи поисковой развертки происходит раз вертывание луча вдоль строки. При обнаружении подлежащей чте нию строки по импульсам «черного цвета» блок управления переклю-
|
|
|
|
|
|
^ |
I C — |
I L - |
Рис 7-22. |
Последовательность |
|
|
|
разверток |
в оптическом считы |
ТР1 4 7 2 |
вающем |
устройстве. |
/ — поисковая |
развертка; 2 — рабо |
|
|
|
чая |
развертка. |
чает блок разверток на работу от генератора рабочей развертки. На правления движения луча относительно знаков во время поисковой и рабочих разверток изображены на рис. 7-22.
Во время поисковой развертки луч прочерчивает горизонтальные линии параллельно строкам, продвигаясь сверху вниз заданными не большими шагами. Когда поисковая линия пересекает строку со зна ками, проявляется импульс «черного цвета», в результате чего вклю чается рабочая развертка. Во время рабочей развертки луч движется по знакам сверху вниз и слева направо. По окончании рабочей раз вертки опять включается поисковая развертка. Одновременно с ге нератором рабочей развертки включается фиксатор знака, выполня ющий поиск знака в строке.
При обнаружении знака проверяется его положение относитель но рабочего растра по вертикали и производится центрирование зна ка по вертикали. Эту функцию выполняет блок центрирования. Если
знак не сцентрирован, |
то в генератор рабочих разверток |
подается |
■ сигнал ошибки и луч |
по данному знаку развертывается |
вторично. |
По истечении заданного количества разверток фиксатор знака выдает сигнал о наличии знака и переходит к поиску второго знака в строке.
После считывания всей строки устройство переходит к считыванию следующей строки.
Существующие в настоящее время устройства производят в ос новном считывание информации, записанной стандартизированным
шрифтом. Скорость считывания для устройств последовательного
действия достигает 200—500 зн/сек, для устройств параллельного действия — до 4 000.
Г л а в а в о с ь м а я
СИСТЕМЫ ПРЕРЫВАНИЯ ПРОГРАММ
8-1. ОСНОВНЫЕ ОПРЕДЕЛЕНИЯ И ХАРАКТЕРИСТИКИ
Работу вычислительной системы можно представлять в виде некоторой последовательности событий, происхо дящих как внутри, так и вне ее. Такими событиями явля ются, например, выполнение арифметических и логичес ких операций в процессоре, работа вводных-выводных аппаратов, изменение состояния объекта, управляемого машиной, и др. Часть из этих событий являются програм мно-определяемыми, так как они порождаются програм мой и возможные моменты их возникновения заранее из вестны. Другие события являются программно-независи мыми, так как они вызваны посторонними по отношению к программе источниками, либо моменты их возникнове ния не могут быть установлены заранее при программи ровании.
События, происходящие вне процессора, являются, как правило, программно-независимыми. Изменения со стояния управляемого объекта, выход параметров объ екта за дозволенные пределы, запросы оператора проис ходят независимо и асинхронно по отношению к выпол няемой в данной момент программе. То же относится и к периферийным устройствам, работающим одновремен но с выполнением программы в процессоре: хотя момент начала работы этих устройств определяется обычно про граммой, продолжительность, а иногда и последователь ность отдельных операций в периферийных аппаратах заранее точно не известны.
События, происходящие внутри процессора, могут относиться к обоим указанным типам. Последователь ность моментов выполнения различных математических операций известна программисту — она определяется последовательностью команд в программе. Если, на пример, по ходу задачи необходимо произвести сравне ние двух чисел X и У и делается это путем вычисления разности X—У, то момент для проверки этой разности на нуль также легко находится программистом—непос редственно после вычитания У из X. Данные события являются программно-определяемыми. С другой стороны, при выполнении программы могут возникнуть исключи тельные условия, определяемые не алгоритмом решения
задачи, а сочетанием операндов или ошибкой программи ста (переполнение разрядной сетки машины при сложе нии; попытка деления на нуль, выход из установленной для данной программы области памяти и др). Хотя указанные события порождаются самой программой, моменты их возникновения трудно или подчас невозмож но предусмотреть во время программирования.
Вычислительная система должна, вообще говоря, иметь возможность реагировать на любые события, мо гущие оказать влияние на процесс выполнения прог раммы. В случае программно-определяемых событий для этого достаточно, как правило, иметь набор команд условных переходов по различным признакам. В вы шеприведенном примере сравнения чисел X и Y програм мист должен после команды вычитания X— Y поставить команду условного перехода по нулю, и программа, яв ляющаяся реакцией на равенство операндов, будет вве дена в действие без особых трудностей.
В случае программно-независимых событий исполь зование обычных программных методов очень часто бу дет малоэффективным. Предположим, в составе системы
команд машины |
имеется команда условного |
перехода |
по какому-либо |
программно-независимому |
событию. |
Так как момент возникновения события неизвестен, не обходимо составить программу так, чтобы указанная команда перехода повторялась после определенного чис ла команд, периодически проверяя выполнение требуе мого условия. Этот метод называют иногда «сканирова нием входов». Если сканирование производится, напри мер, через каждые 50 команд, то это означает, что вре мя выполнения программы и требуемый объем памяти для хранения программы увеличиваются на 2%, а ре акция на проверяемое событие будет следовать с боль шой задержкой во времени (максимально — на длитель ность выполнения 50 команд). Кроме того, если прог рамма сложна и содержит многочисленные циклы и пе реходы, а количество проверяемых условий велико, то реализация сканирования является достаточно трудной задачей для программиста.
Известны и другие попытки преодолеть трудности синхронизации программы с независимыми от нее собы тиями. Для управления электромеханическими перифе рийными устройствами (например, устройствами ввода или вывода с механическим движением носителя инфор
мации) можно использовать две команды: «пуск устрой ства» и «прием (выдача) данных». Программист разме щает первую команду на некоторое количество команд раньше того места в программе, когда ввод или вывод действительно понадобится, с тем чтобы к моменту вы полнения второй команды нужное устройство было го тово к передаче информации. Хотя этот способ позволяет добиться определенного повышения эффективности в
П р е р В а н н а я
программа
Запрос___________________
_______________1___________ _______________________________
прерывания |
|
|
|
Прерыва ю щ а я |
777777?. |
|
77777777У |
программа |
|
|
|
tв |
|
л г 3 J |
|
|
Время З а я о ш |
Собственно |
Выход |
|
реакции нание |
прерывающая |
из преры |
|
состоя- |
программа |
вающей) |
|
ния пре- |
|
програм- |
|
роаннои |
|
м ы |
|
программы |
|
Рис. 8-1. Упрощенная временная диаграмма процесса прерывания.
осуществлении ввода-вывода, на программиста, как и в предыдущем случае, возлагаются дополнительные забо ты о правильном размещении команд в программе. Кро ме того, вследствие вариаций продолжительности выпол нения команд и времени готовности устройства точное прогнозирование момента готовности периферийного устройства вообще невозможно.
Для того чтобы вычислительная система могла реа гировать на программно-независимые события при ми нимальных усилиях со стороны программиста и макси мально возможном быстродействии, ей необходимо при дать дополнительные аппаратные средства, совокупность которых получила название системы прерывания про грамм.
Прерывание программы есть свойство вычислитель ной системы временно прекращать выполнение текущей программы при возникновении определенных событий и передавать управление программе, специально преду смотренной для данного события. В системе, обладаю щей свойством прерывания, каждое программно-неза висимое событие, которое может влиять на процесс об работки информации (источник прерывания), должно
сопровождаться сигналом, оповещающим о его возник новении. Будем называть эти сигналы запросами преры вания. Программы, затребованные запросами прерыва ния, будем называть прерывающими программами, противопоставляя их прерванным программам, выпол нявшимся машиной до появления запросов.
На рис. 8-1 приведена упрощенная временная ди аграмма процесса прерывания. Запрос прерывания вы зывает к исполнению соответствующую прерывающую
.программу немедленно или с некоторой задержкой. До того момента, когда начнет исполняться первая коман да прерывающей программы, запрос прерывания дол жен, как правило, сохраняться в системе, а затем он мо жет быть погашен. Прекращая выполнение прерванной программы, система прерывания должна обеспечить возможность возврата к ней в последующем, т. е. воз можность продолжить программу с той точки, в кото рой произошло прерывание. Для этого необходимо за помнить состояние прерванной программы, существую щее в момент прерывания.
После исполнения прерывающей программы должен быть осуществлен выход из нее. Если за это время в си стеме не появились запросы прерывания, соответствую щие заявкам на выполнение иных более важных работ, то выход заключается в восстановлении состояния пре рванной программы. Если управление запоминанием со стояния и выходом возложено на саму прерывающую программу, то она должна состоять из трех частей: под готовительной и заключительной, обеспечивающих пе реключение программ, и собственно прерывающей про граммы, осуществляющей ту работу, которая была за требована запросом прерывания.
В вычислительной системе может существовать мно жество различных источников прерывания, вырабатыва ющих свои запросы независимо и асинхронно по отно шению друг к другу. Несколько запросов могут возни кать одновременно, либо они могут приходить во время выполнения прерывающей программы, вызванной преды дущим запросом. Следовательно, должен быть установ лен определенный порядок, в котором эти запросы удо влетворяются. Системы прерывания, в которых имеются аппаратные или программные средства для обслужива ния запросов прерывания в порядке присвоенного им приоритета, называют приоритетными.