Рис.6. Принцип функціонування стека.
Стек використовують для різних цілей:
- організація переривань, викликів і повернень;
- тимчасового збереження даних, коли під них нема рації виділяти фіксовані місця в пам'яті;
- передачі і повернення параметрів при викликах процедур.
До використання стека він повинний бути ініціалізований - повинні бути встановлені SS і покажчик eSP так, щоб вони вказували на область реальної оперативної пам'яті (стек у ПЗУ, зрозуміло, працювати не може).
Прикладні програми, як правило, від операційної системи одержують готовий до застосування. У захищеному режимі сегмент стану задачі містить чотири селектори сегментів стека (для різних рівнів привілеїв), але в кожен момент часу використовується, природно, тільки один стек (регістри SS і eSP у процесорі представлені тільки в одному екземплярі, вони визначають стек на поточному рівні привілеїв.
ВИСНОВОК
Процесори ІA-32 дозволяють реалізувати різні моделі пам'яті. Найпростішу організацією має плоска модель пам'яті: уся пам'ять представляється єдиною лінійною послідовністю байт. Протилежністю плоскої моделі є сегментована захищена модель - основна модель пам'яті, яка використовується в захищеному режимі. Кожній програмі в будь-який момент часу надаються кодовий сегмент, сегмент стека і до чотирьох сегментів даних. Проміжне положення між названими моделями займає модель пам'яті реального режиму. Тут також пам'ять організується у виді сегментів, але незалежності і захищеності сегментів немає.
В пам’яті ПК на основі МП сімейства І80X86 слово зберігається в двох суміжних байтах, починаючи з молодшого. Адресою слова є адреса його молодшого байта.
Логічно пам'ять у реальному режимі організується у вигляді сегментів фіксованого розміру - 64 Кбайт.
Фізична двадцятирозрядна адреса (РА) виходить із двох шістнадцятирозрядних частин логічної адреси - адреси сегмента (Seg) і виконавчої адреси ЕА (executіve address) або внутрісегментного зсуву, які додаються зі зсувом Seg на 4 біти.
Захищений режим віртуальної адресації) процесорів ІA-32 є багатозадачним, тобто в цьому режимі МП може виконувати кілька задач одночасно, використовуючи спеціальні механізми розподілу ресурсів обчислювальної системи між задачами, що виконуються. Основним ресурсом, що захищається, є пам'ять, у якій зберігаються коди, дані і різні системні таблиці. Захист пам'яті заснований на сегментації.
Сегментація пам'яті і розбивка її на сторінки можуть застосовуватися в будь-яких сполученнях і використовуються з різними цілями. Сегментація є засобом організації логічної пам'яті на прикладному рівні, а розбивка на сторінки застосовується на системному рівні для керування фізичною пам'яттю. Сегменти і сторінки можуть вивантажуватися з фізичної оперативної пам'яті на диск і в міру необхідності довантажуватися ("підкачуватися") з його назад у фізичну пам'ять. Цей процес називається підкачуванням або свопінгом. У такий спосіб реалізується так називана віртуальна пам'ять, що складається з ОЗП комп'ютера і файлу підкачування на жорсткому диску.
У захищеному режимі логічна адреса, також названа віртуальною, складається із селектора сегмента і ефективної адреси, названої також зсувом.
Процесор може звертатися тільки до тих сегментів пам'яті, для яких є дескриптори в таблицях. Дескриптори являють собою 8-байтные структури даних, що визначають положення сегмента у пам'яті, ліміт пам'яті, його призначення і характеристики захисту.
Захист пам'яті за допомогою сегментації не дозволяє:
- використовувати сегменти не за призначенням;
- порушувати права доступу до сегментів;
- адресуватися до елементів, що виходять за ліміт сегмента;
- змінювати вміст таблиць дескрипторів, не маючи достатніх привілеїв.
Чотирирівнева ієрархічна система привілеїв призначена для керування використанням привілейованих інструкцій і доступом до дескрипторів. Рівні привілеїв нумеруються від 0 до 3, нульовий рівень відповідає максимальним (необмеженим) можливостям доступу і приділяється для ядра операційної системи. Рівень 3 має самі обмежені права і звичайно приділяється прикладним задачам.
Дескриптори і привілеї є основою системи захисту: дескриптори визначають структури програмних елементів, а привілеї визначають можливість доступу до дескрипторів і виконання привілейованих інструкцій. Будь-яке порушення захисту приводить до виникнення спеціальних виключень, оброблюваних ядром операційної системи.
Простори пам'яті і введення-виведення у всіх МП сімейства І80Х86 розділені, тобто порти введення-виведення адресуються окремо від комірок пам'яті, у власному адресному просторі. 32-розрядні процесори дозволяють адресувати до 64 Кбайт однобайтних регістрів, при цьому весь простір введення-виведення розглядається як лінійна послідовність байт.
Стек являє собою безперервну область пам'яті, особливість якої полягає в тім, що дані в нього заштовхуються і витягаються з нього за принципом "першим увійшов - останнім вийшов".
Стек використовують для різних цілей:
- організація переривань, викликів і повернень;
- тимчасового збереження даних, коли під них нема рації виділяти фіксовані місця в пам'яті;
- передачі і повернення параметрів при викликах процедур.