распределение виртуальной памяти - PullRequest
0 голосов
/ 25 июня 2010

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

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

Ответы [ 3 ]

3 голосов
/ 25 июня 2010

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

Редактировать Re: комментарии

Я думаю, что вы можете путать объем памяти, доступной для данного процесса, с общим объемом виртуальной памяти, управляемой ОС, которая распределяется между процессами.Существует ограничение на общий объем выделенной виртуальной памяти всеми процессами, но этот предел фиксации НЕ совпадает с пределом адресного пространства для отдельного процесса.Общий лимит фиксации - это объем физической памяти + размер файла подкачки.Таким образом, можно настроить размер файла подкачки для увеличения или уменьшения этого числа.

0 голосов
/ 25 июня 2010

Виртуальная память и адресные пространства - это два разных понятия. Пейджинг памяти - это еще одна вещь.

Размер адресного пространства ограничен диапазонами адресов, которые могут быть адресованы. Это ограничение ЦП и режима, в котором он работает. Например, типичное 32-разрядное приложение, работающее в 64-разрядной системе с 32 ГБ памяти, все еще имеет 32-разрядное адресное пространство. Тот факт, что доступно больше памяти, не меняет того факта, что (игнорируя для простоты существование PAE) 32-битная программа использует только 32-битные адреса.

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

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

0 голосов
/ 25 июня 2010

Bshields имеет прямой ответ.Я просто хотел добавить, что если вы работаете в Windows, у уважаемого Марка Руссиновича есть очень подробный и хорошо написанный пост о виртуальной памяти здесь: http://blogs.technet.com/b/markrussinovich/archive/2008/11/17/3155406.aspx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...