Математическое обеспечение эвм

§ 1. Анализ ЭВМи программ

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

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

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

Мы говорим «удобно», потому что само понятие алгорит­ма позволяет (если мы хотим) запись алгоритма объединить с записью исходного данного и их совокупность считать за­писью исходного данного (для алгоритма выполнения). Мож­но поступить и наоборот. Если исходное данное достаточно сложно, его можно разбить на части, одну из которых счи­тать записью алгоритма, а другую — записью исходного данного для этого алгоритма.

Читателю, может быть, не понравится эта особенность алгоритмического подхода к ЭВМ, но, во-первых, это не недостаток подхода, а его положительная сторона (можно выбрать тот вариант, который «лучше» других), а во-вто­рых, такова особенность всякого применения математики (теории) к вопросам практики. К тому же можно применить обычный для математики прием: считать, что процессор, не выполняющий никакой программы, всегда выполняет од­ну и ту же программу (пустую).

Теперь, независимо от особенностей алгоритмов работы процессоров, мы приходим к идее «коллектива исполните­лей», иначе говоря, коллектива алгоритмов выполнения. Совокупность запоминающих устройств ЭВМ — это физи­ческий носитель сложной алфавитной конструкции, объе­диняющей в себе перерабатываемые исходные данные и про­граммы работы процессоров (тех, которые их выполняют). Алгоритмы работы процессоров могут оказывать влия­ние друг на друга. Для этого они располагают возмож­ностью выполнять определенные операции, о которых мы до сих пор не говорили, вернее которые мы до сих пор не называли операциями. К их числу относятся операции: 1) активизации других исполнителей; 2) дезактивизации их; 3) прерывания работы других исполнителей и, возмож­но, еще ряд других операций. Мы знаем, что, кроме этих операций, существуют еще операции обмена.

Современную ЭВМ следует считать физической моделью коллектива алгоритмов (см. гл. 8, § 9), или, как говорят, аппаратной его реализацией. Вводя в ЭВМ различные про­граммы, которые тоже следует считать алгоритмами, мы расширяем этот коллектив. Теперь можно говорить об ап­паратно-программной реализации коллектива алгоритмов. Читатель видит, что аналитическая теория алгоритмов яв­ляется тем единым математическим средством, которым можно пользоваться при рассмотрении и ЭВМ, и их про­грамм.

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

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

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

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

Некоторые усложнения машины, заключающиеся в том, что в ее состав введены буферные запоминающие устройства, делают ее более эффективной. Например, можно одновре­менно вводить информацию (в буфер), выдавать информа­цию (из второго буфера) и выполнять программу централь­ным процессором. Подобная архитектура ЭВМ присуща ма­шинам второго поколения. Деление машин по поколениям очень неточно и условно. В машинах второго поколения уже встречаются системы прерывания (см. § 4 гл. 6), однако лишь в «зачаточном» виде.

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

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

Читатель спросит: «А как еще может работать ЭВМ? Какой еще возможен режим?» Мы ответим: «По отношению к программам, составленным на языке (на языках) своих процессоров, другого режима не может быть. Но оказы­вается, что по отношению к другим программам, написан­ным на других языках, могут быть и другие режимы». Объясним это подробнее на примере отдельного централь­ного процессора. Пусть математическое обеспечение эвм - student2.ru — программа, математическое обеспечение эвм - student2.ru — исходное дан­ное. Если t и s введены в память процессора, то между ними установлена некоторая связь, которую обозначим зна­ком «;». Если W — алгоритм работы процессора, a математическое обеспечение эвм - student2.ru — соответствующая этому алгоритму операция, то можно сказать, что процессор, выполняя t, реализует операцию математическое обеспечение эвм - student2.ru . В этом и заключается естественный режим. Но пред­положим, что на языке программ мы составили програм­му математическое обеспечение эвм - student2.ru , которая является алгоритмом выполнения для про­граммы математическое обеспечение эвм - student2.ru при исходных данных математическое обеспечение эвм - student2.ru , причем язык, на котором математическое обеспечение эвм - student2.ru является предложением, — это уже не язык программ про­цессора; точно так же и язык операндов математическое обеспечение эвм - student2.ru — это уже не язык, предложениями которого являются данные математическое обеспечение эвм - student2.ru .

