Автоматизация
Вид материала | Документы |
СодержаниеОсновы программирования задач реального Центральный процессор Оперативная память Центральный процессор |
- В. И. Харитонов > К. И. Меша Одобрено методической > С. С. Драгунов комиссией факультета, 321.05kb.
- Темы курсовых проектов Автоматизация учета налогоплательщиков (НП) физических и юридических, 19.54kb.
- Автоматизация бухгалтерского учета нужна ли она?, 216.55kb.
- Программа вступительного экзамена по приему в магистратуру по специальности 6М070200, 225.94kb.
- Автоматизация работы программ расчета, 29.26kb.
- Автоматизация и моделирование работы предприятий по строительству промышленных объектов, 445.96kb.
- Автоматизация процессов мониторинга объектов железнодорожной инфраструктуры на основе, 315.84kb.
- К рабочей программе учебной дисциплины «Интегрированные системы проектирования и управления»», 31.58kb.
- Автоматизация процесса формирования индивидуальных учебных планов в системе переподготовки, 256.55kb.
- Темы курсовых работ По дисциплине «Бухгалтерские информационные системы» Автоматизация, 14.74kb.
ОСНОВЫ ПРОГРАММИРОВАНИЯ ЗАДАЧ РЕАЛЬНОГО
ВРЕМЕНИ
§ 5.1. ОБЩИЕ ХАРАКТЕРИСТИКИ СМ ЭВМ
Структура вычислительного комплекса
Разработка и серийное освоение новых семейств производительных, экономичных и надежных малых вычислительных машин СМ ЭВМ открывают возможности массового внедрения в практику физического эксперимента автоматизированных измерительных систем. Весьма удобными для использования в физических измерительных установках оказались ЭВМ типа СМ-4. Достаточно большие вычислительные возможности, наличие средств подключения физической аппаратуры, развитое программное обеспечение, в том числе операционные системы реального времени, позволяют использовать управляющие вычислительные комплексы (УВК) на базе ЭВМ СМ-4 для решения широкого круга задач контроля, управления и обработки информации.
Кроме того, для задач автоматизации научных исследований выпускают так называемые измерительно-вычислительные комплексы (ИВК), в состав которых помимо ЭВМ со стандартными внешними устройствами входят от одного до четырех крейтов КАМАК, связанных с ЭВМ и укомплектованных проблемно-ориентированным набором модулей в стандарте КАМАК.
Выбор программного обеспечения комплекса определяется характером стоящих перед ним задач, а также его аппаратной конфигурацией. Важнейший элемент программного обеспечения УВК или ИВК — его операционная система. Операционная система (ОС) представляет собой сложный программный комплекс, обеспечивающий управление всем вычислительным процессом: запуском и завершением отдельных программ, распределением памяти и других ресурсов машины, организацией и ведением очередей в случае появления нескольких запросов к одному внешнему устройству, выводом диагностических сообщений, связью с оператором и т. д. Оператор, вводя с клавиатуры терминала определенные команды, может заставить ОС выполнить требуемые действия: загрузить в память и запустить ту или иную системную (ассемблер, компилятор, редактор) или пользовательскую программу, вывести на экран терминала список и состав имеющихся библиотек, сообщить о наличии и распределении ресурсов ЭВМ и т. д. Освоение средств диалога с ОС — важный элемент эффективного использования мини-ЭВМ. В настоящее время наиболее распространенными операционными системами УВК и ИВК на базе СМ-4 являются дисковые операционные системы РАФОС и ОС РВ.
Операционная система РАФОС ориентирована на решение задач реального времени с использованием минимальной конфигурации ЭВМ (в частности, она может использоваться на микро-ЭВМ «Электроника-60», укомплектованной накопителями на гибких магнитных дисках). Эта система позволяет создавать, отлаживать и выполнять в диалоговом однопользовательском режиме вычислительные задачи на языках ФОРТРАН и БЭЙСИК; управлять работой связанных с ЭВМ физических установок с помощью программ, написанных на МАКРОАССЕМБЛЕРе; осуществлять совмещение режима реального времени с выполнением фоновой вычислительной задачи.
Операционная система ОС РВ — это универсальная мультипрограммная многотерминальная операционная система реального времени. Система обеспечивает одновременную работу многих (до нескольких десятков) пользователей, каждый из которых с индивидуального терминала в диалоговом режиме может выполнять любую доступную комплексу вычислительную работу на языках ФОРТРАН, БЭЙСИК, МАКРОАССЕМБЛЕР и др. Одновременно система может обслуживать задачи реального времени по приему данных из физических установок и управлению ими. При этом всю работу по распределению ресурсов ЭВМ (оперативной памяти, внешних устройств, времени центрального процессора и т. д.) система берет на себя, обеспечивая одновременное выполнение многих задач. Однако положительные качества этой системы могут быть реализованы в полной мере лишь на достаточно мощном по аппаратной конфигурации УВК, оснащенном достаточным количеством периферийных устройств.
Рис. 5.1. Конфигурация ВК СМ ЭВМ
Упрощенную модификацию ОС РВ можно использовать для управления микро-ЭВМ типа Электроника-60, при этом она позволяет создавать иерархические ИВК, включающие в себя несколько ЭВМ Электроника-60, каждая из которых обслуживает «свою» экспериментальную установку, и связанную с ними более мощную мини-ЭВМ типа СМ-4, управляющую работой всех микро-ЭВМ нижнего уровня, принимающую от них массивы экспериментальной информации и производящую ее обработку.
Вообще, единство аппаратной и программной идеологии микро-ЭВМ Электроника-60 и мини-ЭВМ СМ-4 в сильной мере способствует их широкому распространению. Программный комплекс, разработанный для ЭВМ Электроника-60, может быть перенесен практически без изменений на ЭВМ СМ-4, если по мере развития измерительной системы было признано целесообразным оснащение ее более мощными вычислительными средствами. Использование в этом случае мини-ЭВМ другого типа, например СМ-2 или ЕС-1010, потребовало бы разработки заново всего программного обеспечения эксперимента, что представляет собой чрезвычайно трудоемкую задачу. Широко практикуется и обратное: программы реального времени, предназначенные для измерительного комплекса на базе ЭВМ Электроника-60, составляются и отлаживаются на ЭВМ СМ-4, где этот процесс протекает значительно быстрее и эффективнее, а уже затем переносятся на ЭВМ Электроника-60.
Конфигурация вычислительного комплекса (ВК) на базе ЭВМ СМ-4 традиционна для современных мини-ЭВМ (рис. 5.1). Рассмотрим кратко основные элементы комплекса.
Центральный процессор служит, с одной стороны, для выполнения необходимых операций с данными, а с другой — для управления работой электронных узлов ЭВМ.
В оперативной памяти хранятся выполняемые программы и данные к ним. Объем оперативной памяти ЭВМ Электроника-60 относительно невелик — не более 56К байт. Однако ЭВМ СМ-4 может быть укомплектована памятью общим объемом до 248К байт. Это дает возможность организовать многопользовательский, мультипрограммный режим, при котором в оперативной памяти одновременно находятся программы нескольких пользователей и периодическое переключение процессора с программы на программу не требует времени на загрузку программы в память. Мультипрограммный режим может быть использован и в сложных системах реального времени, когда наличие в памяти всех или некоторых элементов программного комплекса может заметно ускорить процесс обработки данных.
Для того чтобы оператор мог вводить в ЭВМ команды и получать ответные сообщения, в состав ВК входит системный терминал, в качестве которого обычно используется алфавитно-цифровой дисплей. Если ВК работает в однопользовательском режиме, то системный терминал выполняет также функции пользовательского. Пользователи поочередно работают за ним в диалоговом режиме, отлаживая или выполняя свои программы. Если же ЭВМ обслуживает многопользовательский ВК, в состав комплекса включаются кроме операторского еще и пользовательские дисплеи. Число их в зависимости от потребностей может доходить до нескольких десятков. Обычно они подключаются к ЭВМ через мультиплексор, использование которого экономит аппаратуру сопряжения с ЭВМ, так как через один мультиплексор к ЭВМ можно подключить 8—16 терминалов.
Рассмотрим несколько подробнее структуру оперативной памяти и центрального процессора ЭВМ типа СМ-4.
Оперативная память
Как известно, оперативная память ЭВМ представляет собой электронное устройство, состоящее из большого числа двоичных запоминающих элементов, а также схем управления ими. Минимальный объем информации, к которому имеется доступ в памяти, составляет один байт. Чаще, однако, считывание и запись происходят парами байтов — словами. Каждое машинное слово, таким образом, содержит 16 двоичных разрядов и хранится в 16-разрядной ячейке памяти. В дальнейшем для простоты изложения под словом будет часто пониматься также и место его хранения — ячейка памяти ЭВМ.
Все байты оперативной памяти нумеруются, начиная с нуля. В каждом машинном слове имеются четный и нечетный байты, причем четный байт считается младшим (рис. 5.2). Младший байт слова содержит разряды с 0-го по 7-й, старший байт — с 8-го по 15-й. Номера слов совпадают с номерами четных (младших) байтов. Нужные слова или байты отыскиваются в памяти по их номерам, которые выполняют функции адресов.
Рис. 5.2. Структура оперативной памяти
Программа, находящаяся в оперативной памяти, содержит команды и данные. Команда — это указание процессору выполнить ту или иную элементарную операцию: увеличить или уменьшить содержимое некоторого машинного слова, перенести число из одного слова памяти в другое, сдвинуть содержимое слова вправо или влево на столько-то разрядов и т. п. Команда хранится в памяти в виде условного двоичного кода, который может занимать одно, два и три машинных слова.
Данные могут представлять собой числа или последовательность символов (букв, цифр, различных знаков). Кодировка чисел зависит от их описания. Целые числа, с которыми чаще всего оперируют программы, написаные на АССЕМБЛЕРе, хранятся в памяти просто в виде их двоичных эквивалентов, занимая одно или два слова; вещественные числа (их используют программы, написанные на ФОРТРАНе) занимают два или четыре слова и содержат двоичную мантиссу со знаком и двоичный порядок. Наконец, символы записываются в памяти с помощью специального кода ASCII, в котором каждому символу соответствует определенное двоичное число, занимающее всегда 1 байт.
Двоичная система счисления, в которой работают все цифровые электронные устройства, неудобна для человека. Для удобства представления двоичного содержимого машинных слов в вычислительной технике широко используются шестнадцатеричная и восьмеричная системы счисления. В машинах типа СМ-4 применяется восьмеричная система.
Каждый разряд восьмеричного числа может принимать 8 значений, от 0 до 7. Восемь различных комбинаций единиц и нулей, от 000 до 111, содержатся также в трех двоичных разрядах. Таким образом, каждая тройка двоичных разрядов эквивалентна одной восьмеричной цифре и перевод двоичного числа в восьмеричное и наоборот не представляет труда (рис. 5.3).
Для представления содержимого 16-разрядного слова в восьмеричной системе требуется шесть восьмеричных цифр, причем старшая цифра может принимать лишь значения 0 или 1. Таким образом, диапазон целых положительных чисел, которые могут быть записаны в одном машинном слове, заключен в пределах от 0000008 до 1777778 (или от 0 до 6553510).
Рис. 5.3. Представление содержимого машинного слова в восьмеричной форме
При необходимости использовать в программе положительные и отрицательные целые числа знак числа указывают в самом старшем разряде слова (0 означает плюс и 1 —минус), а под значащую часть числа отводят оставшиеся 15 разрядов. При этом отрицательные числа записываются в дополнительном коде, который образуется из прямого путем замены всех нулей единицами и наоборот (обратный код) и прибавления к полученному числу единицы:
прямой код числа 5: 000...000101
обратный код числа 5: 111...111010
дополнительный код числа 5: 111...111011
Для знакового представления диапазон чисел уменьшается. Положительные числа заключены в пределах от 0000008 до 0777778 (или от 0 до 3276710), а отрицательные — от 1777778 до 1000008 (или от —1 до —3276810). Таблицы ПЗ и П4 иллюстрируют изложенное.
Центральный процессор
Процессор является одним из основных элементов любой вычислительной машины, в том числе мини-ЭВМ. Условно в процессоре можно выделить четыре функциональные части: управляющее устройство, арифметико-логическое устройство, регистры общего назначения, специальные регистры.
Наиболее важной для программиста частью центрального процессора является набор регистров общего назначения (РОН). Процессоры ЭВМ типа СМ-4 содержат восемь регистров общего назначения длиной 16 двоичных разрядов каждый и имеющих условные (мнемонические) обозначения R0, R1 ,..., R7. Все эти регистры программно доступны, т. е. их содержимое можно прочитать или изменить с помощью соответствующих команд.
Первые шесть регистров, с R0 поo R5, являются в полном смысле слова регистрами общего назначения. Их используют программисты по своему усмотрению для хранения исходных данных, промежуточных результатов вычислений, адресов ячеек (слов или байтов) оперативной памяти и т. д. Основное преимущество использования РОН заключается в убыстрении вычислений. Обращение к регистру требует очень мало времени (менее 1 мкс), в то время как команды с обращением к памяти выполняются за 5—10 мкс.
Регистры R6 и R7, хотя формально и принадлежат к числу регистров общего назначения, однако выполняют специальные функции. Регистр R6 называют указателем стека; служит он для работы со специальной областью памяти — стеком (подробнее см. в § 5.5). К регистру R6 обращаются с помощью мнемонического обозначения SP (от слов stack pointer — указатель стека).
Регистр R7 называют счетчиком команд или программным счетчиком (условное обозначение PC, от слов program counter — программный счетчик). Его основное назначение — хранить адрес очередной выполняемой команды. Обычно команды любой программы располагаются в памяти друг за другом, в порядке их выполнения. Программный счетчик перед началом выполнения .программы указывает на первую команду программы. Как только код этой команды будет считан и процессор приступит к расшифровке и выполнению команды, содержимое программного счетчика автоматически увеличивается и он указывает на следующую команду. Тем самым обеспечивается последовательное выполнение команд программы.
В специальных регистрах процессора хранится разнообразная информация о режиме работы ЭВМ, распределении памяти, состоянии выполняемой программы и т. д. Наиболее важный из них — 16-разрядный регистр слова состояния процессора (ССП). Особый интерес представляют младшие четыре разряда ССП, которые содержат коды условий (рис. 5.4). Эти разряды устанавливаются после выполнения каждой машинной команды и содержат информацию о ее результате. В описании машинных команд указывается, как влияет результат выполнения на установку кодов условий, но для большинства команд коды условий устанавливаются следующим образом:
N=1, если результат отрицателен;
Z=l, если результат равен нулю;
V=l, если произошло арифметическое переполнение, т. е. выход результата операции за пределы диапазона знакового представления (см. табл. П4);
С=1, если произошел перенос из старшего разряда, что часто совпадает с попыткой записать 1 в отсутствующий 16-й разряд слова, на более точно определяется как выход результата операции за пределы беззнакового представления чисел (см. табл. П3).
Коды условий используются прежде всего командами условных переходов, которые автоматически анализируют их состояние. Кроме того, через разряд С операционная система сигнализирует пользователю об ошибках, допущенных им при вызове программ ОС. Поэтому после каждого программного обращения к средствам операционной системы целесообразно проверять состояние разряда С. Для проверки, а также для принудительной установки и сброса разрядов кодов условий предусмотрены специальные команды.
Рис 5.4 Регистр слова состояния процессора.
В разрядах 5—7 ССП хранится уровень приоритета процессора, который может принимать восемь значений — от 0 до 7. Заполняя J эти разряды, программист может задавать программе в целом или отдельным ее участкам разные уровни приоритета. Это важно при организации работы внешних устройств в режиме прерываний: внешнее устройство может прервать выполнение текущей программы, только если его приоритет выше текущего приоритета процессора. Назначая программе тот или иной уровень приоритета по отношению к приоритетам внешних устройств, можно организовать требуемое взаимодействие между внешними устройствами и обслуживающими их программами.
Разряд Т ССП позволяет приостанавливать выполнение программы на заданной команде. С помощью этого разряда организуется режим динамической отладки программ, написанных на АССЕМБЛЕРе.
Старшие четыре разряда ССП используются многозадачными операционными системами в машинах, оснащенных диспетчером памяти. В них указывается режим работы процессора (пользовательский или системный) в настоящий момент и режим, существовавший до последнего прерывания.
§ 5.2 ПЕРВОНАЧАЛЬНЫЕ CВЕДЕНИЯ О СОСТАВЛЕНИИ ПРОГРАММ НА ЯЗЫКЕ АССЕМБЛЕР СМ ЭВМ.
Первым этапом подготовки любой программы для ЭВМ является создание исходного модуля, т. е. текста программы, написанного на одном из включенных в систему языков программирования — АССЕМБЛЕРе, ФОРТРАНе и т. д. Исходный модуль создается на .мини-ЭВМ в интерактивном режиме при непосредственном общении , с ЭВМ через ее терминал. Текст программы набирается на клавиатуре терминала, имеющей полный набор необходимых для написания программ знаков — латинские и русские буквы, цифры, специальные машинные символы, клавиши пробела, перевода строки и т. д. Текст, вводимый с клавиатуры терминала, в простых вычислительных системах записывается на перфоленту, а при наличии Восковой памяти заносится на магнитный диск под определенным именем, образуя файл с исходным текстом. Такие файлы могут существовать независимо друг от друга, а могут объединяться в библиотеки исходных модулей. Объединение программ в библиотеки предоставляет пользователю некоторые дополнительные удобства при работе с ними.
Следующий этап — трансляция — заключается в том, что исходный текст программы обрабатывается специальной системной программой — транслятором, который преобразует строки написанной программистом программы в машинные коды. Результат трансляцин называют объектным модулем. Он содержит кроме собственно программы еще и различную служебную информацию: список использованных в программе символических обозначений с их значениями и атрибутами, список программных секций с их характеристиками и т. д.
В простых ВК, не использующих операционую систему, объектный модуль загружается в указанную программистом область памяти, счетчик команд настраивается на адрес первой команды программы и процессор приступает к ее выполнению. Если при этом требуется использовать какие-либо -стандартные программы (вычисления математических функций, ввода — вывода и проч.), то объектные модули этих программ тоже должны быть загружены в оперативную память перед выполнением основной программы.
Если, однако, ВК работает под управлением операционной системы, любая программа после трансляции должна еще пройти этап компоновки. На этом этапе специальная программа операционной системы, называемая редактором связей, компоновщиком или построителем задачи, организует подсоединение к основной программе всех затребованных в ней подпрограмм пользователя, а также необходимых средств операционной системы. Результат компоновки называют загрузочным модулем или образом задачи.
В функции компоновщика входит также выделение для компонуемой программы некоторой области адресов оперативной памяти, в которой эта программа будет выполняться. При этом компоновщик уточняет значения символических выражений, использованных в программе. Дело в том, что в процессе трансляции программы символические выражения с использованием, например, меток получают относительные значения, т. е. значения относительно начала той программной секции, в которой они расположены. При этом метки, расположенные в одних и тех же местах разных программных секций, будут иметь одинаковые значения. Компоновщик пересчитывает все относительные выражения с учетом фактического расположения программных секций в памяти. В вычислительном комплексе, оснащенном дисковой памятью, образы всех задач хранятся на магнитных дисках. После получения соответствующей команды оператора затребованная задача загружается с диска в память и начинает выполняться.
Вернемся теперь к этапу составления исходного текста программы. Одним из возможных способов создания программы является написание ее непосредственно в машинных кодах.
Написание программы в кодах — дело весьма трудоемкое. Программист должен знать коды всех команд и их модификаций, помнить номера ячеек, в которых размещены данные, уметь вычислять и записывать в виде кодов смещения при организации переходов и т. д. Программирование существенно упрощается при использовании АССЕМБЛЕРа, представляющего собой по сути дела символическое представление машинного языка *.
Мнемоническое (символическое) обозначение команд, регистров, и меток, а также другие средства облегчения программирования в АССЕМБЛЕРе делйют программу достаточно наглядной, упрощают ее составление и отладку. В то же время программирование на АССЕМБЛЕРе — это по существу составление программы на машинном языке, хотя и с использованием символических обозначений. Этим и объясняется, с одной стороны, трудоемкость программирования на АССЕМБЛЕРе, а с другой — его широкие возможности.
Как и в любом другом языке, предложения АССЕМБЛЕРа должны быть написаны по определенным правилам, совокупность которых называют форматом предложения.
В общем случае предложение АССЕМБЛЕРа состоит из четырех полей: поля метки, поля оператора, поля операндов и поля комментария. Поля располагаются в перечисленном порядке и обычно отделяются друг от друга одним или несколькими пробелами. Каждое предложение АССЕМБЛЕРа при его наборе на клавиатуре терминала заканчивается нажатием клавиши Возврат каретки (RETURN).
Метка представляет собой любую комбинацию алфавитно-цифровых символов, начинающуюся с буквы. Посте метки ставится двоеточие. Длина метки не ограничивается, но АССЕМБЛЕР анализирует только первые шесть символов метки, поэтому не рекомендуется использовать метки длиннее шести символов. Примеры меток:
BEGIN:
CYCLE 1:
FIN:
В программах операционных систем встречаются метки, содержащие знаки точки или доллара, однако в пользовательских •программах эти знаки применять не рекомендуется.
Метка характеризует адрес предложения, к которому она относится. Ссылка на метку равносильна ссылке на адрес ячейки памяти (слова или байта), в которой размещается или с которой начинается соответствующее предложение. Обычно программист не знает, в какой конкретно области памяти будет размещена его программа. Использование символических меток позволяет об ращаться к полям данных, организовать переходы в программе и т. д., не зная абсолютных адресов используемых ячеек памяти. 1 Метки не являются обязательными элементами предложений и -включаются только в те предложения, на которые в программе имеются ссылки.
Оператор характеризует действие, которое надо выполнить в данном предложении. Операторы бывают трех типов: команда (инструкция), директива и макровызов.
Команда указывается в поле оператора в виде мнемонического Обозначения (CLR, INC, CMP и т. д.). В процессе трансляции исходного текста транслятор преобразует мнемонические обозначения команд в соответствующие машинные коды, например обозначение CLR в код 0050, INC в код 0052 и т. д. Выполнение же действий, обозначаемых этими кодами, происходит позже, на этапе выполнения оттранслированной программы.
Директива АССЕМБЛЕРа представляет собой указание транслятору выполнить некоторые действия: заполнить определенные строки объектного модуля заданными числами или кодами символов, оформить фрагмент программы в виде секции, вывести на печать или, наоборот, подавить ту или иную информацию о транслируемой программе и т. д. В отличие от команд, которые при трансляции только преобразуются в соответствующий код, директивы выполняются в процессе трансляции: заполняются строки объектного модуля, печатается листинг и т. д.
Макровызовы дают возможность вставлять в текст написанные заранее фрагменты (макроопределения), что облегчает и ускоряет разработку сложных программ. Для вызова макроопределения следует указать в поле оператора его имя.
Операнды имеют различный смысл и разные правила написания в зависимости от того, к какому оператору они относятся. Так, операндами команд являются символические обозначения ячеек памяти либо регистров, участвующих в данной операции, а также константы. Предложение АССЕМБЛЕРа может содержать один или несколько операторов; если операторов несколько, они разделяются запятыми.