Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Контроль хода программы





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

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

На различных этапах управления из модулей формируется рабочая программа.

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

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

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

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

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

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

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

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

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

Покажем на простом примере, как можно осуществить такую про­верку. На рис. 6.2 представлена блок-схема разветвляющейся программы с двумя ветвями. Блок 1 является узлом разветвления, который проверяет некоторое условие х < 0. Если разветвление произведено правильно, то вначале выполняется один из линейных участков (либо блок 2, либо блок 3). Если разветвление в блоке 1 произошло правильно и выполнялась первая ветвь, то условие х < 0, проверяемое в блоке 4, будет выполнено и произойдет переход к блоку 6. Аналогичным образом при выполнении второй ветви в блоке 5 при правильном разветвлении должно выполняться условие x> 0. Невыполнение условий в блоках 4 и 5 свидетельствует о на­личии ошибки, и происходит передача управления блоку 7 анализа причин ошибки.

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

Здесь имеются два узла разветвления - блоки 1 и 4. После выполне­ния первого разветвления в заранее выбранную ячейку памяти засылается одно из слов: А1 или А2. Второй узел обеспечивает выход в одну из ветвей программы. В каждой из ветвей осуществляется проверка условия А1 = А*1 или а2 = А*2 где А*1 и а*2 - контрольные значения А1 и А2. Если происходит совпадение слов, то переходят к блоку 9, если несовпадение - к блоку 10.

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

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

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

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

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

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

В блоке 2 при каждом выполнении цикла к содержимому ячейки добавляется единица.

Блок 3 реализует проверку числа выполне­ния цикла аппаратурным способом. Здесь а - те­кущее, а n - требуемое число повторений цикла.

Когда циклический участок будет выполнен заданное число раз, управление передается блоку 4, где проверяется содержимое программного счетчика (ячейки 2). При правильном выполне­нии участка n = .

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

Если имеется возможность провести подсчет числа выполнения цик­ла двумя различными способами, то это также может быть положено в ос­нову контроля.

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

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

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

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

Применение контроля целесообразно во всех случаях при условии наличия счетчика времени.

 

Date: 2015-05-19; view: 678; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию