Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
подготовка к мк2.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
633 Кб
Скачать
☆

24.Базовое управление памятью

Управление памятью – выделение областей памяти для хранения данных и кода оттранслированных программ. Основные элементы программ и данных, которые необходимо размещать и сохранять в памяти во время выполнения программы:

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

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

  • Определяемые пользователем структуры данных и константы. Для всех структур данных, объявленных в пользовательских программах или созданных ими требуется выделить место в памяти.

  • Точки возврата для подпрограмм. Подпрограммы могут вызываться в различных точках программы.

  • Среды ссылок. Размещение сред ссылок во время выполнения программы может потребовать значительных ресурсов памяти.

  • Временная память для вычисления выражений. При вычислении выражений необходимо использовать определяемую системой временную память для хранения промежуточных результатов вычисления.

  • Временная память при передачи параметров. При вызове подпрограммы должен быть вычислен список фактических параметров и получаемые результаты должны сохраняться во временной памяти, пока не будет полностью вычислен весь список параметров.

  • Буферы ввода-вывода. Используются для хранения данных в промежутке между моментом их фактической передачи с внешнего устройства или на него и моментом выполнения инициированных программой операций ввода или вывода.

  • Различные системные данные.

Некоторые операции также требуют выделения или освобождения памяти:

  • Операции вызова и возврата из подпрограмм

  • Операции создания и уничтожения структур данных.

Операции вставки и удаления компонентов

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

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

Уплотнение и повторное использование. После утилиза­ции память может стать сразу пригодной для повторного ис­пользования либо может потребоваться ее уплотнение для по­строения больших блоков свободной памяти из маленьких.