- •8. Массивы переменного размера
- •11. Элементарные операции
- •12. Операции для структур данных: создание/удаление структур
- •15. Управление последовательностью выполнения инструкций
- •16. Подпрограммы. Правила копирования
- •17. Рекурсивные подпрог.
- •21. Передача параметров в подпрог.
- •24.Базовое управление памятью
- •25.Инкапсуляция. Структурные типы данных и их реалызация
- •27. Абстрактные типы данных
- •28. Наследование
- •29. Связь языков программирования окружающей средой
24.Базовое управление памятью
Управление памятью – выделение областей памяти для хранения данных и кода оттранслированных программ. Основные элементы программ и данных, которые необходимо размещать и сохранять в памяти во время выполнения программы:
Сегменты кода для оттранслированных программ пользователя. В любой системе основной блок памяти отводится для хранения сегментов кода, представляющих оттранслированную форму программ пользователя, независимо от используемого метода интерпретации – аппаратного или программного.
Системные программы времени выполнения. Другой значительный блок памяти во время выполнения должен быть отведен для размещения системных программ, которые поддерживают выполнение программы пользователя.
Определяемые пользователем структуры данных и константы. Для всех структур данных, объявленных в пользовательских программах или созданных ими требуется выделить место в памяти.
Точки возврата для подпрограмм. Подпрограммы могут вызываться в различных точках программы.
Среды ссылок. Размещение сред ссылок во время выполнения программы может потребовать значительных ресурсов памяти.
Временная память для вычисления выражений. При вычислении выражений необходимо использовать определяемую системой временную память для хранения промежуточных результатов вычисления.
Временная память при передачи параметров. При вызове подпрограммы должен быть вычислен список фактических параметров и получаемые результаты должны сохраняться во временной памяти, пока не будет полностью вычислен весь список параметров.
Буферы ввода-вывода. Используются для хранения данных в промежутке между моментом их фактической передачи с внешнего устройства или на него и моментом выполнения инициированных программой операций ввода или вывода.
Различные системные данные.
Некоторые операции также требуют выделения или освобождения памяти:
Операции вызова и возврата из подпрограмм
Операции создания и уничтожения структур данных.
Операции вставки и удаления компонентов
Начальное распределение. В момент начала выполнения программы каждый блок памяти может быть либо отведен для некоторой цели, либо оставаться свободным. Если блок сначала свободен, то его можно распределить динамически в процессе выполнения. Для любой системы управления памятью нужен какой-то метод, позволяющий системе учитывать свободную память. Необходимы также механизмы выделения свободной памяти, если в ней возникнет потребность во время выполнения.
Утилизация памяти. Память, которая была распределена и использовалась в течение какого-то времени, а затем стала ненужной, должна обнаруживаться системой управления памятью с целью повторного ее использования. Утилизация памяти может быть очень простой, как в случае перемещения указателя стека, или очень сложной, как в случае сбора мусора.
Уплотнение и повторное использование. После утилизации память может стать сразу пригодной для повторного использования либо может потребоваться ее уплотнение для построения больших блоков свободной памяти из маленьких.
