Я всегда задавался вопросом об этом и никогда полностью не понимал, как 32-битные машины обрабатывают более 4 ГБ ОЗУ. То есть адресных строк больше не осталось, верно?
Я знаю даже на нашем предприятии, что у нас есть серверы баз данных Dell с 8 ГБ ОЗУ, адресуемой машиной, и 32-разрядная версия SQL Server. Достигается ли это аналогично памяти EMS в 20 адресной строке 8086, используя окно вращающейся памяти?
Для поддержки более 4 ГБ памяти Windows использует Расширение физического адреса (PAE). Он использует таблицы подкачки для отображения памяти размером более 4 ГБ. При этом размер физического адреса увеличивается до 36 бит или 64 ГБ. PAE также используется в 64-битных ОС; в этом случае максимальный размер увеличивается вдвое до 128 ГБ.
Этот метод действительно означает, что каждый процесс по-прежнему ограничен максимум 4 ГБ памяти.
Существует функция Intel под названием PAE, которая фактически позволяет ОС использовать более 4 ГБ памяти. Каждое приложение может использовать только 2 (или 3) ГБ пространства памяти, но, поскольку теперь у ОС больше памяти для распределения, будет меньше разделения между процессами и, следовательно, некоторые возможные преимущества в производительности.
Однако настоящее волшебство начинается с использования API AWE, с помощью которого вы можете фактически использовать больше памяти с помощью одного 32-битного приложения, специально написанного для этого. Это то, что делает SQL Server.
Это называется PAE. Он работает путем изменения макета таблицы страниц на процессоре для поддержки до 64 ГБ ОЗУ. Однако любое приложение по-прежнему может использовать только 2–3 ГБ (в зависимости от настройки ядра, обычно 2 ГБ для Windows и 3 ГБ для Linux). Кроме того, PAE имеет тенденцию немного замедлять работу машины, потому что поиск по таблице страниц требует дополнительного уровня.
Он должен поддерживаться на любом относительно новом процессоре.
Ну, ваша серверная операционная система может быть 64-битной. SQL может использовать только 4 гигабайта из 8 или некоторые 32-разрядные программы порождают больше процессов (например, программное обеспечение для кодирования видео, по моему опыту), чтобы воспользоваться преимуществами оперативной памяти.
Приложение в 32-битной ОС может получить доступ к 4 ГБ адресного пространства. Но это виртуальное адресное пространство и не имеет абсолютно никакого отношения к размеру физической памяти. Большинство современных 32-битных процессоров имеют достаточное количество адресных строк для адресации 64 ГБ ОЗУ. Блоки по 4 Кбайта отображаются в адресное пространство процесса по мере необходимости.
Именно PAE позволяет получить доступ к более чем 4 ГБ оперативной памяти. Это не такой способ взлома, как часто утверждают, но он довольно эффективен. PAE не вносит принципиальных изменений, отличаются только детали. Фактически, большинство современных систем по умолчанию использует PAE. DEP полагается на ядро PAE.
К сожалению, доступ к ОЗУ сверх 4 ГБ ограничен серверами. Рабочий стол может использовать PAE, но игнорирует любую RAM, превышающую 4 ГБ. Для этого есть ряд технических и маркетинговых причин.