Cтраница 3
Состояние прерываемой программы запоминается в ОЗУ посредством группы команд, которая располагается в начале прерывающей программы. Только по сле запоминания информации может быть осуществлен переход к прерывающей программе. По окончании исполнения этой программы другая группа команд, стоящая в ее конце, предварительно восстановит состояние регистров в ЦУУ и ОУ и передаст управление команде первоначальной программы, на которой был остановлен процесс. [31]
Для их вычисления должны быть известны точки, образующие те кривые, вдоль которых нужно интегрировать. Если они известны, вопрос решается совсем просто. Это делает команда contourc, параметры которой имеют тот же смысл, что и для contour. Выпишем первоначальную программу этого примера ( см. разд. [32]
Он хорошо владел латинским, греческим и еврейским языками. Его научные интересы были обширны и разнообразны. Вот почему по прибытии в Сибирь Мессершмидт значительно расширил первоначальную программу экспедиции, уделив большое внимание вопросам географии и геологии. [33]
В процессе гидрогеологических изысканий весьма эффективно проведение разведочных расчетов, осуществляемое обычно с использованием моделирования. Для этого на основании имеющейся информации о возможной изменчивости параметров задается реальный диапазон значений параметров и выявляется их влияние на прогнозируемый режим и баланс подземных вод, а в зависимости от уровня влияния отдельных факторов и параметров устанавливаются направленность и объемы полевых работ. Заметим, что разведочные расчеты целесообразно проводить на всех этапах изысканий, начиная с обоснования первоначальной программы, когда возможный диапазон параметров задается по литературным и архивным материалам. [34]
Электронные вычислительные машины могут реализовывать программы только на машинном языке. Поэтому любой язык высокого уровня должен обязательно переводиться на язык, доступный машине. Эта работа выполняется программой, которая называется транслятором. Транслятор сканирует один или несколько раз программу, написанную на языке высокого уровня, составляя окончательно программу на машинном языке, которая и выполняется на ЭВМ. Первоначальная программа, написанная на языке высокого уровня, называется исходной программой; окончательная программа, составленная на машинном языке, называется выходной ( рабочей) программой. По существу, транслятор переводит исходные программы в выходные. Трансляторы могут быть двух типов. Транслятор первого типа полностью перерабатывает всю рабочую программу для ее последующей реализации. Транслятор второго типа переводит каждый оператор программы, написанный на языке высокого уровня, на машинный язык для немедленной реализации. Первый метод обеспечивает эффективный способ составления выходной программы. Второй позволяет проверять каждый оператор во время написания программы. [35]
Следует учитывать также, что в памяти должны постоянно располагаться значительная часть супервизора и некоторые часто используемые стандартные программы. Однако нет принципиальной необходимости в том, чтобы вся целевая программа находилась в ОЗУ, так как в любой момент времени работа программы концентрируется на определенных сравнительно небольших участках. Таким образом, в ОЗУ следует хранить только активные части разных целевых программ, а их неработающие в данный период части могут располагаться в ВЗУ. При переключениях программ может понадобиться отсылка какой-либо части неактивной в данный период программы в ВЗУ для размещения на ее месте части другой программы, становящейся активной. При восстановлении первоначальной программы для следующего периода активности супервизор может поставить ее на другой участок памяти. [36]
Следует учитывать также, что в памяти должны постоялно располагаться значительная часть супервизора и некоторые часто используемые стандартные программы. Однако нет принципиальной необходимости в том, чтобы вся целевая программа находилась в ОЗУ, так как Е любой момент времени работа программы концентрируется на определенных сравнительно небольших участках. Таким образом, в ОЗУ следует хранить только активные части разных целевых программ, а их неработающие в данный период части могут располагаться в ВЗУ. При переключениях программ может понадобиться отсылка какой-либо части неактивной в данный период программы в ВЗУ для размещения на ее месте части другой программы, становящейся активной. При восстановлении первоначальной программы для следующего периода активности супервизор может поставить ее на другой участок памяти. [37]
Операционная система ( управляющая программа) выполняет функции управления и организации более высокого уровня иерархии. Помимо решения прочих задач она позволяет проводить выполнение программы пользователя с учетом приоритетности. Приоритетность программы определяется степенью актуальности решаемых ею задач. Управляющая программа при посредстве системы прерывания по соответствующему требованию с более высоким приоритетом приостанавливает выполнение программы с более низким уровнем приоритета на время, определяемое запросом по приоритету. Затем выполнение первоначальной программы может быть продолжено. При решении задач в реальном масштабе времени мерой приоритета является обратная величина ответного времени. Уровни приоритета фоновых программ выводятся из необходимой или приемлемой последовательности задач. [38]
В ходе этой работы исследователь сталкивается с недостаточностью своих первоначальных представлений. Он обнаруживает, что ему необходима дополнительная информация. Чтобы получить эту информацию, он может заново проанализировать прежние данные или провести новые эксперименты. Так исследователь сталкивается с одним из преимуществ машинного моделирования - с требованием полноты и точности в описании работы мозга. После многих видоизменений и переделок первоначальной программы получается окончательная модель. [39]
Еще одним полезным свойством КОБОЛа является то, что он обеспечивает легкость понимания программы, что облегчает возможность последующих модификаций. Эту черту самодокументируе-мости многие считают одним из важнейших свойств КОБОЛа. В области экономики ситуация, которая привела к возникновению конкретной задачи, не остается неизменной, так как меняются условия производства и сбыта, выходят новые постановления руководящих органов, которые должны учитываться. Таким образом, программа, написанная в январе в соответствии с существовавшими в то время требованиями, может нуждаться в изменении уже в июне. В силу необходимости динамических изменений программы требуется очень тщательно описывать первоначальную программу, чтобы иметь возможность затем вносить в нее изменения. Тщательность документирования частично достигается с помощью блок-схемы и описания файлов, но, кроме того, и с помощью самого языка КОБОЛ, использующего фразы, ясно описывающие для читателя требуемые действия. [40]
ЭВМ является в основном машиной последовательного действия, выполняющей одну за другой команды хранимой программы. Несмотря на то что выполняются эти команды очень быстро, в каждый момент времени решается только одна задача или часть задачи. ЭВМ начинает с первой команды данной программы и продолжает работу до окончания решения и ( или) до тех пор, пока сама прогоняемая программа не передаст управление оператору или другой программе. В общем случае, однако, этот способ работы приводит к непроизводительному использованию ресурсов ЭВМ и во многих случаях не в состоянии удовлетворить все требования АСУ. Прерывание текущей программы с целью выполнения какой-либо другой, более важной задачи и последующего возвращения к первоначальной программе называется прерыванием программы. [41]
Кроме того, прилагаются усилия и в несколько других направлениях для выявления более точных и адекватных критериев соответствия между исходным и моделируемым поведением. Вспомним, что сравнительно небольшие изменения в программе могут вызвать большие изменения поведения, менял направление ее работы. Можно также ожидать, что большие различия между поведением человека и модели иногда являются результатом небольших различий между наборами информационных процессов. Предположим, однако, что один элемент поведения используется для создания программы, а другой элемент поведения того же субъекта, заранее не известный программисту, используется затем для оценки программы. Если программа не может точно предсказать новый элемент поведения, составитель программы видоизменяет ее до тех пор, пока не добьется желаемого соответствия, а затем подсчитывает количество элементарных изменений, которые ему пришлось внести в первоначальную программу для достижения столь совершенного моделирования. [42]
Может показаться, что не имеет смысла печатать перевод программы вместо ее точной копии. Однако, чтобы написать авто-реп на Блупе или Флупе, вам пришлось бы прибегнуть к подобным трюкам, поскольку на этих языках ВЫХОД всегда бывает в форме чисел, а не типографских строчек. Таким образом, вам пришлось бы написать программу, которая печатала бы свой собственный Геделев номер: гигантское число, использующее трехзначные кодоны - переводы каждого знака программы. Перейти от измерения чисел к измерению строчек не представляет труда. Таким образом, ВЫХОД здесь является не только пусковым механизмом, каким была кнопка 1 - Я. Вместо этого, все информация первоначальной программы лежит близко к поверхности выхода. [43]
Оно, однако, не может претендовать на обстоятельное освещение этого вопроса; к тому же я не думаю, что время для этого уже настало. Гораздо важнее, чтобы движение распространялось, гармонически развивалось, пустило корни и охватило, насколько возможно, весь американский пролетариат, чем то, чтобы оно уже с самого начала шло и развивалось на безупречно правильной теоретической основе. Для ясности теоретического понимания нет лучшего пути, чем учиться на своих собственных ошибках, на собственном горьком опыте, а для целого крупного класса другого пути нет, особенно у такой исключительно практической и так пренебрегающей теорией нации, как американцы. Джордж или Па-удерли - будет выкинут за борт со своей маленькой сектой. Поэтому я и считаю Рыцарей труда наиболее важным фактором движения; к ним не следует относиться с пренебрежением, со стороны, а их нужно революционизировать изнутри. Наша теория - не догма, а разъяснение процесса развития, который заключает в себе ряд последовательных фаз. Рассчитывать на то, что американцы вступят в движение, вполне осознав теорию, выработанную в более старых промышленных странах - значит рассчитывать на невозможное. Немцы должны были бы действовать согласно своей собственной теории - если они понимают ее, как понимали ее мы в 1845 - 1848 гг. - участвовать во всяком действительно всеобщем движении рабочего класса, принимая его фактическую точку отправления такой, какова она есть, и постепенно поднимать его на уровень теории, указывая, что каждая допущенная ошибка, каждая неудача является неизбежным следствием неправильных теоретических положений первоначальной программы. [44]
АСУ ТП должны иметь возможность реагировать на экстраординарные события или аварии. Такая возможность обеспечивается введением в вычислительную систему функции прерывания. В ЭВМ для научных расчетов работа обычно выполняется шаг за шагом известным фиксированным способом. Здесь не нужен механизм изменения заданного порядка в ответ на какие-либо внешние события. Например, перегревшийся двигатель может потребовать немедленного вмешательства. Это означает, что текущая деятельность вычислительной машины должна быть изменена и направлена на выполнение подпрограммы, предназначенной для выдачи необходимого воздействия. Такой метод изменения направления работы ЭВМ известен как программное прерывание. С точки зрения программиста прерывание означает следующее. Из любого места последовательности команд программы машина, прекратив интерпретацию команд, переходит к предписанной ячейке главной памяти. Адрес ячейки, из которой после возврата должна быть взята очередная команда прерванной программы, запоминается в другой известной ячейке, после чего выполнение программы начинается с новой точки. Программа АСУ должна быть составлена так, чтобы подпрограмма в секции памяти, выделенной для этого прерывания, предопределяла действия, которые необходимо предпринимать в данной ситуации. Как только корректирующее воздействие завершено, программа возвращается к ячейке памяти с адресом прерванной команды и возобновляется выполнение первоначальной программы. [45]