
Мне было интересно... 64-битные ОС могут запускать 32-битные приложения, верно? Windows использует WoW64 для этого, верно?
Мой вопрос: когда эти приложения запускаются, они используют 64-битные или 32-битные адреса? Я задавался этим вопросом из-за использования памяти...
решение1
Внутри каждая программа видит около 2 ГБ памяти (есть флаг, который можно установить, чтобы получить 3 ГБ) и, следовательно, никогда не нуждается в 64-битных указателях (32-битные указатели будут работать нормально). ОС может справиться со всем 64-битным реальным управлением памятью под капотом.
Не совсем уверен, как это связано с использованием памяти.
решение2
32-битные приложения могут видеть только 32-битные адреса. WoW64 имитирует 32-битную среду внутри 64-битного пространства памяти для 32-битных приложений.
решение3
Ваш вопрос не очень конкретный, поскольку вы не различаете адрес виртуальной памяти и адрес физической памяти.
Да, программы x86 будут использовать больше памяти и ресурсов. У них будет 32-битное виртуальное адресное пространство, но под ним диспетчер памяти (MM или MMM) будет использовать указатели x64. Но это не так, чтобы требовало много усилий.
Наибольшая стоимость ресурсов приходится на драйверы. Были некоторые существенные изменения ядра, многие из которых были связаны с безопасностью, что потребовало переписывания больших частей драйверов.
Внутри каждая программа видит около 2 ГБ памяти (есть флаг, который можно установить, чтобы получить 3 ГБ) и, следовательно, никогда не нуждается в 64-битных указателях (32-битные указатели будут работать нормально). ОС может справиться со всем 64-битным реальным управлением памятью под капотом.
Я считаю, что это неправда. Каждая программа видит 4 ГБ (32-битное виртуальное адресное пространство), но ядро делит физическое адресное пространство пополам. Два 2 ГБ, с которыми вы знакомы, относятся к физическому адресу памяти.