Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

СТАТИЧЕСКОЕ РАСПРЕДЕЛЕНИЕ ПАМЯТИ

Читайте также:
  1. A) Постоянно находится в памяти.
  2. Double сохраняется в памяти 15-16 десятичных знаков.
  3. I) Биноминальное распределение
  4. III. Распределение виртуальной памяти
  5. III. Распределение часов курса по темам и видам
  6. III. Распределение часов курса по темам и видам работ
  7. IV. РАСПРЕДЕЛЕНИЕ ЧАСОВ ПО ТЕМАМ ДИСЦИПЛИНЫ
  8. LINUX|| Структура памяти процесса в ОС Linux.
  9. LINUX|| Управление памятью в ОС Linux. Карта памяти
  10. Remembrance Day -День памяти.

 

СТАТИЧЕСКОЕ РАСПРЕДЕЛЕНИЕ ПАМЯТИ (static memory allocation) Способ распределения оперативной памяти, при котором размещение в ней программы или объектов одной программы (переменных, констант, процедур и т. п.), а также объем занимаемой ими памяти определяется заранее и не меняется в процессе выполнения.

Статическое распределение памяти эффективо, поскольку на управление памятью во время выполнения не тратится ни времени, ни памяти. Однако этот метод несовместим с рекурсивными вызовами подпрограмм, со структурами данных, размер которых зависит от вычисляемой или вводимой информации, и со многими другими желательными возможностями языка. Читатель, однако, не должен упускать из вида важность статического метода распределения памяти - для многих программ вполне достаточно статического распределения. Два широко используемых языка программирования, Фортран и Кобол, сконструированы в расчете исключительно на статическое распределение памяти. [1]

 

Статическое распределение памяти состоит в назначении адресов для размещения данных в процессе трансляции. Адреса могут затем корректироваться при загрузке программы, но в процессе исполнения объектной программы остаются неизменными. [2]

 

Статическое распределение памяти целесообразно проводить в два этапа. На первом этапе выделяется секция памяти каждому блоку, а на втором - назначаются адреса переменным внутри блока.

 

Блочная структура программы.

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

Недостатком статического распределения памяти является неэкономное использование памяти, а преимуществом - экономия машинного времени при исполнении объектной программы. В случаях, когда данные не удается разместить в оперативной памяти, это преимущество сводится на нет дополнительными затратами времени на обмен с внешней памятью. В таких случаях динамическое распределение памяти может оказаться более выгодным с точки зрения общих затрат машинного времени. [5]

При статическом распределении памяти все данные, описанные в блоке, можно расположить в области памяти, выделенной Аля этого блока. Однако на практике массивы обычно размещают ь отдельном поле массивов. Это связано с тем, что массивы иногда приходится выносить во внешнюю память. [6]

Дерево описания массивов. Дерево описания массивов.

При статическом распределении памяти для простых переменных массивы, как уже отмечалось, размещаются в отдельной области памяти, а при динамическом распределении памяти - в той же области памяти, где простые переменные. На рис. 4.44 показан фрагмент таблицы идентификаторов и возможный вариант распределения секции стека для массивов. [7]

 

При статическом распределении памяти размещение массивов информации происходит до начала вычислительного процесса и не изменяется до его конца. Исполнительный адрес операндов указывается либо прямым (действительным) адресом в команде, либо суммой прямого адреса и индекса, по которому выполняется модификация адресной части команды. Статическое распределение памяти малоэффективно: заранее необходимо выделять большие области памяти из расчета на максимальную длину переменных массивов. Кроме того, такое распределение очень неудобно при многопрограммной работе, когда памятью могут одновременно пользоваться несколько программистов. [8]

В отличие от статического распределения памяти записи этой таблицы, указывающие количество машинных слов, fii для размещения данных блока i, приходится корректировать, (вычислять заново) в ходе исполнения программы при каждом входе в блок L Для этого в объектную программу нужно включить команды, вычисляющие величину tii перед каждым исполнением подпрограммы ВХОД. [9]

Несмотря на то что загрузчик кросс-аистемы производит статическое распределение памяти, действия его нельзя считать тривиальными, что объясняется сложным распределением памяти под области с различным функциональным назначением. Известно что для повышения надежности выполнения операций пересылок в формат команды вводят дополнительные, так называемые контрольные разряды. Вычисление этих разрядов в различных специализированных ЭВМ производится, как правило, по разным алгоритмам, что превращает соответствующие программы загрузчика в машинно-зависимые. [10]

Практически во всех реализациях Фортрана используется механизм статического распределения памяти. Этот факт часто используется программистами. [11]

Однако в автокоде нет средств для динамического распределения памяти (т.е. в процессе выполнения программы), так что эту проблему приходится решать на основе статического распределения памяти. В связи с этим мы рассмотрим несколько вариантов программы, в которых указанная проблема решается по-разному




Дата добавления: 2015-01-05; просмотров: 347 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2025 год. (0.19 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав