Введение к работе
Актуальность темы работы. В любой достаточно сложной программной системе выбор схемы управления динамической памятью существенно влияет как на эффективность использования ресурсов памяти и процессора, так и на сложность написания и отладки частей программы, связанных с созданием и удалением объектов. Можно выделить два основных подхода к управлению динамической памятью — явное освобождение, при котором работа по возвращению памяти, занимаемой неиспользуемыми объектами, лежит на программисте, и автоматическое освобождение, при котором неиспользуемые объекты выявляются и уничтожаются специальными алгоритмами сборки мусора. Хотя явное освобождение обычно эффективнее автоматического, оно часто противоречит принципу модульности, а также провоцирует опасные и трудно обнаруживаемые ошибки (такие как висячие ссылки и утечка памяти). Развитие программного и аппаратного обеспечения, повышающиеся требования к надежности программ, распространение языков функционального, логического и объектно-ориентированного программирования приводят к постепенному расширению сферы применения управления памятью с автоматическим освобождением.
Некоторые программные системы, такие как САПР, издательские системы, интерактивные системы программирования, предъявляют дополнительные требования к алгоритмам управления памятью. Для реализации отдельных компонент таких систем целесообразно использовать свой, наиболее подходящий, язык программирования. Обычно это затрудняет совместное использование объектов компонентами, написанными на различных языках, так как схемы управления памятью в этих языках различаются. Многие приложения требуют сохранения некоторой части информации между сеансами работы и одновременного доступа к ней нескольких пользователей. Для решения этой задачи используются СУБД, причем в последнее время все больший интерес вызывают СУБД с объектно-ориентированной моделью данных, предоставляющие значительную гибкость в обращении с данными, но существенно усложняющие задачу управления памятью в базе данных.
Традиционный подход, заключающийся в реализации отдельной схемы управления памятью для каждой системы программирования и для каждой СУБД, встречается с трудностями при создании больших программных комплексов. По этой причине практический интерес представляет разработка библиотеки управления памятью, пригодной для совместно-
го использования несколькими системами программирования и объектно-ориентированными СУБД.
Цели и задачи. Целью этой работы является разработка и реализация системы управления памятью для объектно-ориентированной многоязычной среды программирования. К системе предъявляются следующие требования:
в Эффективная поддержка языков программирования с существенно различными моделями памяти, в том числе С, C++, Lispvi C—Talk
» Возможность автоматического освобождения неиспользуемой памяти. Паузы в работе программы, обусловленные выполнением алгоритма сборки мусора, должны быть достаточно малы, чтобы быть незаметны пользователю интерактивного приложения.
Управление памятью в многопользовательской распределенной объектно-ориентированной базе данных.
Система должна функционировать под управлением современных многозадачных и многопользовательских операционных систем на 32-х и 64-х разрядных рабочих станциях и мощных персональных компьютерах. Алгоритмы управления памятью в базе данных должны допускать параллельную обработку в распределенной конфигурации.
Научная новизна.
в Разработана специализированная архитектура системы управления оперативной и внешней памятью в многоязычной объектно-ориентированной системе программирования. На основе этой архитектуры программно реализована система управления памятью в среде С—Talk
« Предложена классификация усовершенствованных сканирующих алгоритмов сборки мусора.
Разработан алгоритм генерационной сборки мусора, основанный на
использовании информации о типизации объектов. Доказана кор
ректность сборки мусора, задаваемой этим алгоритмом. Разра
ботан и реализован алгоритм параллельного автоматического ос
вобождения памяти в распределенной объектно-ориентированной
базе данных.
в Предложен эвристический алгоритм определения оптимального объема занимаемой виртуальной памяти.
Практическая ценность. Разработанная система управления памятью используется в многоязычной объектно-ориентированной среде С-Тз1к\\ в объектно-ориентированной СУБД GOODS.
Алгоритмы, предложенные в работе, могут быть использованы и в других системах управления памятью.
Внедрение результатов работы. Среда С—Talk используется в учебном процессе МАСИ.
На основе C-Talk разработана система автоматизации деятельности лечебного учреждения, система доведена до уровня исследовательского прототипа.
Программные средства реализованы в ОС UNIX System V и UNIX BSD на рабочей станции БЕСТА-90, в ОС Linux, BSD и SCO UNIX на 32-х разрядных микроэвм, SunOS на рабочих станциях Sparcstation и OSF-1 на DEC Alpha АХР.
Апробация работы. Основные результаты работы докладывались в 1990-94 годах на семинарах МАСИ, МАИ, ВЦ РАН, механико-математического факультета и факультета вычислительной математики и кибернетики МГУ.
Публикации. По теме диссертации опубликовано 7 печатных работ.
Структура и объем работы. Диссертация состоит из введения, 4 глав, заключения, списка литературы, содержащего 139 наименований и 3 приложений. Машинописных страниц —192, рисунков —19, таблиц — 5, объем приложений —32страницы.