Приложение для управления собственной виртуальной памятью - PullRequest
1 голос
/ 29 января 2012

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

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 30 января 2012

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

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

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

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

2 голосов
/ 29 января 2012

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

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

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

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

...