@VVlados
Школьник

Сколько ГБ Windows NT выделяет процессу?

Глупый вопрос. В интернете пишут, что для 1го процесса на платформе IA-32, win32 ему выделяется песочница 4 Гб, в которой его только 2 Гб виртаульного адресного пространства.
А для приложения 64-битного на IA-32_64 с виндой 64-bit какое размер адресного пространство?
  • Вопрос задан
  • 320 просмотров
Решения вопроса 1
@none7
With IMAGE_FILE_LARGE_ADDRESS_AWARE set (default):
x64: 8 TB
Intel Itanium-based systems: 7 TB
Windows 8.1 and Windows Server 2012 R2: 128 TB
2 GB with IMAGE_FILE_LARGE_ADDRESS_AWARE cleared
Отсюда.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
abyrkov
@abyrkov
JavaScripter
Согласен с SyavaSyava - винда способна и динамически, и статически выделять память. Тем паче, можно смотреть "чужую" память(!) и даже управлять ей... естественно, ни о каком 2гб на процесс не идет речь. Цифры - это, наверно, ограничение памяти на процесс. Либо вы путаете гб с мб
Ответ написан
Программы работают с памятью с помощью указателей на участки памяти (адресов). То есть можно прямо здесь и сейчас взять и попытаться прочитать/записать по любому адресу ячейку памяти. За это программа практически всегда будет убита, но это неважно.
32-разрядные программы работают с 32-разрядными адресами, 64-разрядные -- с 64-разрядными.
32-разрядный адрес позволяет обратиться к любой ячейке памяти в пределах 2^32 = 4 ГБ.
64-разрядный адрес -- к любой в пределах 2^64 байт.
В случае win32 часть памяти из этих 4 ГБ занята ядром ОС. То есть программа по-прежнему может обратиться к памяти, которая принадлежит ядру и по-прежнему будет убита.
Фактически, максимальный объем памяти в win32, который ОС может выделить программе -- около 2 ГБ. Остальная так или иначе недоступна.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы