BigEdu.ru

Распределение памяти

┌│

Введение

1. Области данных

2. Описатели

3. Память для данных элементарных типов

4. Память для массивов

Векторы

Матрицы

Многомерные массивы

5. Память для структур

Записи по Хоору

Структуры PL/1

Структуры данных по Стендишу

6. Соответствие фактических и формальных параметров

Вызов по ссылке

Вызов по значению

Вызов по результату

Фиктивные аргументы

Вызов по имени

Имена массивов в качестве фактических параметров

Имена процедур в качестве фактических параметров

7. Динамическое распределение памяти

Метод помеченных границ для распределения памяти

Сборка мусора

Системы с двухуровневым распределением памяти

8. Объектно-ориентированные языки. Новые информационные

структуры и память для них

Введение

Задачей распределения памяти является вычисление адресов

для фрагментов программы и информационных объектов, исходя из

фиксируемого при генерации взаимного их расположения, причем

для адресов тех объектов, расположение которых в памяти нельзя

определить статически ( при трансляции ), генерируются

динамические вычисления этих адресов.

Информационные объекты в процессе эволюции языков

программирования также развивались - от простых переменных

целого, символьного типов до субстанций которыми оперируют

современные объектно-ориентированные языки. Ниже будут

изложены механизмы распределения памяти для самых

разнообразных информационных объектов.

1. Области данных

Областью данных является ряд последовательных ячеек - блок

оперативной памяти, - выделенный для данных, каким-то образом

объединенных логически. Часто ( но не всегда ) все ячейки

области данных принадлежат одной и той же области действия в

программе на исходном языке; к ним может обращаться один и тот

же набор инструкций ( т.е. этой областью действия может быть блок

или тело процедуры ).

Во время компиляции ячейка для любой переменной времени

счета может быть представлена упорядоченной парой чисел ( номер

области данных, смещение ), где номер области данных - это

некоторый единственный номер, присвоенный области данных, а

смещение - это адрес переменной относительно начала области

данных. Когда мы генерируем команды обращения к переменной, эта

пара переводится в действительный адрес переменной. Это обычно

выполняется установкой адреса базы ( машинного адреса первой

ячейки ) области данных на регистр и обращению к переменной по

адресу, равному смещению плюс содержимое регистра. Пара ( номер

области данных, смещение ) таким образом переводится в пару

( адрес базы, смещение ).

Области данных делятся на два класса - статический и

динамический. Статическая область данных имеет постоянное число

ячеек, выделенных ей перед началом счета. Эти ячейки выделяются

на все время счета. Следовательно, на переменную в статической

области данных возможна ссылка по ее абсолютному адресу вместо

пары ( адрес базы, смещение ).

Динамическая область данных не всегда присутствует во время

счета. Она появляется и исчезает, и всякий раз, когда она

исчезает, теряются все величины, хранящиеся в ней.

2. Описатели

Если компилятор знает все характеристики переменных во

время компиляции, то он может сгенерировать полностью команды

обращения к переменным, основываясь на этих характеристиках. Но

во многих случаях информация может задаваться динамически во

время счета. Например, в АЛГОЛе не известны нижняя и верхняя

границы размерностей массивов, а в некоторых языках тип

фактических параметров не соответствует точно типу формальных

параметров. В таких случаях компилятор не может сгенерировать

простые и эффективные команды, так как он должен учитывать все

возможные варианты характеристик.

Чтобы решить эту задачу, компилятор выделяет память не

только для переменных, но и для их описателей, которые содержат

атрибуты ( характеристики ), определяемые во время счета. Этот

описатель заполняется и изменяется по мере того, как становятся

известными и меняются характеристики при счете.

Возьмем простой пример: если формальный параметр является

простой переменной и тип соответствующего фактического параметра

может меняться, фактический параметр, передаваемый процедуре,

может выглядеть, например, так:

┌──────────────────────────────────────────────────────────────┐

│ Описатель 0 = действительный, 1 = целый, 2 = булевый и т.д. │

├─────────────────

Внимание, отключите Adblock

Вы посетили наш сайт со включенным блокировщиком рекламы!
Ссылка для скачивания станет доступной сразу после отключения Adblock!

Скачать
Рефераты по информатике и программированию ┌│ Введение 1. Области данных 2. Описатели 3. Память для данных элементарных типов 4. Память для массивов Векторы Матрицы
Оценок: 1007 (Средняя 5 из 5)

Наверняка у вас есть товары или услуги, продажа которых приносит вам максимальную прибыль. Для быстрого старта в сети вам необходимо создание посадочной страницы (одностраничного сайта), на которой будет размещена информация о маржинальных товарах/услугах интернет магазина. За 8 лет опыта разработки конверсионных страниц мы выработали оптимальную структуру, которая позволит привлекать через landing page больше продаж. На такую структуру «одевается» ваш контент — фирменный стиль, тексты, фотографии, уникальные торговые предложения, после чего страница выходит в свет. Разработка лендинга и запуск в сети — до 7 рабочих дней. Стоит отметить, что в разработку самой посадочной страницы входит и написание копирайтером продающих текстов для вашего бизнеса, чтобы каждый посетитель страницы захотел совершить покупку именно у вас. Результат: качественно разработаная продающая посадочная страница, которая готова приносить вам новых клиентов.

© 2016 - 2022 BigEdu.ru