Що таке Пейджингове керування пам'яттю?


4

Я просто читав Operating System Principles by Silberschatz et al коли я натрапив на пейджинговий зв'язок в управлінні пам'яттю.
У ньому йдеться про це Фізична пам'ять (Я припускаю, що це оперативна пам'ять) ділиться на рамки , і логічної пам'яті ділиться на сторінок . CPU генерує логічні адреси, що містять номер сторінки і a зміщення . Цей номер сторінки використовується для отримання номера кадру з стор що дає базова адреса
тому фізичну адресу обчислюють як базове + зміщення.
Моє запитання:

  • зберігається таблиця сторінок для кожного процесу?
  • Я логічно думаю, що відповідь буде yes як кожному процесу потрібно буде зіставити власні сторінки з кадрами. Можливо, я помиляюся. Будь ласка, поясніть.

    Також:

  • пейджинг і сегментація (де «діри» створюються в пам'яті) - це дві абсолютно різні методи, які не використовуються в комбінації. Правильно?

  • 3
    Вікіпедія Ваш друг.
    martineau

    @Martineau Вікіпедія також дуже технічна подруга, яка може мати всі факти і деталі, які вам потрібні, але не все, що добре вам пояснювати.
    Vian Esterhuizen

    Я підозрюю, що відповідь на обидва питання ОП залежить від операційної системи.
    martineau

    @martineau ... залежить від операційної системи та апаратної архітектури
    artistoex

    ОС, у якій немає окремої таблиці сторінок верхнього рівня для кожного процесу, називається операційною системою "Одного адресного простору". Особливістю є нещодавній приклад такого вибору.
    sylvainulg

    Відповіді:


    0

    Сегментація дає лінійні адреси, а пейджинг - фізичні адреси

    Що стосується логічних і фізичних адрес, від Bovet & amp; Cesati (Розуміння ядра Linux).

    how logical addresses map to physical

    Як ви можете бачити, пейджингове та сегментація здійснюються окремими одиницями апаратного забезпечення. Незважаючи на те, що вони можуть мати місце одночасно, операційна система може відключити модуль сегментації (тому адреси ефективно обробляються не як логічні, а лінійні).

    Загальні положення

    Ви, можливо, вже знаєте цей матеріал, але я все одно поклав його тут для повноти.

    Сторінки займають фрейми: перемикання

    Що стосується розділів 8, f Silberschatz, рамки посилаються на компонування фізичної пам'яті. ОС поділяє оперативну пам'ять на області рівних і зручних розмірів (наприклад, 4К) кадрів. Сторінки є фрагменти даних розміром з кадру, основна одиниця заміни сторінки.

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

    Якщо сторінка змінюється з диска, вона вирівнюється з певним кадром у пам'яті (залежно від того, який алгоритм заміни сторінки підходить).

    Операційні системи та апаратне забезпечення співпрацюють

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

    1. набір примітивів управління пам'яттю апаратного забезпечення (пейджинг, сегментація і те, що heck існує), і
    2. яку підмножину ОС дійсно використовує на конкретній архітектурі та ситуації (Linux @ zArchitecture відрізняється від Linux @ Intel відрізняється від Windows @ Intel відрізняється від Windows @ Intel @ Boot-up)

    Наприклад, лише кілька архітектур надають сегментацію, а наведена вище цифра стосується x86. Linux, з причин переносимості, не дуже його експлуатує. Якщо я пам'ятаю це правильно з Tanenbaum, OS / 2 була єдиною операційною системою, що повністю використовувала сегментацію Intel.

    Поки цей відповідь.

    Залежно від того, чому ви повинні знати це, наступний підхід може допомогти вам (це допомогло мені).

    Я пропоную вам спочатку ознайомитися з обладнанням та індивідуальними примітивами. Якщо Silberschatz є нечітким з цього приводу, спробуйте Tanenbaum (Modern Operating Systems) або Hennessy & Patterson (Комп'ютерна архітектура, кількісний підхід). Якщо ваша цікавість не буде задоволена тоді, подивіться, як певна ОС використовує її в різних ситуаціях на певній платформі.


    0

    зберігається таблиця сторінок для кожного процесу?

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

    пейджинг і сегментація (де «діри» створюються в пам'яті) - це дві абсолютно різні методи, які не використовуються в комбінації. Правильно?

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

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

    Майте на увазі, що "сегмент" у схемах віртуальної пам'яті зазвичай посилаються на фрагмент пам'яті, який є логічно зв'язаним і має довільну довжину. Цей тип "сегмента" не слід плутати з "сегментом" Intel 8086/88 (він же x86), який починається з 16-байтової межі адреси (тобто "абзацу") і обмежений розміром 64 Кб Сегменти X86 є варіацією банківської пам'яті замість віртуальної пам'яті.

    Банківські схеми пам'яті призначені для систем, які мають невеликий розмір адреси (наприклад, 16 біт), але більший об'єм фізичної пам'яті (наприклад, до 1 МБ пам'ятної адреси). Віртуальна пам'ять є (або була призначена) для протилежної ситуації: розмір адреси великий (наприклад, принаймні 32 біти), а встановлена ​​пам'ять менше адресного простору (не завжди вірно сьогодні). Віртуальна пам'ять, як правило, абсолютно невидима для програм користувача, тоді як програміст Intel 8086/88 повинен знати про малі / середні / великі моделі пам'яті і далеко проти близько покажчики. До речі, відбулася лекція, в якій я вперше дізналася про віртуальну пам'ять і "сегментованість" раніше Intel розробив i8086.

    Як допоміжний текст, Вікіпедія також згадує, що сегментація і пейджинговий зв'язок можуть бути об'єднані (в апаратному забезпеченні).


    linux використовує сегменти тільки тоді, коли воно має
    artistoex

    @artistoex - Ви маєте на увазі сегменти x86? Див. Редаговану відповідь.
    sawdust

    Так, точно, intel сегменти.
    artistoex

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