Математическое обеспечение эвм
§ 1. Анализ ЭВМи программ
В главе 6 мы уже рассматривали ЭВМ, но не могли еще пользоваться теорией алгоритмов, хотя интуиция подсказывала, что именно теория алгоритмов может служить верой и правдой при изучении как самих Вычислительных машин, так и программирования. Теперь мы готовы к применению в этой области теории алгоритмов.
Мы напомним, что современная вычислительная система представляет собой систему взаимосвязанных процессоров. Каждый процессор, функционируя, совершает определенный процесс. Коль скоро работу процессора удалось описать в виде алгоритма, можно заключить, что этот алгоритм является математической моделью процессора. Сам процессор можно считать физической моделью его работы.
Алгоритмы некоторых процессоров удобно считать алгоритмами выполнения программ, алгоритмы других процессоров лучше считать алгоритмами Переработки некоторых данных. К первым относятся центральные процессоры, ко вторым — процессоры ввода, процессоры выдачи, процессоры обмена.
Мы говорим «удобно», потому что само понятие алгоритма позволяет (если мы хотим) запись алгоритма объединить с записью исходного данного и их совокупность считать записью исходного данного (для алгоритма выполнения). Можно поступить и наоборот. Если исходное данное достаточно сложно, его можно разбить на части, одну из которых считать записью алгоритма, а другую — записью исходного данного для этого алгоритма.
Читателю, может быть, не понравится эта особенность алгоритмического подхода к ЭВМ, но, во-первых, это не недостаток подхода, а его положительная сторона (можно выбрать тот вариант, который «лучше» других), а во-вторых, такова особенность всякого применения математики (теории) к вопросам практики. К тому же можно применить обычный для математики прием: считать, что процессор, не выполняющий никакой программы, всегда выполняет одну и ту же программу (пустую).
Теперь, независимо от особенностей алгоритмов работы процессоров, мы приходим к идее «коллектива исполнителей», иначе говоря, коллектива алгоритмов выполнения. Совокупность запоминающих устройств ЭВМ — это физический носитель сложной алфавитной конструкции, объединяющей в себе перерабатываемые исходные данные и программы работы процессоров (тех, которые их выполняют). Алгоритмы работы процессоров могут оказывать влияние друг на друга. Для этого они располагают возможностью выполнять определенные операции, о которых мы до сих пор не говорили, вернее которые мы до сих пор не называли операциями. К их числу относятся операции: 1) активизации других исполнителей; 2) дезактивизации их; 3) прерывания работы других исполнителей и, возможно, еще ряд других операций. Мы знаем, что, кроме этих операций, существуют еще операции обмена.
Современную ЭВМ следует считать физической моделью коллектива алгоритмов (см. гл. 8, § 9), или, как говорят, аппаратной его реализацией. Вводя в ЭВМ различные программы, которые тоже следует считать алгоритмами, мы расширяем этот коллектив. Теперь можно говорить об аппаратно-программной реализации коллектива алгоритмов. Читатель видит, что аналитическая теория алгоритмов является тем единым математическим средством, которым можно пользоваться при рассмотрении и ЭВМ, и их программ.
Если мы проанализируем алгоритмы работы процессоров, то увидим, что перечисленные выше операции сводятся к записи определенных букв (обычно нулей или единиц) в определенные ячейки памяти.
Если же нас интересуют программы, а работу процессоров мы не желаем знать, то нам неизвестно, в чем заключается выполнение указанных операций, но мы знаем их названия, получаемые с их помощью результаты и структуру команд, с помощью которых можно предписывать машине выполнение таких операций.
Можно ли применять машину, не зная алгоритмов работы ее процессоров? Оказывается, можно. Программисты, как правило, зная язык программ, не знают алгоритмов работы процессоров. Это им не мешает эксплуатировать ЭВМ и быть очень высококвалифицированными специалистами. Но, конечно, их квалификация поднимется на новый уровень после изучения алгоритмов работы процессоров. Мы уже говорили о том, что прежде всего машины следует различать по их архитектуре, причем одной из важнейших черт архитектуры является перечень типов процессоров машин. Второй важной характеристикой является способ их сопряжения между собой.
Простейшая ЭВМ имеет по одному процессору каждого типа: один центральный процессор, один процессор ввода, один процессор выдачи, один — обмена информацией между оперативной памятью и внешним ЗУ (например магнитной лентой) и, наконец, один центральный пульт управления. Из всех перечисленных процессоров непустую программу выполняет только центральный процессор. Кроме того, в простейшем случае ЭВМ не имеет обособленных буферных ЗУ. Роль буферных ЗУ «по совместительству» выполняет оперативная память. Возможность одновременной работы нескольких процессоров здесь минимальна (одновременно с работой центрального процессора можно искать информацию на магнитной ленте и набирать вручную информацию на пульте управления). По существу, работа каждого процессора требует, чтобы остальные процессоры находились в пассивном состоянии. Такая простейшая архитектура ЭВМ характерна для машин первого поколения.
Некоторые усложнения машины, заключающиеся в том, что в ее состав введены буферные запоминающие устройства, делают ее более эффективной. Например, можно одновременно вводить информацию (в буфер), выдавать информацию (из второго буфера) и выполнять программу центральным процессором. Подобная архитектура ЭВМ присуща машинам второго поколения. Деление машин по поколениям очень неточно и условно. В машинах второго поколения уже встречаются системы прерывания (см. § 4 гл. 6), однако лишь в «зачаточном» виде.
Машины третьего поколения характеризуются наличием в их составе большого числа однотипных процессоров. Преимущественно эти машины имеют один центральный процессор и по нескольку экземпляров процессоров другого вида. При этом имеется возможность по-разному комплектовать машину, в зависимости от того, для каких целей ее намерены применять. Различные способы комплектования ЭВМ в рамках определенной ее архитектуры называются ее конфигурациями. Среди ЭВМ третьего поколения встречаются и такие, в состав которых входит несколько центральных процессоров. Такие ЭВМ обычно называют многопроцессорными, хотя фактически любая ЭВМ может быть названа многопроцессорной.
Если процессоры машины работают, выполняя свои программы, заданные на соответствующем языке (или языках), то говорят, что по отношению к этим программам ЭВМ работает в собственном режиме. Собственный режим (по отношению к программам) заключается в том, что каждый процессор реализует соответствующий ему алгоритм выполнения программ.
Читатель спросит: «А как еще может работать ЭВМ? Какой еще возможен режим?» Мы ответим: «По отношению к программам, составленным на языке (на языках) своих процессоров, другого режима не может быть. Но оказывается, что по отношению к другим программам, написанным на других языках, могут быть и другие режимы». Объясним это подробнее на примере отдельного центрального процессора. Пусть — программа, — исходное данное. Если t и s введены в память процессора, то между ними установлена некоторая связь, которую обозначим знаком «;». Если W — алгоритм работы процессора, a — соответствующая этому алгоритму операция, то можно сказать, что процессор, выполняя t, реализует операцию . В этом и заключается естественный режим. Но предположим, что на языке программ мы составили программу , которая является алгоритмом выполнения для программы при исходных данных , причем язык, на котором является предложением, — это уже не язык программ процессора; точно так же и язык операндов — это уже не язык, предложениями которого являются данные .
Очевидно, для программы исходным данным является операнд особой структуры, именно , , где «,» — некоторая связь.
При программе процессор W будет реализовать (работая) операцию
.
Если вид программы I фиксирован (конечно, в момент пуска ЭВМ; что далее делается с I — безразлично), мы можем считать, что операция второго ранга фактически тождественна некоторой операции первого ранга , т. е. операции , соответствующей новому алгоритму (и процессору) V.
Мы приходим к выводу, что, вводя в процессор программу I, мы как бы превращаем процессор W в другой процессор V, имеющий другие языки программ и операндов.
Программу I в теории программирования называют интерпретатором. Чем же будет отличаться работа V от работы W? Это зависит от особенностей интерпретатора I. По отношению к новым программам режим работы процессора уже не будет собственным. Его можно назвать режимом интерпретации. Совокупность всех интерпретаторов, совместно используемых при эксплуатации ЭВМ, называют операционной системой (ОС). Широко известны следующие режимы интерпретации.
1. Однопрограммный пакетный режим. При этом режиме ОС находится в запоминающих устройствах ЭВМ в течение всего времени ее работы. В читающее устройство вкладывают не одну программу и исходные данные, а целый «пакет» программ и данных. ЭВМ, решив одну задачу, немедленно переходит к решению другой и т. д. до тех пор, пока весь «пакет» не будет обработан (т. е. пока все задачи не будут решены).
Однопрограммный пакетный режим целесообразен только для простейших ЭВМ, не допускающих параллельной работы процессоров. Обычно, кроме функции «прогона» пакета, ОС наделяют и другими функциями, облегчающими применение машины, например, выдачу на пульт управления сигналов о нормальном или ненормальном ходе решения задач, выполнение некоторых подпрограмм, что облегчает работу при программировании (в программе можно написать команду обращения к соответствующей подпрограмме, вместо того чтобы писать всю эту подпрограмму) и т. п. Сказанное имеет место и для других операционных систем. 2. Многопрограммный пакетный режим работы ЭВМ, имеющей один центральный процессор, осуществляет «прогон» некоторого пакета, причем одновременно выполняет' несколько программ (за счет параллельной работы процессоров).
Например, при трехпрограммном пакетном режиме в оперативную память должны быть введены сразу три программы. ЭВМ начинает выполнять первую из них. Этот процесс длится до тех пор, пока в программе не встретится обращение к внешнему устройству. В тот же миг выполнение первой программы прервется, управление получит ОС, которая осуществит запуск нужного внешнего устройства и передаст управление второй программе. Аналогично протекает процесс выполнения второй программы и т. д. Как только внешнее устройство кончит работу, произойдет прерывание выполнения очередной рабочей программы, управление снова получит ОС и организует продолжение работы той программы, выполнение которой ранее было прервано из-за необходимости обращения к внешнему устройству. По мере окончания решения задач ОС вводит в память новые программы, продолжая описанный процесс.
3. Режим разделения времени ЭВМ, имеющей один центральный процессор. Этот режим применяется, когда в конфигурацию ЭВМ входит, помимо центрального пульта управления, большое число пультов управления, за которыми работают пользователи (такие пульты, снабженные устройствами ввода и вывода, называются терминалами).
ОС автоматически составляет циклическую очередь пользователей. В составе центрального процессора должен быть так называемый таймер — электронные часы, через определенные промежутки времени прерывающие выполнение очередной программы. После каждого такого прерывания управление получает ОС, которая передает управление программам следующего по очереди пользователя. Длительность цикла обслуживания должна быть достаточно малой. Тогда каждый пользователь чувствует себя так, будто ЭВМ обслуживает его одного. Прерывистый процесс работы ЭВМ воспринимается им как непрерывный. 4. Многопрограммный режим работы ЭВМ, имеющей несколько центральных процессоров. Для этого режима может быть много разновидностей, связанных с тем, как взаимодействуют центральные процессоры с периферийными. Для него характерно, что каждый центральный процессор с несколькими периферийными работает как отдельная ЭВМ.
5. Параллельный режим работы ЭВМ, имеющей несколько центральных процессоров. При этом режиме программа решения задачи разделена на сегменты, выполняемые (по мере возможности) параллельно. Время решения задачи сокращается, но, конечно, в число раз, меньшее числа процессоров, так как некоторое время процессоры расходуют на выполнение программ ОС, а также определенное время теряют на ожидание конца работы других центральных процессоров (если на каком-то участке программы ее параллельное выполнение невозможно).
Методы разработки программ, предназначенных для параллельного выполнения с помощью многопроцессорной ЭВМ, получили название параллельного программирования.
§ 2. Что такое математическое обеспечение ЭВМ
Читатель заметил, конечно, что наличие операционной системы связано с применением нового языка программ. Обычно этот новый язык называют языком загрузки, в отличие от первого, который называют языком машины. Составление программ непосредственно в языке загрузки (в его письменной форме) ненамного легче, а иногда и труднее, чем составление программ на языке ЭВМ.
Мы уже упоминали раньше о том, что существуют языки программирования, более удобные для программиста, чем языки машины или загрузки. Применение таких языков связано с применением трансляторов. Читатель видит, что использование ЭВМ требует наличия ряда вспомогательных программ, которые не имеют отношения к конкретным задачам, но необходимы для того, чтобы можно было эффективно их решать. Совокупность таких программ называют математическим или программным обеспечением ЭВМ. Такое объяснение термина «математическое обеспечение», конечно, слишком туманно. Кроме программ, входящих в математическое обеспечение, есть и другие программы, содержательные, предусматривающие решение задач. Ведь именно для решения задач и нужны ЭВМ. Чем же отличаются одни программы от других? Прежде всего следует все программы разделить на два класса: программы составленные на языке машины, и программы, составленные на языке загрузки. Первые называются служебными, а вторые — рабочими.
Очевидно, программы пользователей после трансляции все являются рабочими. Но и некоторые программы математического обеспечения тоже являются рабочими. Например трансляторы. В чем же особенность программ математического обеспечения? Эта особенность заключается в определенной взаимосвязи между ними. Программное обеспечение ЭВМ — это не совокупность, а система программ. Их называют системными в отличие от программ пользователей.
Способ объединения программ в систему математического обеспечения ЭВМ избирают в соответствии с целью, для которой создается математическое обеспечение. Этот способ частично относится к компетенции теории алгоритмов, частично выходит за ее рамки. Последнее неизбежно, так как математическое обеспечение предназначено для удовлетворения реальных потребностей, а не для выполнения каких-то абстрактных условий. Способ объединения программ можно коротко охарактеризовать.
1. Системные программы объединены в так называемую системную библиотеку программ. Это значит, что для каждой системной программы точно определено в запоминающих устройствах ЭВМ место, на котором она должна находиться (на магнитной ленте, магнитном диске в оперативной памяти, на перфоносителях; тогда должно быть известно место их хранения в то время, когда они не применяются). Но этого недостаточно. Библиотека программ предполагает наличие массива информации, с помощью которого автоматически можно найти любую программу, включенную в библиотеку. Такой массив называется каталогом (как и в обычных библиотеках). Для того чтобы с его помощью автоматически находить системные программы, нужны программы обслуживания библиотеки. Программы, не организованные в виде библиотеки программ, если их много, практически недоступны.
2. Системные программы должны быть документально оформлены по единым правилам, принятым для данной системы математического обеспечения. При этом, во-первых, должны быть сделаны подробные описания программ, для того чтобы можно было ознакомиться с их функциями, а, во-вторых, должны быть в наличии инструкции по применению программ и оформлению исходных данных.
3. Системные программы должны удовлетворять системе правил, определяющих их структуру как предложений формального языка, для того, чтобы было возможно их взаимодействие при выполнении процессорами. Такие правила называются системными соглашениями.
4. Системные программы должны быть выполнимы на ЭВМ либо непосредственно, либо благодаря наличию других программ в составе математического обеспечения.
Каким из указанных условий не удовлетворяют программы пользователей? Прежде всего эти программы не включены в системную библиотеку. Кроме того, обычно они не имеют документального оформления, требуемого данной системой. Что касается системных соглашений, то программы пользователей им удовлетворяют, так как без этого они были бы невыполнимы с помощью операционной системы. Мало того, они были бы непереводимы с помощью системных трансляторов на алгоритмический язык загрузки.
Программы пользователей обычно выполнимы на ЭВМ с помощью операционной системы. Поэтому четвертому требованию они удовлетворяют. Четвертое требование касается не пользовательских, а системных программ. Оно не допускает включения в систему математического обеспечения некоторых программ до тех пор, пока не будут в нее включены определенные другие программы.
Из описания математического обеспечения ЭВМ видно, что между программами пользователей и системными программами пропасти нет, но есть довольно глубокий ров, наполненный довольно мутной водой. Стоит только документально оформить программу пользователя так, как это принято в данной системе математического обеспечения, и включить эту программу в библиотеку — и все! Пользовательская программа стала системной.
Но читатель должен иметь в виду, что «бессистемное» размножение системных программ может переполнить системную библиотеку, если она рассчитана на малое количество программ.
Некоторые реальные системы математического обеспечения составлялись, видимо, без учета вышеприведенных четырех требований, на основе интуиции их разработчиков. Документированы они недостаточно (потому что при их аморфности документирование связано с большими трудностями), главным образом инструкциями по применению. Системная библиотека «раздергана» на отдельные группы команд и коды и разбросана среди других команд. Развитие такой системы практически невозможно, так как неизвестно, как включать в нее новые программы. Подобные системы представляют собой огромные совокупности команд, в которых сами разработчики ориентируются с трудом и которые незаслуженно вызывают восхищение и почтительный трепет у неискушенных пользователей этих систем.
Автор упоминает о «плохих» системах математического обеспечения потому, что ожидает, что среди читателей окажутся и такие «трепещущие», которые могут заявить, что никаким условиям, подобным вышеприведенным четырем, прекрасное математическое обеспечение эксплуатируемой ими машины не удовлетворяет. А отсюда один шаг до того, чтобы посчитать эти четыре условия не обязательными. Автор решительно утверждает, что чем менее понятной и более сложной кажется система математического обеспечения, тем она хуже.