Каждый пользовательский процесс W2K получает отдельное 32-битовое адресное пространство, предоставляющее процессу до 4 Гбайт памяти. По умолчанию часть памяти зарезервирована для операционной системы, так что каждому пользователю на самом деле доступны 2 Гбайт виртуального адресного пространства, и все процессы совместно используют одни и те же 2 Гбайт системного пространства. W2K предоставляет возможность увеличения пользовательского адресного пространства до 3 Гбайт, оставляя системе только 1 Гбайт. В документации W2K указано, что эта возможность предназначена для поддержки интенсивно использующих большое количество памяти приложений, работающих на серверах со многими гигабайтами оперативной памяти, и что использование большего адресного пространства может существенно повысить производительность таких приложений, как системы поддержки принятия решений или огромных баз данных.
На рис. 8.23 показано виртуальное адресное пространство по умолчанию, видимое пользовательскому процессу. Оно состоит из четырех областей.
• От 0х00000000 до OxOOOOFFFF: предназначено для помощи программисту в перехвате присвоений указателю NULL.
• От 0х00010000 до Ox7FFEFFFF: адресное пространство, доступное пользователю. Это пространство разделяется на страницы, которые могут быть за гружены в основную память.
• От Ox7FFFOOOOO до Ox7FFFFFFF: защитная страница, недоступная пользователю. Эта страница облегчает операционной системе проверку выхода указателя за границы блока памяти.
• От 0х00000000 до OxOOOOFFFF: системное адресное пространство. Этот 2-Гбайтовый процесс предназначен для исполняющей системы W2K, микроядра и драйверов устройств.