Студопедия
МОТОСАФАРИ и МОТОТУРЫ АФРИКА !!!

Авиадвигателестроения Административное право Административное право Беларусии Алгебра Архитектура Безопасность жизнедеятельности Введение в профессию «психолог» Введение в экономику культуры Высшая математика Геология Геоморфология Гидрология и гидрометрии Гидросистемы и гидромашины История Украины Культурология Культурология Логика Маркетинг Машиностроение Медицинская психология Менеджмент Металлы и сварка Методы и средства измерений электрических величин Мировая экономика Начертательная геометрия Основы экономической теории Охрана труда Пожарная тактика Процессы и структуры мышления Профессиональная психология Психология Психология менеджмента Современные фундаментальные и прикладные исследования в приборостроении Социальная психология Социально-философская проблематика Социология Статистика Теоретические основы информатики Теория автоматического регулирования Теория вероятности Транспортное право Туроператор Уголовное право Уголовный процесс Управление современным производством Физика Физические явления Философия Холодильные установки Экология Экономика История экономики Основы экономики Экономика предприятия Экономическая история Экономическая теория Экономический анализ Развитие экономики ЕС Чрезвычайные ситуации ВКонтакте Одноклассники Мой Мир Фейсбук LiveJournal Instagram

Автоматическая память




Автоматическая память управляется директивами программы, связанными с вызовами процедур и их окончанием. Каждая процедура для своей работы требует индивидуальной локальной среды, которая называется фреймом активации процедуры. Фрейм активации включает значения фактических параметров, подставляемых на место формальных параметров, указанных в заголовке процедуры, значения локальных переменных, описываемых внутри процедуры, а также элемент хранения адреса возврата из процедуры. Фрейм активации однозначно характеризует процедуру, т.к. содержит набор объектов, необходимых для ее выполнения. Размещение локальной среды связано с активацией процедуры и происходит автоматически в момент ее вызова, а удаление локальной среды связано с пассивацией процедуры при завершении ее выполнения. В программе может одновременно существовать несколько активных процедур. Последовательность активации и пассивации процедур связана с вложенностью их вызовов. Поэтому управление автоматической памятью должно обеспечивать возможность корректного выполнения вызовов процедур в соответствии с дисциплиной “последним пришел – первым обслужен” (LIFO – Last Input First Output). Для этой цели наиболее подходящей является структура стека, и область автоматической памяти располагается именно в области системного стека. При активации каждой новой процедуры верхушка стека “опускается вниз” на величину, определяемую размером локальной среды данной процедуры. При пассивации процедуры верхушка стека “поднимается вверх” на эту же величину.

Ниже для фрагмента программы приведена иллюстрация распределения статической и автоматической памяти (рис. 15). В глобальной области программы описаны две переменные: x и y. В статической памяти для переменной с именем x выделен элемент хранения размером Sizeof(WORD)=2(байта), в который в результате выполнения операции присваивания занесено значение 10, для переменной с именем y выделен элемент хранения размером Sizeof(REAL) = 6(байтов), значение которого будет неопределенным до завершения выполнения процедуры W1. Активация процедуры W1 приведет к созданию локальной среды, в которой будут размещены элементы хранения следующих объектов:

¨ значение фактического параметра x (2 байта), равное 10, подставляемого на место формального параметра x1: word, т.к. данный параметр передается по значению,

¨ указатель (4 байта) на фактический параметр y, подставляемый вместо формального параметра var y1: real, т.к. данный параметр передается по ссылке, значение указателя равно адресу переменной y в статической памяти,

¨ значение локальной переменной A: integer (2 байта),




¨ адрес возврата из процедуры (4 байта).

В процессе выполнения процедуры W1 происходит вызов процедуры W2. Активация процедуры W2 приведет к созданию локальной среды, в которой будут размещены элементы хранения следующих объектов:

¨ значение локальной переменной B: word (2 байта),

¨ адрес возврата из процедуры (4 байта).

Пассивация процедур W1, W2 и, соответственно, освобождение локальной среды каждой из них происходит в обратном порядке.

Var x: word; y: real;

Procedure W1 (x1: word; var y1: real); Procedure W2;

Var A: integer; Var B: word;

begin begin

… …

W2; end;

end;

begin

x:=10; W1( x,y ); writeln( y );

end.

 
 






Дата добавления: 2014-02-24; просмотров: 647; Опубликованный материал нарушает авторские права? | Защита персональных данных


Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: На стипендию можно купить что-нибудь, но не больше... 9486 - | 7520 - или читать все...

Читайте также:

 

3.83.188.254 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.


Генерация страницы за: 0.002 сек.