Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lec_12_pres.doc
Скачиваний:
3
Добавлен:
05.12.2018
Размер:
246 Кб
Скачать
☆

2. Моделі розподілу пам'яті

Середовище Borland C дає користувачеві змогу встановити модель розподілу пам'яті, яка найкраще відповідає обсягам даних і коду програми та забезпечує найбільш раціональні форми адресації даних і команд. Тим самим підтримується висока ефективність процесу виконання програми.

Модель пам'яті є одним із параметрів компіляції, які керують виділенням ресурсів для етапу реалізації програми. Вибір моделі пам'яті здійснюють через пункт головного меню інтегрованого середовища Options/Compiler/Code generation/Model.

Можна вибрати один з шести альтернативних варіантів: Tiny, Small, Medium, Compact, Large і Huge.

Модель пам'яті задає розподіл сегментних блоків оперативної пам'яті для коду і даних програми, а також визначає тип вказівників, обсяг стека програми та вид динамічної пам'яті. Основні характеристики всіх моделей пам'яті зведено в Табл. 1, де вказано, яким є розподіл оперативної пам'яті для коду програми (код), глобальних і статичних даних (дані), локальних даних (стек).

Також зазначено вид динамічної пам'яті (ДП), яку можна використовувати в програмі, та типи вказівників, що будуть встановлені за замовчуванням.

Таблиця 1 Характеристики моделей пам'яті Borland C

Найменування моделі

Розподіл оперативної пам'яті

Тип вказівни-ків

код

дані

стек

ДП

дані

функції

Tiny

мінімальна

молодші

один спільний сегмент

внутрішня

near

near

Small

мала

1 сегмент

один спільний сегмент

внутр./зовн.

near

near

Medium

середня

сегм./файл

один спільний сегмент

внутр./зовн.

near

far

Compact

компактна

старші

1 сегмент

1 сегмент

1 сегмент

зовнішня

far

near

Large

велика

сегм./файл

1 сегмент

1 сегмент

зовнішня

far

far

Huge

гігантська

сегм./файл

сегм./файл

1 сегмент

зовнішня

far

far

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

Для невеликих за обсягом програм найчастіше використовують модель Small, яка передбачає виділення окремого сегмента для коду програми, другого сегмента для збереження глобальних і локальних даних програми (рис. 1).

Ця модель дає змогу програмувати два види динамічної пам'яті: внутрішню (її ще називають ближньою), яка використовує незайняту частину сегмента даних, та зовнішню динамічну пам'ять (її називають дальньою), яка займає вільну частину оперативної пам'яті в межах початкових 640 Кбайт.

Модель Medium подібна до Small за розподілом пам'яті для даних, але вона розрахована на багатофайлові програми великого обсягу, тому для коду кожного програмного файлу виділяється окремий сегмент.

Три згадані моделі пам'яті називають молодшими.

Зовнішня ДП (поточна межа ДП)

Вільна оперативна пам'ять MS DOS

SS:FFFF

Динамічні дані

SS:SP

Локальні дані (стек) (поточна межа стека)

Сегмент даних (<64К)

Внутрішня ДП

DS:0000

Глобальні і статичні дані

CS:0000

Команди коду програми, коди бібліотечних функцій

Сегмент коду (< 64 К)

Рис. 1. Схема розподілу оперативної пам'яті в моделі Small

Старші моделі: Compact, Large і Huge використовують окремий сегмент для стеку тa лише зовнішню динамічну пам'ять.

Для великих багатофайлових програм доцільно застосовувати розподіл пам'яті за моделлю Large, яка зберігає код кожного програмного файла в окремому сегменті (рис. 2).

Якщо ж обсяг статичних даних програми перевищує 64 Кбайт, то слід встановити модель Huge.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]