Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

всст / ПрограммноеУправление

.doc
Скачиваний:
64
Добавлен:
11.03.2016
Размер:
117.25 Кб
Скачать

Программное управление — основа автоматизации вычислительного процесса

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

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

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

Основными свойствами правильно построенного алгоритма являются:

  • результативность — алгоритм должен давать конкретное конструктивное решение, а не указывать на возможность решения вообще;

  • достоверность — алгоритм должен соответствовать сущности задачи и формировать верные, не допускающие неоднозначного толкования решения;

  • реалистичность — возможность реализации алгоритма при заданных ограничениях: временных, программных, аппаратных;

  • массовость — алгоритм должен быть воспроизводимым, пригодным для решения всех задач определенного класса на всем множестве допустимых значений исходных данных;

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

  • дискретность — допустимость расчленения алгоритма на отдельные этапы с возможностью последовательной их реализации на машине;

  • экономичность — алгоритм должен обеспечивать необходимую и достаточ­ную точность решения задачи.

Алгоритм должен быть понятен (доступен) пользователю и/или машине. Доcтупность пользователю означает, что он обязан отображаться посредством конкретных формализованных изобразительных средств, понятных пользователю.

В качестве таких изобразительных средств используются следующие способы их записи: словесный, формульный, табличный, операторный, графический, макроязык программирования:

  • при словесном способе записи содержание последовательных этапов алгоритма описывается в произвольной форме на естественном языке;

  • формульный способ основан на строго формализованном аналитическом зада­нии необходимых для исполнения действий;

  • табличный способ подразумевает отображение алгоритма в виде таблиц, использующих аппарат реляционного исчисления и алгебру логики для задания подлежащих исполнению взаимных связей между данными, содержащимися в таблице;

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

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

  • алгоритмы могут быть записаны и в виде команд какого-либо языка программирования. Если это макрокоманды, то алгоритм читаем и пользователем-программистом, и вычислительной машиной, имеющей транслятор с соответствующего языка.

Языки, представляющие алгоритмы в виде последовательности читаемых программистом (не двоично-кодированных) команд, называются алгоритмическими языками. Алгоритмические языки подразделяются на машинно-ориентированные, процедурно-ориентированные и проблемно-ориентированные.

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

Именно последнее в большей степени и обусловливает целесообразность ознакомления с машинно-ориентированным языком, каковым и является язык ассемблер, при изучении вычислительных систем. Большинство команд машинно- ориентированных языков при трансляции (переводе) на машинный (двоичный) язык генерируют одну машинную команду.

Процедурно-ориентированные и проблемно-ориентированные языки относятся к языкам высокого уровня, использующим макрокоманды. Макрокоманда при трансляции генерирует много машинных команд: для процедурно-ориентированной макрокоманды это соотношение в среднем 1 к десяткам машинных команд», а для проблемно-ориентированной команды это «1 к сотням машинных команд». Процедурно-ориентированные языки программирования являются самыми пользуемыми (Basic, Pascal, C++, PL, ALGOL, COBOL и еще десятки популярных языков). В этом случае программист должен описывать всю процедуру решения задачи, тогда как проблемно-ориентированные языки (их называют также непроцедурными) позволяют лишь формально идентифицировать проблему и указать состав, структуры представления и форматы входной и выходной информации для задачи.

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

Трансляторы бывают двух типов: трансляторы-компиляторы и трансляторы-интерпретаторы.

Компиляторы при трансляции переводят на машинный язык сразу всю программу и затем хранят ее в памяти машины в двоичных кодах. Интерпретаторы каждый' раз при исполнении программы заново преобразуют в машинные коды каждую макрокоманду и передают ее для непосредственного выполнения компьютеру. В памяти интерпретируемые программы хранятся в виде исходных макрокоманд и поэтому в любой момент читаемы человеком.

Откомпилированные двоично-кодированные программы практически человеком не читаемы. Но их можно вызвать в специальную программу-отладчик (DEBUG и его разновидности), которая переведет эти программы на язык ассемблер, то есть сделает их «человекочитаемыми» (еще один довод в пользу изучения языка ассемблер).

Итак, алгоритм непосредственно воспринимается и исполняется компьютером; если он представлен в двоичном коде на машинном языке.

Алгоритм решения задачи, заданный в виде последовательности команд на языке вычислительной машины (в кодах машины), называется машинной программой.

Команда машинной программы (иначе, машинная команда) — это элементарная инструкция машине, выполняемая ею автоматически без каких-либо дополнительных указаний и пояснений.

Машинная команда состоит из двух частей: операционной и адресной.

КОП

Адреса

Операционная часть команды (КОП — код операции) — это группа разрядов в команде, предназначенная для представления кода операции машины.

Адресная часть команды (Адреса) — это группа разрядов в команде, в которых записываются коды адреса (адресов) ячеек памяти машины, предназначенных для оперативного хранения информации, или иных объектов, задействованных при выполнении команды. Часто эти адреса называются адресами операндов, то есть чисел, участвующих в операции.

По количеству адресов (al, a2, аЗ, ...), записываемых в команде, команды делятся на безадресные, одно-, двух- и трехадресные.

  • Типовая структура трехадресной команды:

КОП

a1

a2

a3

а2 и а3 − адреса ячеек (регистров), где расположены, соответственно, первое и второе числа, участвующие в операции, al — адрес ячейки (регистра), куда следует поместить число, полученное в результате выполнения операции.

  • Типовая структура двухадресной команды:

КОП

a1

a2

al — это обычно адрес ячейки (регистра), где хранится первое из чисел, участвующих в операции, и куда после завершения операции должен быть записан результат операции; а2 — обычно адрес ячейки (регистра), где хранится второе участвующее в операции число.

  • Типовая структура одноадресной команды:

КОП

a1

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

Безадресная команда содержит только код операции, а информация для нее должна быть заранее помещена в определенные регистры машины.

Наибольшее применение в ПК нашли двухадресные команды,

Пример двухадресной команды, записанной на языке символического кодирования:

СЛ

0103

5102

Эту команду следует расшифровать так: сложить число, записанное в ячейке 0103 памяти, с числом, записанным в ячейке 5102, а затем результат (то есть сумму) поместить в ячейку 0103.

В кодах машины любая команда содержит только двоичные цифры записанных объектов.

Состав машинных команд

Современные компьютеры автоматически выполняют несколько сотен различных команд. Например, стандартный набор современных ПК IBM PC содержит более 240 машинных команд.

Все машинные команды можно разделить на группы по видам выполняемых операций:

  • операции пересылки информации внутри компьютера;

  • арифметические операции над информацией;

  • логические операции над информацией;

  • операции над строками (текстовой информацией);

  • операции обращения к внешним устройствам компьютера;

  • операции передачи управления;

  • обслуживающие и вспомогательные операции.

Пояснения требуют операции передачи управления (или иначе — ветвления программы), которые служат для изменения естественного порядка выполнения команд. Существуют операции безусловной передачи управления и операции условной передачи управления.

Операции безусловной передачи управления всегда приводят к выполнению после данной команды не следующей по порядку, а той, адрес которой в явном или неявном виде указан в адресной части команды.

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

Команд безусловных передач управления обычно только три:

  • команда передачи управления, которая просто передает управление по заданному адресу и больше никаких действий не выполняет;

  • команда передачи управления (ее часто называют командой вызова процедуры или подпрограммы), которая, кроме передачи управления процедуре, еще и запоминает в специальной стековой памяти адрес следующей команды (адрес возврата из процедуры);

  • безадресная команда передачи управления (команда возврата из процедуры) возвращающая управление по запомненному адресу возврата.

Вторая и третья из названных команд безусловных передач управления работают «на пару» — одна передает управление процедуре, другая возвращает из нее. Важную роль в выполнении этих команд передачи управления (да и при многих других ситуациях, отрабатываемых компьютером) играет специальным образом организованная область оперативной памяти — стековая память. Обращение к ячейкам этой памяти выполняется по принципу «последний записанный операнд первым считывается» или иначе «первым вошел — последним вышел» (FILO — first input, last output). Стековая память позволяет удобно реализовать процессы иерархического обращения ко многим процедурам (количество уровней иерархии практически не ограничено), последовательно записывая и выдавая по принципу FILO адреса возврата каждой из них.

