
- •Введение
- •Глава 1
- •§ 1. «Алгоритмические джунгли»
- •§ 2. Исходные данные и результаты. Массовость алгоритма
- •§ 4. Понятность алгоритма
- •§ 5. Рекурсивные определения
- •§ 6. Определенность алгоритма
- •§ 7. Выводы
- •Глава 2 создание алгоритмов
- •§ 1. Роль алгоритмов в науке и технике
- •§ 2. Как возникают алгоритмы
- •§ 3. Алгоритмы в математике
- •§ 4. Алгоритм Евклида
- •§ 5. Решето Эрагосфена
- •§ 6. Алгоритм разложения на простые множители. Определение наименьшего кратного двух чисел
- •§ 7. Распознавание алгебраического тождества
- •§ 8. Задачи на построение алгоритмов
- •Глава 3 кризис математики в начале XX века
- •§ 1. Арифметизация математики
- •§ 2. Теория множеств
- •§ 3. Кардинальные числа
- •§ 4. Антиномии
- •§ 5. Выводы из антиномий
- •Глава 4 логические теории алгоритмов
- •§ 1. Рекурсивные функции
- •§ 2. Машины Тьюринга
- •§ 3. Нормальные алгоритмы Маркова
- •§ 4. Эквивалентность описанных теорий
- •Глава 5
- •§ 1. Массовые проблемы. Неразрешимость проблем
- •§ 2. Экстраалгоритм и три неразрешимые проблемы
- •§ 3, Некоторые замечания
- •Глава 6 электронные вычислительные машины и программирование
- •§ 1. Устройство эвм
- •§ 2. Процессоры эвм. Рабочий цикл
- •§ 3. Что такое программа
- •§ 4. Особенности современных эвм
- •§ 5. Входные языки программирования
- •§ 6. Необходимость содержательной теории алгоритмов. Какой она должна быть
- •Г л а в а 7 формальные языки
- •§ 1. Анализ естественного языка
- •§ 2. Искусственные языки. Формальные языки
- •§ 3. Буквы, связи, оболочки, конструкции
- •§ 4. Формальные грамматики
- •§ 5. Нотация Бекуса. Тезаурусы
- •§ 1. Что такое операция?
- •§ 2. Натуральные операции
- •§ 4. Первичные алгоритмы
- •§ 5. Натуральные алгоритмы
- •§ 6. Ограничения на структуру исходных данных сняты
- •§ 8. Соотношение с алгоритмами в интуитивном смысле
- •§ 10. Исследование тупиков (клинчей)
- •§ 11. Формальная семантика формального языка
- •Глава 9 математическое обеспечение эвм
- •§ 1. Анализ эвм и программ
- •§ 2. Что такое математическое обеспечение эвм
- •§ 3. Функциональная классификация программ математического обеспечения эвм
- •§ 4. Операционные системы
- •И автоматизация процессов
- •§ I. Использование эвм для управления
- •§ 2. Информационные системы
- •§ 3. Алгоритмизация процессов
- •§ 4. Язык алгоритмизации процессов
- •§ 5. Наука и искусство алгоритмизации
- •Заключение
- •§ 1. Может ли машина мыслить? Может ли человек решить алгоритмически неразрешимую проблему?
- •§ 2. Детерминированность машин. Самообучение
- •§ 3. Сознание машин. Алгоритмическое моделирование
§ 3. Функциональная классификация программ математического обеспечения эвм
Описанные в общих чертах требования к системным программам в основном определяют структуру математического обеспечения ЭВМ, являются синтаксическими требованиями. Для пользователя не менее (а, может быть, более) важным является содержание системы математического обеспечения. Обычно в ее состав входят:
1) операционная система;
2) система средств программирования (трансляторы, отладочные программы, собирающие программы);
3) системы программ ввода и вывода информации;
4) система программ поддерживания ОС в рабочем состоянии;
5) система программ управления данными;
6) система испытательных программ;
7) совокупность комплексов прикладных программ. Читатель уже знает, что такое операционная система, трансляторы, программы ввода и вывода. Из программ поддержания в рабочем состоянии операционной системы нужно прежде всего назвать программу, с помощью которой операционная система вводится в оперативную память и настраивается на конфигурацию ЭВМ, и те условия, в которых ЭВМ должна применяться. Кроме того, к их числу относятся всевозможные программы, предназначенные для освобождения операционной системы от информации, которая возникла при решении уже завершенных задач и может мешать нормальной работе системы.
Система управления данными представляет собой группу программ, осуществляющих всевозможные обмены данными между запоминающими устройствами процессеров. Испытательные программы применяются инженерно-техническим составом для проверки исправности ЭВМ. Среди них легко обнаружить две разновидности: контролирующие программы, устанавливающие наличие или отсутствие неисправности, и диагностические, определяющие место неисправности в ЭВМ.
Большой интерес для пользователей представляют комплексы прикладных программ. Каждый пользователь может оформить свою программу в виде такого комплекса и включить в систему математического обеспечения ЭВМ. Но это вряд ли целесообразно. Обычно каждый комплекс представляет собой небольшую самостоятельную систему программ (чаще всего рабочих), позволяющих решать задачи некоторого сравнительно узкого класса задач. Он обычно содержит в себе транслятор с так называемого проблемно-ориентированного языка, ведущую программу комплекса, библиотеку подпрограмм и иногда еще некоторые другие программы. Например, существуют комплексы для решения задач линейного программирования, для решения задач статистики и теории вероятностей, для интегрирования дифференциальных уравнений и т. п. Будучи проблемно ориентированным, каждый комплекс тем не менее значительно шире, чем программа решения какой-нибудь отдельной задачи, составляемая пользователем.
§ 4. Операционные системы
Самой сложной частью каждой системы математического обеспечения бесспорно является операционная система. Мы уже говорили, что по отношению к программам на языке загрузки операционная система создает тот или иной режим их выполнения. Это, конечно, важнейшая функция операционной системы. Очень важна также система правил, в соответствии с которой, в рамках принятого режима, производится так называемое обслуживание работ. Термин «обслуживание» пришел в теорию программирования из математической дисциплины, называемой теорией массового обслуживания. Заложенная в операционной системе совокупнссть правил обслуживания работ называется дисциплиной обслуживания. Далее, операционная система осуществляет обмен информацией между ЭВМ и оператором, управляющим ЭВМ. Наконец, операционная система расширяет или видоизменяет набор операций, выполняемых машиной за счет того, что в своем составе содержит специальную библиотеку подпрограмм. Вот важнейшие функции операционной системы.
Сама операционная система состоит из двух основных подсистем. Одна из них реализует стратегию использования машины. Назовем эту подсистему диспетчером26. Эта подсистема обеспечивает прогон программ в соответствии с установленными режимом и дисциплиной обслуживания.
Вторая подсистема осуществляет «общение» ОС с оператором и обеспечивает осуществление задаваемой им тактики применения ЭВМ. Эту систему будем называть супервизором. Каждая из указанных систем в свою очередь состоит из ряда подпрограмм (их привыкли называть программами, что неточно).
Функционально-структурная схема операционной системы в очень укрупненном виде изображена на рис. 20. В эту схему включен блок, называемый прерыванием, хотя этот блок реализован в ЭВМ аппаратурно, в виде некоторого устройства, а не как программа. Но без указания этого блока трудно пояснить связь, существующую между основными частями операционной системы, ее блоками.
Супервизор состоит из следующих основных блоков, которые, как мы уже сказали, называют программами.
1. Управляющая программа супервизора, координирующая работу остальных его блоков.
2. Программа общения. Расшифровывает приказы оператора, вводимые в ЭВМ с пульта, и осуществляет выдачу информации, получаемой при работе ОС на пульт управления.
3. Программа-планировщик. Формирует массив информации, являющийся планом работы для диспетчера, и корректирует его при наличии соответствующих
приказов оператора.
4. Программа-распределитель оборудования. Производит закрепление периферийных процессоров (оборудования ЭВМ) за отдельными работами, указанными в плане работы. Соответствующие «сведения» об этом в виде определенных кодов она вносит в план работы.
Основными частями диспетчера являются следующие.
1. Ведущая программа диспетчера, координирующая работу остальных его частей.
2. Программа обработки прерываний. Получает управление после каждого незамаскированного прерывания. Считывая содержимое регистра прерываний он5 «устанавливает» источник прерывании и передает управление либо ведущей программе супервизора, либо ве-пущей программе диспетчера.
3. Программа выполнения работ. Получает управление от ведущей программы диспетчера и в соответствии с планом работ, составленным супервизором, организует выполнение работ. С помощью ведущей программы она, если надо, передает управление программе-загрузчику для ввода на рабочее поле рабочей программы, программе управления данными, если для решения задачи нужна информация, уже введенная на магнитные ленты или на магнитные диски; программе управления вводом-шво-лом если требуется выдать результаты из машины или ввести в нее исходные данные, программе выполнения макрокоманд, если требуется выполнить так называемую макрокоманду (присутствующий в рабочей программе код, означающий не команду выполнения машинной операции, а команду выполнения более сложной операции, реализованной в виде подпрограммы). После того как указанные программы, выполнив свои функции, с помощью ведущей программы передадут управление программе выполнения работ она, наконец, передаст управление рабочей программе находящейся на рабочем пом (так называют часть запоминающего устройства ЭВМ, отведенную для рабочих программ).
Причинами прерываний могут быть:
1 Поступление приказа с пульта управления. В этом случае должен работать супервизор.
2 Сигнал неисправности ЭВМ, поступающий от аппаратуры контроля. Опять управление получает супервизор, для выдачи соответствующего сообщения на пульт управления и последующего останова ЭВМ.
3 Сигнал, возникающий в контролирующих устройствах ЭВМ означающий наличие ошибки в программе, т. е. того 'что рабочая программа составлена не в соответствии с системными соглашениями. В этом случае управление получает супервизор, исключающий неправильную программу; он формирует сообщение об этом оператору и передает управление диспетчеру для продолжения работы.
4 Наличие в рабочей программе команды обмена информацией. После такого прерывания управление получает диспетчер, активизирующий соответствующий процессор и после этого продолжающий выполнение плана работ в соответствии с заложенным в нем режимом.
5. Сигнал об окончании работы периферийного процессора. Управление получает диспетчер, организующий дальнейшее выполнение плана работ.
6. Сигнал, возникающий при наличии в программе команды, означающей конец ее выполнения. Управление получает диспетчер, производящий завершение работы по оконченной программе и вызов на ее место новой программы, данных для нее и т. д. и осуществляющий продолжение выполнения плана работ.
7. Сигнал от таймера. Как используется этот сигнал и в каких операционных системах, мы уже знаем.
Теперь читатель представляет себе, правда, в очень общих чертах, работу современной ЭВМ, являющейся мощным наполнителем алгоритмов. Ясно, что для сознательного и эффективного применения ЭВМ необходимо глубокое понимание принципов ее работы и построения программ. Такое понимание может быть достигнуто только при наличии хорошо разработанной теории алгоритмов. Кстати, заметим здесь, что анализ коллективов алгоритмов, проведенный в § 10 гл. 8, говорит о том, что в работе ЭВМ могут происходить безрезультатные остановки, являющиеся абсолютными или мерцающими тупиками,— явление крайне нежелательное. Это является лишним подтверждением значительности роли аналитической теории алгоритмов как при разработке ЭВМ, так и при составлении программ.
Эксплуатация ЭВМ связана не только с разработкой алгоритмов, но и с экономией материальных ресурсов, расходуемых машиной и людьми. Ясно, что, кроме теории алгоритмов, нужно овладеть и рядом других дисциплин. Например, при разработке операционной системы нужно определить хорошую дисциплину обслуживания работ. От этой дисциплины зависит расход машинного времени и труда операторов. Даже при составлении отдельной рабочей программы расход труда людей и машинного времени зависит от того, как составлена эта программа, какой метод положен в ее основу и т. д. Для решения проблемы выбора дисциплины обслуживания нужно познакомиться с математической теорией массового обслуживания.
Сама система программ математического обеспечения — это сложная система. Читатель, наверное, слышал о новой научной дисциплине — теории сложных систем. Нужно и с ней познакомиться.
Г л а в а 10 АЛГОРИТМЫ