Как известно, память вычислительных машин подразделяется на оперативную и вспомогательную. К настоящему времени ЭВМ с большим объемом оперативной памяти (крупные модели ЕС, АС-6) доступны не столь широкому кругу пользователей. Значительный объем работ производится на машинах, у которых емкость оперативного запоминающего устройства ограничена. При решении крупных вычислительных задач, в частности, задач математической физики на таких машинах программисты вынуждены располагать часть своих информационных массивов во внешней памяти (магнитных барабанах, дисках и лентах). Следовательно, возникает необходимость управления многоуровневой памятью ЭВМ, что вызывает ряд дополнительных трудностей.
Эффективность использования возможностей ЭВМ при решении задач зависит во многом от квалификации пользователя. Так, например, для того, чтобы организовать на ЭВМ БЭСМ-6 эффективную работу с информационными массивами, суммарный объем которых превосходит 32 К слов, потребуется знакомство с базовыми средствами операционной системы. Кроме того, в программе пользователя приходится распределять буфера для подкачек с внешней памяти массивов, вставлять обращения к процедурам перезагрузки буферов, производить преобразование индексов массивов. При изменении алгоритмов программ необходимо отслеживать и изменения в работе с внешней памятью, что, как правило, весьма трудоемко.
Для работы с внешней памятью в численных задачах не удается эффективно использовать средства работы с файлами, поскольку при этом не устраняется проблема квантования вычислений, выделения и перезагрузки буферов, преобразования индексов массивов и т. д. Поэтому разработка удобных средств организации работы с информационными массивами, расположенными во внешней памяти, могла бы существенно снизить трудоемкость программирования вычислительных алгоритмов и позволила бы широкому кругу пользователей эффективно решать задачи, требующие многочисленных обменов с внешней памятью.
Традиционным методом организации работы с внешней памятью является метод виртуальной памяти. Этот метод во многом облегчает программирование для пользователей, предоставляя им логически однородную память, превосходящую по объему оперативную. Виртуальная память отображается как на оперативную память, так и на разные уровни внешней памяти ЭВМ. Обеспечение присутствия в оперативной памяти требуемой информации берет на себя операционная система. Однако, поскольку система не знает характера работы с массивами в задаче, она не может минимизировать количество обменов между уровнями памяти так же удачно, как это может сделать программист при явном использовании внешней памяти. Поэтому платой за удобство виртуальной памяти является потеря эффективности ([l3]).
Проблема эффективности метода виртуальной памяти особенно остро встает при реализации этого метода на машинах, у которых пространство виртуальных адресов ограничено или отсутствуют аппаратные средства преобразования виртуального адреса, т. е. на машинах с неполной виртуальной адресацией. К таким машинам, в частности, относится ЭВМ БЭСМ-б. В этом случае функцию преобразования виртуальннх адресов может взять на себя траслятор с алгоритмического языка, который должен запрограммировать проверку наличия в оперативной памяти требуемой виртуальной страницы, замену виртуального адреса на соответствующий адрес в оперативной памяти, обращение к операционной системе за вызовом в оперативную память нужной виртуальной страницы. Такое программное преобразование виртуального адреса связано, однако, с большими накладными расходами.
В то ке время анализ программ решения вычислительных задач показывает, что существует класс задач, которым можно предоставить практически все удобства виртуальной памяти даже на машинах с неполной виртуальной адресацией, снабдив программы прагматическими указаниями."При этом работа с информационными массивами реализуется достаточно эффективно. Отличительной чертой таких задач является возможность достаточно просто описать закономерность работы с информационными массивами, которая выражается в последовательном обращении к элементам массива или группе элементов, а также в синхронной обработке нескольких массивов. Возможность передать системе информацию о характере обращений к элементам массивов является решающим обстоятельством при реализации виртуальной памяти на машинах с неполной виртуальной адресацией.
Для того, чтобы упростить организацию работы с информационными массивами в счетных задачах выделенного класса, обеслечкзая при этом должную эффективность, был предложен метод управляемой виртуальной памяти (УВП) [l7]. Метод УВП позволяет не только существенно сократить количество обменов между разными уровнями памяти ЭВМ, но и позволяет транслятору генерировать более эффективный код при обращении к виртуальным массивам.
Метод УВП позволил совместить удобство виртуальной адресации с эффективностью явного использования внешней памяти. Удобство метода УВП заключается в том, что разнородная память ЭВМ (оперативная, память на МБ и МД) представляется программисту как прямо-адресуемая виртуальная память. При помощи специальных указаний, задаваемых в непроцедурном виде, программист получает возможность управлять перемещением информации между уровнями памяти, добиваясь, тем самым, эффективного счета.
Программисту предоставляется широкий спектр средств управления. Он может задавать лишь общие закономерности работы с массивами, или в процессе счета давать исчерпывающие указания о том, какую информацию поместить в оперативную память. Эти подробные указания обеспечат программе такую же эффективность, как и при явном использовании внешней памяти.
В разработанном методе УВП предусматривается возможность придать управляющим указаниям оптимизирующий характер. В этом случае отсутствие указаний о перемещении информации между уровнями памяти не нарушает правильности выполнения программы, поскольку подкачку в оперативную память нужной информации в процессе счета выполняет система. Такая возможность позволяет программисту сосредоточить внимание на реализации алгоритмов программ, отложив на время решение вопросов эффективного управления памятью. Система может выдавать программисту сообщения, которые помогут ему повысить эффективность счета посредством внесения в программу дополнительных управляющих указаний. Таким образом, программист имеет возможность постепенно оптимизировать свою программу, переходя от отладочного режима счета задачи к рабочему режиму счета.
Первой реализацией метода УВП стала реализация системы УВП для ЭВМ БЗСМ-б, выполненная на базе операционной системы ОС ЙПМ [ie]. Объем виртуальной памяти в этом проекте был расширен до 100 ООО слов. Система УВП позволила решать на ЭВМ БЭСМ-6 новый класс задач (в частности, двумерные задачи), которым без управляемой виртуальной памяти требовались для счета десятки и сотни часов машинного времени. Система УВП показала принципиальную возможность реализации на машинах с неполной виртуальной адресацией метода управляемой виртуальной памяти, эффективность выбранного способа преобразования виртуальных адресов и способа взаи.
— 9 модействия с операционной системой.
Особенность данной реализации заключалась в том, что виртуальная память имела двухуровневую организацию и отображалась на оперативную и увеличенную оперативную память ЭВМ БЭСМ-6. Пространство на внешней памяти под отображение не использовалось. Система решала проблему доступа к увеличенной оперативной памяти машины в программах, написанных на Фортране. (Наиболее часто встречающаяся конфигурация ЭВМ БЭСМ-6 включает оперативную память объемом 128 К слов, однако, архитектура этой ЭВМ предполагает, что отдельно решаемая вадача располагает памятью не свыше 32 К слов. Дополнительные кубы оперативной памяти используются за счет мультипрограммирования. Кроме того, базовые средства операционной системы позволяют обращаться к увеличенной оперативной памяти через аппарат подчиненных задач из программ, написанных на ассемблере.).
В разработанном на базе ОС ИПМ варианте системы УВП виртуальные массивы размещаются в увеличенной оперативной памяти. Доступ к виртуальным массивам осуществляется посредством зон видимости [l8]. Зона видимости — это одна или несколько страниц оперативной памяти задачи, в которые помещаются участвующие в счете элементы виртуальных массивов. Для того, чтобы перемещать информацию между двумя уровнями памяти, были разработаны средства управления загрузкой зон видимости.
Эксплуатация системы УВП, наряду с отмеченными выше положительными качествами, выявила некоторую ограниченность первого варианта реализации метода управляемой виртуальной памяти.
Прежде всего, решение некоторых задач было затруднено из-за ограниченности объема виртуальной памяти. Поскольку виртуальная память должна в конечном итоге отображаться на реальные ресурсы ЭВМ, ее объем определяется емкостью тех ресурсов, которые испсльзуются под отображение. Объем виртуальной памяти в первой версии системы УВП определялся емкостью оперативного запоминающего устройства с учетом дополнительных кубов памяти. Дальнейшее увеличение объема виртуальной памяти требует подключения в качестве нового уровня памяти внешней памяти ЭВМ БЭСМ-6.
Внешняя память ЭВМ БЭСМ-6 включает в себя память на магнитных барабанах, магнитных дисках и магнитных лентах.
Использование магнитных лент под отображение виртуальной памяти исключается из-за невозможности прямого доступа к элементам памяти этого ресурса.
Выбор магнитных барабанов под отображение виртуальной памяти не представляется оправданным, поскольку магнитные барабаны используются операционной системой в основном для буферизации обменов с внешней памятью.
Поэтому, решая вопрос о выборе ресурсов внешней памяти под отображение виртуальной памяти, по-видимому, следует ориентироваться на магнитные диски.
Подключение магнитных дисков в качестве нового уровня памяти позволяет, вообще говоря, увеличить объем виртуальной памяти в десятки и сотни раз. Однако, виртуальную память объемом около 2 млн слов (что примерно соответствует 16 мгб памяти машин единой серии) можно реализовать на ЭВМ БЭСМ-6 достаточно эффективно.
Такой объем виртуальной памяти и был выбран в качестве ориентира в новой реализации метода УВП. Кроме того, указанное ограничение на объем виртуальной памяти позволяет сохранить выработанный в первой версии интерфейс между транслятором и системой УВП.
В связи с подключением нового уровня памяти возникает потребность в дополнительных средствах управления перемещением информации между различными уровнями памяти. Так, например, программисту полезно предоставить возможность управления упреждающей подкачкой с диска нужных виртуальных страниц, или возвращением на диск тех страниц, к которым не будет обращений на очередном участке программы. Следует развить аппарат зон видимости на случай трехуровневой организации виртуальной памяти, т. е. дать возможность программисту описывать зоны видимости не только в оперативной, но и в увеличенной оперативной памяти ЭВМ БЭСМ-6.
Отметим еще одно ограничение первой реализации метода УВП. В ходе эксплуатации системы УВП выявилась недостаточная гибкость предлагаемых средств управления виртуальной памятью. Из описанной выше организации работы с виртуальными массивами следует обязательная привязка виртуальных массивов к зонам видимости и обращение к элементам массивов посредством соответствующих зон видимости. Таким образом, от программиста требуется дополнительная работа по выделению в оперативной памяти зон видимости, описанию их параметров, привязке к зонам массивов и т. д. Однако, в программах, использующих метод УВП, часто содержатся части, эффективность выполнения которых не существенная не требуется оптимизация таких частей с помощью средств управления виртуальной памятью. Для таких частей более удобен метод виртуальной памяти, который не требует от программиста никакой дополнительной работы, кроме спецификации виртуальных массивов.
В новой реализации метода УВП было бы удобно иметь возможность работы с виртуальными массивами без средств управления. Иными словами, желательно реализовать метод виртуальной памяти как частный случай метода УВП.
Возможностью работы с виртуальной памятью без средств управления смогут воспользоваться задачи, написанные в расчете на ЭВМ с большим объемом прямоадресуемой памяти, которые нужно просчитать, пусть даже с потерей эффективности, на ЭВМ БЭСМ-б.
Введение
третьего уровня памяти в системе УВП, как уже отмечалось, требует разработки дополнительных средств управления виртуальной памятью. Однако, гибкость управления виртуальной памятью в целом должна обеспечиваться не только путем расширения набора управляющих средств, но также путем отказа в некоторых случаях от средств управления.
Существует еще одна сторона проблемы повышения гибкости управления виртуальной памятью, имеющая технологический характер. В системе УВП с трехуровневой организацией виртуальной памяти, наряду со средствами управления перемещением виртуальных страниц между уровнями памяти, следует ввести возможность управления размерами памяти, выделяемой задаче в качестве второго и третьего уровня. Так, например, задаче может быть выделен большой объем увеличенной оперативной памяти. В этом случае счет задачи будет выполняться с меньшим числом обращений к диску. Такой вариант распределения памяти подходит для производственногб счета задач, которые предъявляют особые требования к эффективности выполнения программ и которые обеспечены достаточными ресурсами оперативной памяти. В случае же выполнения небольших тестовых или отладочных просчетов, большой объем увеличенной оперативной памяти затрудняет вхождение задачи в решение и отрицательно сказывается на эффективности обслуживания задач в смеси. .
Управление размерами памяти разных уровней позволит варьировать заказы ресурсов ЭВМ с целью обеспечения в одном случае эффективного счета, в другом — быстрого вхождения задач в решение и многократных повторных запусков.
Рассмотренные выше соображения позволяют сформулировать следующие основные требования к новой реализации метода управляемой виртуальной памяти:
— виртуальная память объемом около 2 млн слов должна отображаться на три уровня памяти ЭВМ БЭСМ-6 (оперативную, увеличенную • оперативную, пространство на магнитных дисках),.
— программисту следует предоставить широкий набор средств управления виртуальной памятью, а также дать возможность работать с виртуальными массивами без средств управления,.
— наряду со средствами управления перемещением информации между различными уровнями памяти, предоставить возможность управлять размерами памяти разных уровней.
Трехуровневая организация виртуальной памяти требует разработки специальных понятий, отражающих специфику организации виртуальной памяти, новых алгоритмов управления в системе УВП, новых структур системных таблиц и стратегий перемещения виртуальных страниц с одного уровня памяти на другой, реализации дополнительных средств управления виртуальной памятью.
Уже в начальный период эксплуатации системы УВП стали очевидными сложности, связанные с отладкой программ. Использующие метод УВП программы отличает, как правило, большой размер (порядка нескольких тысяч операторов) и длительное время выполнения. Известно, что такие программы трудно разрабатывать и отлаживать. К тому же, много дополнительных трудностей возникает из-за специфики организации работы с виртуальными массивами. Период отладки занимает значительную часть времени, затрачиваемого на разработку программ. Поэтому снижение трудоемкости процесса отладки путем создания развитых отладочных средств, учитывающих специфику выполнения программ в системе УВП, представляется актуальной задачей.
Опыт разработки и отладки программ в системе УВП показал необходимость создания специальных средств отладки программ, использующих управляемую виртуальную память. Существующие на ЭВМ БЭСМ-6 средства отладки оказались не очень подходящими для задач, решаемых с помощью системы УВП прежде всего потому, что не обеспечивали отладку в терминах понятий УВП.
Создавая средства отладки следует учесть опыт, накопленный в этой области за последние годы. В настоящее время существует большое число методов и приемов отладки. Задача, однако, состояла в том, чтобы выделить те из них, быть может дополнив и развив, которые соответствовали бы классу задач, решаемых с помощью метода УВП.
Для того, чтобы определить необходимый набор средств отладки программ в системе УВП, был проведен анализ организации работ по отладке программ, использующих метод УВП, и сформулированы требования к системе отладки. Рассмотрим основные приемы отладки программ, которые обычно используются в практике.
Одним из полезных средств отладки является системная распечатка в терминах входного языка, характеризующая состояние программы в момент возникновения в задаче непредусмотренной аварийной ситуации. Такая распечатка помогает составить представление о причинах аварийного останова, а в некоторых случаях позволяет достаточно точно локализовать место ошибки в программе. Однако, для более детального анализа поведения программы требуются дополнительные средства.
Еще одним способом отладки, к которому часто прибегают пользователи системы, является отладка за терминалом. Преимущество интерактивной отладки состоит в том, что программист имеет возможность следить за ходом выполнения программы и принимать решения в зависимости от результатов предыдущих шагов в программе. В то же время диалоговая отладка не всегда является удобным для пользователя способом обнаружения ошибки.
Отладка в интерактивном режиме предполагает активный диалог пользователя с системой. Если программист описал точки прерывания или ситуацию прерывания счета, он не должен долго ждать попадания в эти точки или наступления описанной ситуации. Если же ошибка возникает после продолжительного счета, то искать такую ошибку с помощью диалоговых средств слишком утомительно и непродуктивно. Кроме того, интерактивная отладка программ, требующих для счета больших ресурсов (счетных каналов, памяти на системных дисках и барабанах), неэффективна с точки зрения рационального использования ресурсов ЭВМ. В таких случаях более удобна пакетная отладка, при которой программист описывает задание на отладку и получает отладочную информацию, решая задачу в пакетном режиме.
Важная особенность вычислительных задач состоит в том, что в ходе отладки часто возникает необходимость выводить на печать в некоторых точках программы информационные массивы, промежуточные значения переменных. Объем выводимой информации может быть достаточно большим и может требовать при распечатке десятки метров бумаги АЦПУ. Повторные запуски задачи на счет с выводом отладочной информации, которые неизбежны при отладке, вызывают перерасход бумаги. Но основное неудобство такого способа отладки заключается в том, что анализ результатов отладки, требующий просмотра многочисленных объемных выдач, становится весьма трудоемким делом.
Желательно облегчить эту стадию отладки, предоставив возможность записать результаты отладочных просчетов в архив. Архив должен располагать удобными средствами, позволяющими просматривать и анализировать полученные в ходе отладки данные в диалоговом или пакетном режимах работы.
Анализ основных приемов и особенностей отладки программ решения вычислительных задач, позволяет сформулировать основные требования к системе отладки программ, использующих управляемую виртуальную память. Она должна:
— обеспечивать выдачу системной распечатки в случае возникновения в задаче аварийной ситуации,.
— предоставлять средства ведения отладки в диалоговом режиме,.
— предоставлять возможность отладки программ в пакетном режиме ,.
— располагать архивом результатов отладки и средствами анализа накопленной в архиве информации.
Большим удобством для пользователя является возможность ведения отладки в терминах входного языка. Поскольку для системы УВП таким языком является Фортран, расширенный относящимися к УВП конструкциями, в системе отладки должна обеспечиваться отладка как в терминах идентификаторов Фортрана, так и в терминах понятий УВП.
Таким образом, цель настоящей работы состоит в том, чтобы.
— развить идеологию метода управляемой виртуальной памяти на случай многоуровневой организации виртуальной памяти,.
— разработать средства отладки, отвечающие классу задач, решаемых с помощью метода УВП.
В соответствии с поставленной целью были разработаны система трехуровневой управляемой виртуальной памяти УВП-3 и система отладки, концепции и вопросы реализации которых составляют основ.
— 17 ное содержание настоящей работы.
Работа состоит из введения, трех глав и заключения. В главе I рассматривается методика использования управляемой виртуальной памяти в языках высокого уровня, приводится пример программы на Фортране, отражающий минимальный уровень требований системы УВП-3 к организации программ обработки виртуальных массивов. Описываются организация и основные понятия системы УВП-3, средства управления виртуальной памятью. В заключительном разделе главы I дается пример программы, использующей средства управления виртуальной памятью.
Глава 2 посвящена описанию средств отладки в системе УВП-3. В первом разделе главы 2 дается обзор методов и систем отладки. Далее описываются специфические требования к средствам отладки программ, использующих управляемую виртуальную память, рассматриваются архитектура и основные возможности разработанной в рамках УВП-3 системы отладки, архива результатов отладки. Дается неформальное описание языка системы отладки, приводится пример задания на пакетную отладку программы. Описывается язык работы с архивом результатов отладки, приводится пример пакетного задания на распечатку отладочной информации из архива.
В главе 3 рассматриваются вопросы реализации системы УВП-3 и ее средств отладки. В первых разделах главы 3 дается описание реализации работы с виртуальными массивами, основные функции и структура системы УВП-3. Последние разделы посвящены списанию реализации средств диалоговой и пакетной отладки, архива результатов отладки.
— 18.
ЗАКЛЮЧЕНИЕ
.
Первая реализация метода УВП для ЭВМ БЭСМ-6, выполненная на .базе операционной системы ОС ИПМ ([18]), показала перспективность использования машин с неполной виртуальной адресацией для решения крупных задач математической физики. Дальнейшее развитие метода УВП и создание системы трехуровневой управляемой виртуальной памяти УВП-3 позволит эффективно решать на ЭВМ БЭСМ-6 задачи, требующие большого объема виртуальной памяти. Система УВП-3 предоставляет программам, написанным на языке Фортран, виртуальную память объемом до 2 млн слов. Под отображение виртуальной памяти используются оперативная память, увеличенная оперативная память ЭВМ БЭСМ-6 и пространство на дисках.
Система УВП-3 реализована в операционной среде ОС ДИСПАК и с 1981 года находится в опытной эксплуатации. В 1982 году реализована первая версия системы отладки программ, использующих трехуровневую управляемую виртуальную память, в которую вошли средства пакетной, диалоговой и диалогово-пакетной отладки. Вторая версия системы отладки с расширенным подмножеством языка отладки реализована в 1983 году.
Внедрение системы .УВП-3 потребовало создания соответствующего программного окружения: адаптированного к условиям ОС ДИСПАК транслятора с языка Фортран, загрузчика и средств совместимости с системой программирования ДУБНА. В этих работах участвовали сотрудники ИПМ АН СССР Голубев А. С., Горелик A.M., Коновалов Н. А., Скляр Г. Б., Фирсов А. Е. Эксплуатация системы УВП-3 выявила необходимость более эффективной реализации некоторых базовых средств операционной системы ДИСПАК и разработки дополнительных экстракодов. Эта работа была выполнена Ильяковым В. Н. В реализации второй версии средств отладки в системе УВП-3 принимала участие Ковалева Н.В.
Основные концепции трехуровневой управляемой виртуальной памяти разработаны автором совместно с Крюковым В. А. Принципы реализации системы УВП-3, идеология и язык системы отладки разработаны лично автором. Кроме того, автором выполнена реализация системы УВП-3 и системы отладки.
Система УВП-3 написана на языках АСТРА и БЕМШ с использованием макросредств. Объем программ системы УВП-3 и системы отладки составляет примерно Ютыс. предложений. Скомпилированные программы занимают около 30 К слов памяти.
В работе получены следующие основные результаты.
1. Метод УВП развит в следующих направлениях:
— виртуальная адресация распространена на новый уровень внешней памяти ЭВМ — магнитные диски,.
— введена возможность обращения к виртуальным массивам без средств управления.
2. Реализована система трехуровневой управляемой виртуальной памяти УВП-3 для ЭВМ БЭСМ-6, позволяющая использовать в программах, написанных на языке Фортран, виртуальную память объемом до 2 млн слов.
3. Разработан язык системы отладки, ориентированный на отладку использующих метод УВП программ в пакетном и диалоговом режимах, сохранение отладочной информации в архиве с последующим анализом и выборочной распечаткой результатов отладки.
4. Разработана и реализована система отладки, которая дает возможность отлаживать программы с помощью пакетных и диалоговых средств в терминах входного языка системы УВП-3.
Содержание работы отражено в публикациях [19−25] .
— 107.
Автор выражает благодарность своим научным руководителям Э. З. Любимскому и Б. А. Крюкову. Автор благодарит весь коллектив отдела № 9 во главе с М.Р.Шура-Бура за постоянное внимание к его работе. Автор благодарит также коллектив отдела № 13 во главе с В. А. Крюковым за всестороннюю поддержку, оказанную автору на разных этапах реализации системы УВП-3.