Очевидно, для программы математическое обеспечение эвм - student2.ru исходным данным являет­ся операнд математическое обеспечение эвм - student2.ru особой структуры, именно математическое обеспечение эвм - student2.ru , математическое обеспечение эвм - student2.ru , где «,» — некоторая связь.

При программе математическое обеспечение эвм - student2.ru процессор W будет реализовать (ра­ботая) операцию

математическое обеспечение эвм - student2.ru .

Если вид программы I фиксирован (конечно, в момент пуска ЭВМ; что далее делается с I — безразлично), мы мо­жем считать, что операция второго ранга математическое обеспечение эвм - student2.ru факти­чески тождественна некоторой операции первого ранга математическое обеспечение эвм - student2.ru , т. е. операции математическое обеспечение эвм - student2.ru , соответствующей новому ал­горитму (и процессору) V.

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

Программу I в теории программирования называют ин­терпретатором. Чем же будет отличаться работа V от ра­боты W? Это зависит от особенностей интерпретатора I. По отношению к новым программам режим работы процессора уже не будет собственным. Его можно назвать режи­мом интерпретации. Совокупность всех интерпретаторов, совместно используемых при эксплуатации ЭВМ, называ­ют операционной системой (ОС). Широко известны следую­щие режимы интерпретации.

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

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

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

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

ОС автоматически составляет циклическую очередь пользователей. В составе центрального процессора дол­жен быть так называемый таймер — электронные часы, через определенные промежутки времени прерывающие вы­полнение очередной программы. После каждого такого пре­рывания управление получает ОС, которая передает уп­равление программам следующего по очереди пользовате­ля. Длительность цикла обслуживания должна быть доста­точно малой. Тогда каждый пользователь чувствует себя так, будто ЭВМ обслуживает его одного. Прерывистый про­цесс работы ЭВМ воспринимается им как непрерывный. 4. Многопрограммный режим рабо­ты ЭВМ, имеющей несколько центральных процессоров. Для этого режима может быть много разновидностей, свя­занных с тем, как взаимодействуют центральные процес­соры с периферийными. Для него характерно, что каждый центральный процессор с несколькими периферийными ра­ботает как отдельная ЭВМ.

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

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

§ 2. Что такое математическое обеспечение ЭВМ

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

Мы уже упоминали раньше о том, что существуют языки программирования, более удобные для программиста, чем языки машины или загрузки. Применение таких языков связано с применением трансляторов. Читатель видит, что использование ЭВМ требует наличия ряда вспомогатель­ных программ, которые не имеют отношения к конкретным задачам, но необходимы для того, чтобы можно было эф­фективно их решать. Совокупность таких программ назы­вают математическим или программным обеспечением ЭВМ. Такое объяснение термина «математическое обеспе­чение», конечно, слишком туманно. Кроме программ, вхо­дящих в математическое обеспечение, есть и другие програм­мы, содержательные, предусматривающие решение задач. Ведь именно для решения задач и нужны ЭВМ. Чем же отли­чаются одни программы от других? Прежде всего следует все программы разделить на два класса: программы сос­тавленные на языке машины, и программы, составленные на языке загрузки. Первые называются служебными, а вторые — рабочими.

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

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

1. Системные программы объединены в так называемую системную библиотеку программ. Это значит, что для каж­дой системной программы точно определено в запоминающих устройствах ЭВМ место, на котором она должна находить­ся (на магнитной ленте, магнитном диске в оперативной памяти, на перфоносителях; тогда должно быть известно место их хранения в то время, когда они не применяют­ся). Но этого недостаточно. Библиотека программ пред­полагает наличие массива информации, с помощью которо­го автоматически можно найти любую программу, включен­ную в библиотеку. Такой массив называется каталогом (как и в обычных библиотеках). Для того чтобы с его по­мощью автоматически находить системные программы, нуж­ны программы обслуживания библиотеки. Программы, не организованные в виде библиотеки программ, если их мно­го, практически недоступны.

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

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

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

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

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

Из описания математического обеспечения ЭВМ видно, что между программами пользователей и системными про­граммами пропасти нет, но есть довольно глубокий ров, наполненный довольно мутной водой. Стоит только доку­ментально оформить программу пользователя так, как это принято в данной системе математического обеспечения, и включить эту программу в библиотеку — и все! Пользо­вательская программа стала системной.

Но читатель должен иметь в виду, что «бессистемное» размножение системных программ может переполнить системную библиотеку, если она рассчитана на малое коли­чество программ.

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

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

Наши рекомендации