Последовательность подготовки и решения задачи на компьютере обычно следующая.

  1. Формулировка и формализованная постановка задачи.

  2. Выбор математической модели и метода решения задачи.

  3. Разработка алгоритма решения задачи, то есть последовательности процедур, которые необходимо выполнить для решения задачи.

  4. Составление программы решения задачи, то есть запись алгоритма решения задачи на языке, понятном машине.

  5. Ввод программы в компьютер и ее отладка.

  6. Ввод исходных данных и решение задачи на компьютере.

  7. Анализ полученных результатов и выводы по результатам решения.

Режимы работы компьютеров

Однопрограммные и многопрограммные режимы

Вычислительные машины могут выполнять обработку информации в разных режимах:

  • однопрограммном (монопольном) режиме;

  • многопрограммном режиме, который можно подразделить на:

  • режим пакетной обработки информации;

  • режим разделения машинного времени.

Последний, в свою очередь, имеет разновидности:

  • диалоговый режим,

  • режим реального времени.

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

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

Режимы работы ЭВМ

Однопрограммный

Многопрограммный

Непосредственного

доступа

Косвенного доступа

Пакетной

обработки

Разделения

времени

Диалоговый режим

Реального времени

Рис. Классификация режимов работы компьютеров

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

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

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

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

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

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

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

Режим реального времени — еще один вариант режима с разделением машинного времени. Этот режим применяется в основном в динамических системах управления и диагностики, когда строго регламентируется время ответа системы (выполнения задания) на случайно поступающие запросы.

Все режимы разделения машинного времени обеспечивают пользователю работу в режиме «online».

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

Система прерываний программ в ПК

Важнейшая роль в реализации сложных режимов работы отводится системе пре­рывания программ.

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

Организация и управление прерываниями функционально во многом смыкается с управлением задачами — одной из базовых функций операционных систем. Основой для управления процессом одновременного решения нескольких задач (равно как и управления прерываниями) являются процедуры:

  • выбора очередной задачи или определения приоритета задачи;

  • сохранения информации о статусе задачи при ее прерывании (формирование слова состояния программы);

  • упреждения и устранения конфликтов между задачами (координации и синхронизации выполнения задач).

Последовательность действий процессора при реализации прерывания такова. При появлении запроса на прерывание, запланированное заранее или неожиданное, процессор, как правило, после завершения выполнения текущей команды программы анализирует допустимость (разрешенность и приоритетность) данного вида прерывания. Если оно разрешено, процессор производит следующие действия:

  • запоминает в стековой памяти текущее состояние прерываемой программы

  • посылает источнику запроса на прерывание запрос о причине (коде) прерывания;

  • анализирует код запрошенного прерывания (номер прерывания — N)

  • считывает из ОП и записывает в регистры МПП вектор прерывания и его атрибуты;

  • сбрасывает (устанавливает в 0) флаги прерывания (IF) и трассировки (TF);

  • выполняет программу обработки прерывания (которую иногда называют драйвером прерывания);

  • после выполнения программы обработки прерывания возвращает из стековой памяти параметры прерванной программы в регистры МПП и восстанавливает процесс выполнения прерванной программы.

Видов (номеров) прерывания может быть всего 256, и, соответственно, векторов прерывания (адресов CS:IP программ обработки прерываний) в ОП насчитывается до 256. Классификация видов прерываний показана на рис. 9.2.

Прикладные прерывания временно устанавливаются пользователем при многопрограммной работе МП для указания приоритета выполнения прикладных программ (при появлении необходимости выполнения более приоритетной программы текущая менее приоритетная программа прерывается).

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

Аппаратные прерывания инициируются при обращениях к МП, со стороны внешних устройств (таймера, клавиатуры, дисководов, принтера и т. д.) с требованием уделить им внимание и выполнить совместно с ними те или иные процедуры. Прерывания от таймера, например, повторяются 18 раз в секунду, от клавиатуры — при каждом программно не запланированном нажатии некоторых клавиш и т. п. Аппаратные прерывания не координируются с работой программы и могут

1 Многопользовательский режим, строго говоря, отличается от многозадачного хотя бы тем, что в первом требуется дополнительная диспетчеризация, обеспечивающая интерактивный (диалоговый) режим работы пользователей

11