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

Тема 16: Динамічна пам'ять. Адреси і покажчики.



 

Динамічна пам'ять

 

Всі змінні, оголошені в програмі, розміщуються в однієї безперервної області оперативної пам'яті, яка називається сегментом даних. Довжина сегменту даних визначається архітектурою мікропроцесорів 80x86 і складає 65536 байт, що може викликати відому скруту при обробці великих масивів даних. З іншого боку, об'єм пам'яті ПК (зазвичай не менше 640 Кбайт) достатній для успішного вирішення завдань з великою розмірністю даних. Виходом з положення може служити використання так званої динамічної пам'яті.

Динамічна пам'ять - це оперативна пам'ять ПК, що надається програмі при її роботі, за вирахуванням сегменту даних (64 Кбайт), стека (звичайні 16 Кбайт) і власне тіла програми. Розмір динамічної пам'яті можна варіювати в широких межах (див. пріл.1). За умовчанням цей розмір визначається всією доступней пам'яттю ПК і, як правило, складає не менше 200...300 Кбайт.

Динамічна пам'ять - це фактично єдина можливість обробки масивів даних великої розмірності. Багато практичних завдань важко або неможливо вирішити без використання динамічній пам'яті. Така необхідність виникає, наприклад, при розробці систем автоматизованого проектування (САПР): розмірність математичних моделей, використовуваних в САПР, може значно відрізнятися в різних проектах; статичний (тобто на етапі розробки САПР) розподіл пам'яті в цьому випадку, як правило, неможливо. Нарешті, динамічна пам'ять широко використовується для тимчасового запам'ятовування даних при роботі з графічними і звуковими засобами ПК.

Динамічне розміщення даних означає використання динамічної пам'яті безпосередньо при роботі програми. На відміну від цього статичне розміщення здійснюється компілятором Турбо Паскаля в процесі компіляції програми. При динамічному розміщенні заздалегідь не відомі ні тип, ні кількість розміщуваних даних, до них не можна звертатися по іменах, як до статичних змінних.

 

Адреси і покажчики

Оперативна пам'ять ПК є сукупністю елементарних вічок для зберігання інформації - байтів, кожен з яких має власний номер. Ці номери називаються адресами, вони дозволяють звертатися до будь-якого байта пам'яті.

Турбо Паскаль надає в розпорядження програміста гнучкий засіб управління динамічною пам'яттю - так звані покажчики.

Покажчик - це змінна, яка як своє значення містить адресу байта пам'яті.

У ПК адреси задаються сукупністю два шестнадцатіразрядних слів, які називаються сегментом і зсувом. Сегмент - це ділянка пам'яті, що має довжину 65536 байт (64 Кбайт) і що починається з фізичної адреси, кратної 16 (тобто Про, 16, 32, 48 і так далі). Зсув вказує, скільки байт від початку сегменту необхідно пропустити, щоб звернутися до потрібної адреси.

Адресний простір ПК складає 1 Мбайт (йдеться про так званій стандартній пам'яті ПК; на сучасних комп'ютерах з процесорами 80386 і вище адресний простір складає 4 Гбайт, проте в Турбо Паськале немає засобів, що підтримують роботу з додатковою пам'яттю; при використанні середовища Borland Pascal with Objects 7.0 така можливість є). Для адресації в межах 1 Мбайта потрібне 20 двійкових розрядів, які виходять з двох шестнадцатіразрядних слів (сегменту і зсуву) таким чином (рис. 1): вміст сегменту зміщується вліво на 4 розряди, праві розряди, що звільнилися, заповнюються нулями, результат складається з вмістом зсуву.

Puc. 1. Схема формування адреси в ПК

 

Фрагмент пам'яті в 16 байт називається параграфом, тому можна сказати, що сегмент адресує пам'ять з точністю до параграфа, а зсув - з точністю до байта. Кожному сегменту відповідає безперервна область пам'яті, що окремо адресується. Сегменти можуть слідувати в пам'яті один за іншим без проміжків або з деяким інтервалом, або, нарешті, перекривати один одного.

Таким чином, по своїй внутрішній структурі будь-яким покажчиком є сукупність двох слів (даних типа WORD), що трактували як сегмент і зсув. За допомогою покажчиків можна розміщувати в динамічній пам'яті будь-якій з відомих в Турбо Паскалі типів даних. Лише деякі з них (BYTE, CHAR, SHORTINT, BOOLEAN) займають у внутрішній виставі один байт, останні - декілька суміжних. Тому насправді покажчик адресує лише перший байт даних.

 

 

Питання для контролю.

1. Дати визначення динамічної пам’ятті.

2. В чому полягає різниця при обробці данних в динамічній та статичній пам’ятті?

3. Дати визначення покажчика.

4. Як формується адреса в ПК?

5. Скільки місця в пам’ятті займає покажчик?

 


Дата добавления: 2015-07-11; просмотров: 181 | Нарушение авторских прав






mybiblioteka.su - 2015-2024 год. (0.007 сек.)