Читайте также:
|
|
Этап синтеза.
3.6.1.Распределение памяти.
Фаза распределения памяти обеспечивает выделение памяти для переменных, констант и других объектов языка. Результатом работы этого этапа является создание адреса, содержащего полную информацию о структуре распределения памяти. Выделяемая память
может принадлежать к одному из перечисленных ниже видов.
1.Статическая память выделяется для объектов, время жизни которых равно времени жизни программы. Статическая память не может быть освобождена до полного завершения работы соответствующей программы. Например, в языке PASCAL для массивов выделяется статическая память.
2. Динамическая память выделяется для объектов, время жизни которых равно времени жизни определенного блока программы
(например процедуры или функции). Может быть освобождена после
завершения выполнения соответствующего блока программы. Например,
такой вид памяти выделяется для локальных переменных.
3. Глобальная память выделяется для объектов, время жизни которых неизвестно в период компиляции и определяется только в процессе выполнения программы. Таким образом глобальная память может выделяться или освобождаться только в процессе выполнения программы. Например, в языке PASCAL- это динамические типы, для которых выделение (new) и освобождение памяти (dispose) происходит
только при выполнении программы.
Управление статической памятью является наиболее простым по сранению с другими видами памяти, так как требования к статической памяти полностью определяются периодом компиляции. Поскольку выделенная статическая память не подлежит освобождению, общий объем памяти определяется суммой ее составляющих и при этом
какое - либо "совместное использование" этой памяти не допускается.
Средства реализации ранних языков программирования (например для языка FORTRAN) основывались на статической памяти.
Управление динамической памятью представляется более сложной задачей, поскольку память распределяется на входе блока (процедуры или функции), а освобождается после выполнения блока. В этом случае существует возможность совместного использования одних и тех же участков динамической памяти объектами, относящимися к различным блокам программы. Реализация средств управления динамической памятью осуществляется классическим стековым алгоритмом, описание которого можно найти в книге [ 6 ].
Управление глобальной памятью реализуется следующим образом.
Резервируется общее пространство памяти, из которого
осуществляется выделение памяти для объектов, использующих глобальную память в процессе выполнения программы (это резервируемое пространство памяти принято называть кучей).
В первоначальный момент времени выполнения программы все зарезервированное пространство памяти является свободным. Однако,
в процессе выделения и освобождения участков глобальной памяти, зарезервированное пространство памяти представляется, как правило, последовательностью чередуемых свободных и занятых участков памяти (см. рис. 3.6.1-1).
…
Дата добавления: 2015-02-16; просмотров: 171 | Поможем написать вашу работу | Нарушение авторских прав |