Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/studb20/public_html/index.php on line 4
 1.8.2 Моделі пам'яті - Програмування С, С++теорія та практика (частина 1) - Studbook

Програмування С, С++теорія та практика (частина 1)

1.8.2 Моделі пам'яті

У мові Сі для операційної системи М8-Б08 розмір ОП (оперативної пам’яті) для розміщення покажчика залежить від типу використаної моделі пам'яті. У програмах на мові Сі можна використовувати одну з шести моделей пам'яті: крихітну (ііпу), малу (зтаїї, по замовчуванню), середню (теСіит), компактну (сотрасі), велику (їагде) і величезну (киде).

Взагалі оперативна пам'ять для виконання програми на мові Сі використовується для:

•           розміщення програми (коду програми);

•           розміщення зовнішніх (глобальних) і статичних даних (що мають специфікатори ехіегп і зіаііс, про них йтиметься нижче);

•       динамічного використання ОП для змінних, сформованих у процесі виконання програми (купа, динамічна ОП, про них йтиметься нижче);

•           для розміщення локальних (аиіо - автоматичних) змінних, змінних функцій (стек) під час виконання програми.

Старші адреси________________________ молодші адреси

Буфери,

Невикористана

Стек

Вільна

Купа

Статич.

Код

Вектори

ПЗП,

пам'ять

 

ОП

 

Дані

прогр.

переривання

відео-

 

 

 

 

 

 

005

пам'ять

 

 

 

 

 

 

 

де ПЗП - постійний запам'ятовуючий пристрій

 

Рис. 1.10. Структура оперативної пам'яті

ОП програми та її статичних даних у процесі виконання програми залишається незмінною. ОП з купи виділяється та звільняється в процесі виконання програми. Об‘єм ОП для купи залежить від того, скільки ОП запитує програма за допомогою функцій са11ос() та та11ос() для динамічного розміщення даних. Пам'ять стека виділяється для фактичних параметрів активізованих функцій і їх локальних (автоматичних) змінних. Розглянемо основні характеристики різних моделей ОП.

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

Мала (хтаїї тоіїеї) ОП. Для програми призначається 64 Кб. Стек, купа і статичні дані займають по 64 Кб. Ця модель приймається по замовчуванню та використовується для вирішення маленьких і середніх задач. Покажчик типу пеаг займає 2 байти і містить адресу - зсув усередині сегмента ОП з 64 Кб.

Середня (тегііит тоіїеї) ОП. Розмір ОП для програми дорівнює 1 Мбайт. Стек, купа і статичні дані розміщаються в сегментах ОП розміром 64 Кб. Цю модель застосовують для дуже великих програм і невеликих обсягів даних. Покажчик у програмі типу /аг займає 4 байти. Для адресації даних покажчик типу пеаг займає 2 байти.

Компактна (сотрасі тойеї) ОП. Для програми призначається 64 Кб. Для даних - 1 Мбайт. Об‘єм статичних даних обмежується 64 Кб. Розмір стека повинен бути не більш 64 Кб. Ця модель використовується для малих і середніх програм, що вимагають великого об‘єму даних. Покажчики в програмі складаються з 2 байтів, а для даних - з 4 байтів.

Велика (їагде тоіїеї) ОП. ОП для програми обмежена 1 Мб. Для статичних даних призначається 64 Кб. Купа може займати до 1 Мб. Програма і дані адресуються покажчиками, що займають 4 байти. Модель використовується для великих задач. Окрема одиниця даних, наприклад масив, повинна займати не більш 64 Кб.

Величезна (киде тоіїеї) ОП. Аналогічна великій моделі. Додатково в ній знімається обмеження на розмір окремої одиниці даних.

 

44