ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
26 апреля
1054462 Топик полностью
RxTx (22.11.2020 19:47, просмотров: 169) ответил fk0 на Виртуальная память нужна не как способ расширить RAM нахаляву. Так это работает только с единичными приложениями. В основном идея виртуальной памяти в том, чтоб на диск скинуть то, что занимает память и не испольуется и таким образом дать немного больше памяти для кеша диска или полезных программ. В том числе, высвобождается память от кусков exe-файлов редко или вовсе неиспользуемых (их всегда можно считать с диска). В итоге получается приличный объём. Но для работы
Тобой это подается как противоречие (нужна не как..), тогда как противоречия нет, верно сказанное и тобой и мной. По определению понятия: 
In computing, virtual memory is a memory management technique that provides an "idealized abstraction of the storage resources that are actually available on a given machine" which "creates the illusion to users of a very large (main) memory".


Это не "способ расширить RAM нахаляву", подобного вульгарного смысла я не вкладывал, ты это понял очень своеобразно. Это способ представления адресного пространства ЭВМ, в котором требуемое адресное пространство "виртуализируется". Виртуализация неявно предполагает что это "память вообще", абстрагируясь от ее действительной физической природы и актуального состояния. Обычным программистом подразумевается, что это всенепременно random access memory, но когда вопрос стоит о запуске где-нибудь на майнефрейме - что там будет актуально неизвестно. НЕХ, которая по этим адресам может читать и если повезет писать, и больше никаких свойств неизвестно.


Реальная движущая идея виртуальной памяти скрыта в описании ее исторического возникновения. В отсутствие виртуальной памяти менеджмент приходится встраивать в логику программы в явном виде. Это известно как "оверлеи" (загрузка блоков кода и данных в явном виде). Подобный явный менеджмент памяти со временем становится чрезвычайно сложным, в особенности для исполняемого кода, который приходится передвигать, переходить на него итд.

В случае виртуальной памяти подобным менеджментом программе заниматься не приходится, нечто за рамками текущей программы само динамически загружает-выгружает данные в/из RAM (или точнее, автоматически мэппит), при этом программа предполагает одну и ту же картину: неизменность адресного пространства и постоянную доступность всех своих компонентов (втч кода). Это была основная изначальная идея. Ее можно назвать "динамический мэппинг адресного пространства".

Но все вкусные плюшки на этом конечно не заканчиваются, например решается задача мэппинга библиотек в разные пользовательские программы, решение проблем с фрагментацией итд итп.