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