Приложение для управления собственной виртуальной памятью

У меня есть небольшое сомнение относительно виртуальной памяти.

Обычно ОС должна предоставить виртуальную память для использования дискового пространства для увеличения объема памяти, доступной для приложений.

ОС очистит физическую память, скопировав данные на диск и восстановив их при необходимости.

Однако возможно ли, чтобы приложение управляло своей собственной «виртуальной памятью», а не ОС, например, записывая объекты в файл, а затем уничтожая их?

Если да, то позволяет ли приложению управлять собственной виртуальной памятью выгодно или позволяет ОС?


person Dwayne Johnson    schedule 29.01.2012    source источник
comment
Нет, это никогда не будет выгодно. Для этого существует операционная система. Не боритесь с этим, вы проиграете в 100% случаев.   -  person Cody Gray    schedule 29.01.2012


Ответы (2)


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

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

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

Операционная система — лучшее место для такой логики.

person ose    schedule 29.01.2012
comment
Но если каждое приложение может управлять своей собственной виртуальной памятью, не будет ли меньше нагрузка на ОС? Это дает приложению возможность назначать собственную виртуальную память. - person Dwayne Johnson; 29.01.2012
comment
Каждое приложение имеет свою собственную виртуальную машину именно потому, что ОС управляет реальной памятью, предоставляя каждому приложению свой собственный слайс. Если бы приложениям было разрешено самим управлять реальной памятью, они бы постоянно перезаписывали память друг друга, и система была бы сведена к однозадачному компьютеру (что-то очень уродливое). - person ose; 29.01.2012

Приложению не только не выгодно управлять собственной виртуальной памятью, но и невозможно в стандартных операционных системах (Windows, Unix, Linux, Mac OS X и т. д.). .).

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

Единственная часть процесса, выполняемая программным обеспечением операционной системы, — это обработка ошибок страниц (перекачка блоков виртуальной памяти в резервное хранилище и из резервного хранилища), когда преобразование адресов находит ссылку на виртуальный адрес, который в данный момент не отображается в физической памяти.

Что может быть полезно для приложения, так это минимизировать использование виртуальной памяти, записывая свои собственные данные на диск, а не выделяя большие объемы виртуальной памяти. Однако это принесет пользу только в том случае, если дисковый ввод-вывод приложения более эффективен, чем дисковый ввод-вывод обработчика страниц операционной системы - маловероятный сценарий в наши дни.

person Andrew    schedule 29.01.2012