На работе у меня есть возможность установить 64-битную версию Windows 7 с 16 ГБ. Наилучшее преимущество, которое я могу себе представить, заключается в том, что 64-разрядная версия Windows 7 может использовать память более 4 ГБ. Один из моих коллег сказал, что даже если я установлю 64-битную Windows 7, 32-битные приложения не смогут обращаться ко всей памяти. Это смутило меня и не было уверенности, что это означает, что только 64-битные приложения могут работать в пространстве памяти от 4 до 16 ГБ. Если я запускаю 10 32-битных приложений по 1 ГБ каждое, я смогу сделать это без подкачки, верно?
1 ответ
Каждая программа работает в своем собственном пространстве виртуальной памяти. Они распределяются по частям 1 МБ, так как программа запрашивает память у ОС. Программы видят эту память как один большой непрерывный блок памяти (так называемая "модель плоской памяти"). Это отличалось от модели 16-разрядной модели "сегментированная память", где два регистра объединялись в один 20- или 32-разрядный адрес памяти в зависимости от текущего режима работы контроллера памяти.
Каждая 32-разрядная программа будет ограничена 2 ГБ общей используемой памяти; область памяти, начинающаяся с 0x20000000, используется для библиотек DLL в 32-разрядных приложениях. Это правда, что отдельное 32-разрядное приложение не сможет получить доступ ко всем 16 ГБ памяти, потому что оно не все адресуемо. Однако каждая программа запускается в нижней части своего блока виртуальной памяти (около 0x00000000), и диспетчер виртуальной памяти смещает ее к фактическому физическому расположению в ОЗУ, поэтому в этом смысле 32-разрядная программа может находиться в любом месте физическая память. Концептуально это означает, что вы можете заполнить все 16 ГБ ОЗУ только 32-битными программами.
Как 32-, так и 64-битные приложения могут работать рядом и располагаться где угодно в оперативной памяти. Обратите внимание, что подкачка происходит до того, как исчерпана память, поэтому маловероятно, что вы сможете запустить 16 приложений объемом 1 ГБ ОЗУ без подкачки. Система пытается освободить часть физической памяти, а также использует ее в качестве кэша для чтения и записи на диск.
Обратите внимание, что даже 32-разрядные ОС могут получить доступ к более чем 4 ГБ памяти, хотя каждое отдельное приложение по-прежнему ограничено 4 ГБ. Это связано с относительно старой технологией, известной как PAE (расширение физического адреса). 32-разрядная версия Windows не позволяет получить доступ к памяти более 2 ГБ /4 ГБ в рамках лицензирования, но 32-разрядные версии Linux будут успешно работать в системе объемом 16 ГБ с полным доступом к установленной памяти. Некоторые 32-разрядные версии Windows Server могут также иметь доступ к более чем 4 ГБ памяти: "Центр обработки данных Windows Server 2008" может использовать до 64 ГБ ОЗУ на 32-разрядном процессоре.