Яке фізичне зображення купи та стека?


9

Я легко розумію, як .bss і код мають фізичні представлення в процесорі, який має банк пам'яті для інструкцій, які лічильник програм може рахувати, а bss (символ запуску блоку) - це просто глобальні дані. Але тоді є стек для локальних змінних і купа динамічної пам'яті. Як такі речі ставляться на схему фізично?

Відповіді:


6

Примітка. В основному я посилаюся на x86, оскільки я з ним найбільше знайомий, і це широко документально підтверджено:

На x86 (і в більшості інших архітектур) стек просто залишається в пам'яті, як і все інше. Процесор маніпулює стеком через вказівник, який зазвичай зберігається в регістрі (покажчик стека). Інструкції Push and Pop змінять значення вказівника стека, змінюючи те, де знаходиться вершина стека.

Купа - це програмне абстрагування . Як випливає з назви, це просто грудка оперативної пам’яті, на яку розподільник розподіляє і передає покажчики. У фізичному відношенні, купа не виглядає відмінною від будь-якої іншої частини ОЗУ.

Однак підкачка та сегментація дотично пов'язані з групою. Вони в основному стосуються багатозадачних завдань, де процесам не можна дозволити змінювати ОЗУ, якими вони явно не володіють.


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

4

Логічно кажучи стек і купа, як правило, є лише пам'яттю; на рівні реалізації, проте, сподіваємось, вони будуть подаватися в основному з кешу. У більшості систем вони потрапляють туди динамічно за допомогою алгоритмів кешування, але існували системи, які підтримують явне розташування в кеші чи іншій швидшій, ніж зазвичай, пам’яті, і, ймовірно, і такі, що підтримують залишкові підказки, що конкретні дані повинні мати переважний пріоритет для розміщення там як космічні дозволи.

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.