Я знаю, что виртуальная память - это файл подкачки, который компьютер использует для хранения части оперативной памяти на жестком диске для работающего процесса. Но насколько отличается виртуальное адресное пространство? это оперативная память или жесткий диск или оба?
3 ответа
Виртуальное адресное пространство - это то, что видит отдельная программа при выполнении. В зависимости от того, как была настроена программа, это адресное пространство будет максимальным, поддерживаемым операционной системой.
В этом случае ядро операционной системы отвечает за сопоставление адресов в vas с физической памятью, будь то ОЗУ или файлы системной страницы.
При таком дизайне сами программы остаются не осведомленными о ресурсах и реальных адресах и могут работать так, как если бы они имели всю системную память для себя или, по крайней мере, максимальную память, которую может использовать один процесс.
В двух словах, программа работает с VAS, и операционная система обрабатывает сопоставление VAS с реальным хранилищем, так что это невидимо для работающей программы. Запущенная программа видит только свой VAS.
Виртуальное адресное пространство - это то, что видит процесс. Например, ваша электронная почта находится в папке входящих сообщений, скажем, размером 25 ГБ. Это ваше виртуальное адресное пространство.
Виртуальное адресное пространство должно отличать тот факт, что не каждое виртуальное адресное пространство соответствует физическому адресному пространству. Допустим, у вас есть 20 пользователей электронной почты с 25 ГБ пространства для входящих сообщений. Но у вас есть только 100 ГБ дискового пространства на вашем сервере. Ну, вы можете взять старые письма и заархивировать их, а последние хранить только на своем сервере, потому что люди обычно проверяют только самые последние письма.
Архивирование электронной почты с сервера, скажем, на ленточный накопитель сродни компьютеру, разделяющему части оперативной памяти на диск. Когда кто-то просматривает старую электронную почту, вы просто "перелистываете" старую электронную почту с ленты обратно на свой сервер. Пользователь электронной почты никогда не узнает разницу.
Таким же образом, каждый процесс на вашей машине имеет X виртуального адресного пространства, даже если у вас может быть меньше X * number of processes
физической памяти.
Виртуальная память это именно то. Виртуальное адресное пространство. Но виртуальная память - это просто виртуальное адресное пространство, которое вы используете.
Виртуальное адресное пространство - это ограничение размера памяти, которую может адресовать программа.
На внешней границе это ограничено стилем указателей - теоретически чистый 32-битный указатель может адресовать 4 ГБ виртуального пространства. Реальная граница зависит от дизайна операционной системы, поскольку она использует значительную часть адресного пространства наряду с пространством пользователя.
Под Win32 настройкой по умолчанию является разрешение виртуального адресного пространства 2 ГБ в качестве пользовательского пространства.
64-битный указатель может адресовать гораздо больше, на практике обычно разрешено 48 бит, и есть много деталей об этом ответе суперпользователя.
Теоретически, кто-то может построить физический компьютер с достаточным объемом оперативной памяти, чтобы 2 ГБ пользовательского пространства можно было напрямую сопоставить с физической памятью (вероятно, требующей как минимум 3 ГБ физической), чтобы у вас были 32-разрядные процессы, в которых виртуальная память была не очень виртуальной.