Организация и функционирование компьютеров


Динамические структуры данных


До сих пор мы встречались с переменными, которые описывались в разделе объявления переменных программы или процедур и функций и которым в программе приписано определенное имя. Таким переменным  приписан простой или составной тип, который однозначно определяет объем памяти, необходимой для хранения переменной. Память для поименованных переменных выделяется при компиляции программы. Такая память называется статической. В некоторых ситуациях статическая память имеет серьезные недостатки. Рассмотрим подробнее некоторые аспекты компиляции программы и структуру программного кода.

Код программы состоит из трех автономных частей. Первая часть представляет собой исполняемую часть программы и называется программной секцией. Она включает реализацию операторов программы и всех процедур и функций программы в виде машинных команд. Каждая процедура или функция задается смещением относительно начала программной секции.

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

Наконец, третья секция программы называется стеком (вид очереди: последний вошел - первый вышел). Стек содержит информацию о вызовах процедур и функций. Пусть при выполнении программы мы обратились к некоторой процедуре. Так как процедуру можно вызвать из нескольких мест, необходимо указать, куда надо возвратиться после окончания работы процедуры. Эти данные вместе с некоторой технической информацией храниться в одной ячейке стека. Поскольку процедура может вызывать другую процедуру или функцию, стек может содержать информацию о нескольких вложенных вызовах. Если вспомнить рекурсию, вложенные вызовы могут содержать повторяющиеся вызовы.


- Начало -  - Назад -  - Вперед -



Книжный магазин