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


3

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


3
Віртуальна пам'ять НЕ просто "файл підкачки". Ви все ще використовуєте віртуальну пам'ять, навіть якщо у вас немає файлу сторінки.
Джеймі Ханрахан

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

Відповіді:


8

Віртуальний адресний простір - це те, що бачить окрема програма під час її виконання. Залежно від налаштування програми цей адресний простір буде настільки ж великим, наскільки підтримує операційна система.

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

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

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


0

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

Це обмежено зовнішньою межею стилів покажчиків - чистий 32-бітовий покажчик теоретично може вирішувати 4 Гб віртуального простору. Справжня межа залежить від дизайну операційної системи, оскільки вона використовує значну частину адресного простору поряд з простором користувача.

У програмі Win32 за замовчуванням встановлено, що віртуальний адресний простір об'ємом 2 Гб є простором користувача.

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

Теоретично, хтось може створити фізичний комп'ютер з достатньою оперативною пам’яттю, щоб 2 Гб простору користувача можна було безпосередньо відобразити у фізичну пам’ять (можливо, для цього було потрібно щонайменше 3 Гб фізичної), щоб у вас були 32-бітні процеси, де віртуальна пам'ять була не дуже віртуальною.


На 2 Гб простору користувача потрібно лише 2 Гб фізичної пам'яті. Обмеження 2 Гб настільки обумовлено дизайном ОС, але більше через те, що вказівники на C / C ++ входять за замовчуванням.
surfasb

-1

Віртуальний адресний простір - це те, що бачить процес. Наприклад, ваша електронна пошта знаходиться у папці "Вхідні", розміром якої є, наприклад, 25 Гб. Це ваш віртуальний адресний простір.

Віртуальний адресний простір полягає в тому, щоб відрізняти той факт, що не кожен віртуальний адресний простір відповідає фізичному адресному простору. Скажімо, у вас 20 користувачів електронної пошти з 25 ГБ місця вхідних повідомлень. Але у вас всього 100 Гб місця на диску на вашому сервері. Що ж, ви можете брати старі електронні листи та архівувати їх, а лише зберігати останні на своєму сервері, оскільки люди зазвичай перевіряють лише найновішу електронну пошту.

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

Таким же чином, кожен процес на вашій машині має віртуальний простір X , хоча у вас може бути менше X * number of processesфізичної пам'яті.

Віртуальна пам'ять - саме це. Віртуальний адресний простір. Але віртуальна пам'ять - це просто віртуальний адресний простір, який ви використовуєте.


Це всебічно неправильно.
Енді Дент

Дійсно? Поясніть, будь ласка,…
surfasb

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

1
"Віртуальна пам'ять - це просто віртуальний адресний простір, який ви використовуєте." Ні, це не. Віртуальний адресний простір - це простір, на який ваша програма може звертатися теоретично як комбінація обмежень розміру вказівника та обмежень ОС.
Енді Дент

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