Динамическое распределение памяти для данных в ходе компиляции и выполнения программ
При динамическом распределении памяти на этапе трансляции память распределяется для данных только внутри блоков, относительно начала области данных каждого блока. Это производится в ходе просмотра таблицы идентификаторов также, как и при статическом распределении, только начальные адреса областей данных для всех блоков принимаются равными T[i] = LS, где LS – длина служебной информации, размещаемой в начале области данных каждого блока. В процессе выполнения программы при входе в блок (в том числе и в процедуру) выделяется память для области данных блока.
Динамическое распределение памяти будет рассматриваться на примере программы:
program PR; Дерево блоков для данной программы
var a: real; определяет статические цепочки вло-
procedure P1; женности блоков:
var x,y,z: real; ╔════╗ уровень 1
begin ... end; ╔═════╗ ║ PR ║ ╔════╗ уровень 2
procedure P2; ║ P1 ╟──╢ a ╟──╢ P2 ║
var g: real; ║x,y,z║ ╚════╝ ║ g ║
procedure P3; ╚═════╝ ╚═╤══╝
var b,a: real; ╔═╧══╗ уровень 3
begin ... P1; ... end; ║ P3 ║
begin ... P3; ... end; ║ d,a║
begin ... P2 ... end. ╚════╝
Последовательность работы блоков определяет динамическую цепочку вызова блоков, представленную на рисунке 10.2.
![](data:image/png;base64,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)
При динамическом распределении памяти адрес любой переменной определяется как сумма базового адреса области данных блока и смещения переменной от начала этой области. Для хранения адресов областей данных используется массив указателей начала областей данных блоков (обычно базовых регистров) – УНБ[1], УНБ[2], ... . В соответствии с правилами определения областей действия имен переменных при работе блока уровня i должны быть загружены указатели УНБ[1]...УНБ[i] в соответствии со статической цепочкой вложенности блоков.
Так, если обозначить [V] – адрес начала области данных блока V, то после входа в блок PR должно быть: УНБ[1]=[PR], после входа в блок P2: УНБ[1]=[PR], УНБ[2]=[P2], после входа в блок P3: УНБ[1]=[PR], УНБ[2]=[P2], УНБ[3]=[P3]; после входа в блок P1: УНБ[1]=[PR], УНБ[2]=[P1].
Средством реализации динамического распределения памяти является стек. Обозначим:
УС – указатель стека;
k – номер блока;
УБ[k] – уровень блока k;
УБТ – уровень текущего блока;
n[k] – размер области данных блока k;
УНБО[k] – значение указателя начала области данных блока,
в котором описана процедура или содержится блок k;
УНБВ[k] – значение указателя начала области данных блока, из
которого произошел вызов процедуры или вход в блок k;
УБВ[k] – уровень блока, из которого произошел вызов процедуры
или вход в блок k.
Связующей информацией блока k называется тройка значений (УНБО[k], УНБВ[k], УБВ[k]). Эта информация помещается в начало области данных каждого блока. Для самого внешнего блока связующей информацией считается (0,0,0).
При входе в самый внешний блок значения УС и УНБ[1] устанавливаются на начало стека, для уровня текущего блока принимается начальное значение – УБТ = 1. Далее, при входе в любой блок k выполняется подпрограмма:
ВХОД: СТЕК(УС) = (УНБ[УБ[k]-1], УНБ[УБТ], УБТ);
УБТ = УБ[k];
УНБ[УБ[k]] = УС;
УС = УС + n[k]+ LS; // LS - длина связующей
// информации
Для приведенного примера после входов в процедуры P2, P3, P1 имеем состояние стека:
CТЕК Вход в PR Вход в P2 Вход в P3 Вход в P1
┌───────────┐
PR:│(0,0,0) │ УНБ[1]=[PR] УНБ[1]=[PR] УНБ[1]=[PR] УНБ[1]=[PR]
│ a │ УБТ=1 УНБ[2]=[P2] УНБ[2]=[P2] УНБ[2]=[P1]
P2:│[PR],[PR],1│<─ УС УБТ=2 УНБ[3]=[P3] УБТ=2
│ g │ ┌─ УС УБТ=3 ┌─ УС
P3:│[P2],[P2],2│<───────────┘ ┌── УС │
│ b │ │ │
│ a │ │ │
P1:│[PR],[P3],3│<───────────────────────┘ │
│ x │ │
│ y │ │
│ z │ │
└───────────┘<────────────────────────────────────┘
Первые элементы связующей информации определяют цепочку адресов областей данных блоков в соответствии со статической цепочкой вложенности блоков (P1→PR, P3→P2→PR). Вторые элементы определяют цепочку адресов в соответствии с динамической цепочкой вызова блоков (P1→P3→P2→PR).
При выходе из процедуры нужно восстановить УС, УБТ и цепочку УНБ. Алгоритм подпрограммы ВЫХОДПР:
восстанавливается УС = УНБ[УБТ] и из стека извлекаются УНБО[k], УНБВ[k], УБВ[k]; восстанавливается УБТ = УБВ[k]; если УБТ = 1, то конец, т.к. УНБ[1] никогда не модифицируется; по динамической цепочке восстанавливается последний указатель УНБ[УБТ] = УНБВ[k]; для блоков на уровнях j = УБТ-1,УБТ-2,...,2 по статической цепочке восстанавливается УНБ:
![](data:image/png;base64,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)
Таким образом, для примера восстанавливается:
УНБ[1]=[PR] УБТ = 3
УНБ[2]=[P2]
УНБ[3]=[P3]
Для приведенного примера после выхода из процедур P1, P3, P2 имеем состояние стека:
CТЕК Выход из P1 Выход из P3 Выход из P2
┌───────────┐ УНБ[1]=[PR] УНБ[1]=[PR] УНБ[1]=[PR]
PR:│(0,0,0) │ УНБ[2]=[P2] УНБ[1]=[P2] УБТ=1
│ a │ УНБ[3]=[P3] УБТ=2
P2:│[PR],[PR],1│<─┬───────────┐ УБТ=3 ┌── УС
│ g │──┘освобождено└────────────────────┘
P3:│[P2],[P2],2│<─┬────────────────────── УС
│ b │ │освобождено
│ a │──┘
P1:│[PR],[P3],3│<─┬───────── УС
│ x │ │
│ y │ │освобождено
│ z │──┘
└───────────┘
Выход из любого блока, не являющегося вызванной процедурой, по концу работы блока реализуется подпрограммой:
ВЫХОДБЛК:
УС = УНБ[УБТ];
УБТ = УБТ-1;
В частности, для приведенного примера с помощью подпрограммы ВЫХОДБЛК реализуется выход из блока PR по концу работы всей программы. |