Pages Menu
Rss
Categories Menu

Posted | 0 comments

Виртуальная память

Windows реализует систему виртуальной памяти на основе плоского (линейного) адресного пространства, предоставляя каждому процессу иллюзию наличия его собственного, большого, закрытого адресного пространства. Виртуальная память предоставляет логическое представление памяти, которое может не соответствовать ее физическому расположению.

Во время работы диспетчер памяти при содействии оборудования переводит, или отображает виртуальные адреса на физические, по которым и хранятся данные. Управляя защитой и отображением, операционная система может обеспечивать отсутствие столкновений процессов или перезаписи своих данных. На рисунке показаны три виртуально-последовательные страницы, отображенные на три непоследовательные страницы физической памяти.

память
Поскольку у большинства систем физической памяти намного меньше общего количества виртуальной памяти, использующейся работающими процессами, диспетчер памяти переводит или осуществляет постраничный перенос части содержимого памяти на диск. Постраничный перенос данных на диск освобождает физическую память, чтобы она могла использоваться другими процессами или самой операционной системой.

Когда поток обращается к памяти по виртуальному адресу той страницы, которая была перенесена на диск, диспетчер виртуальной памяти загружает информацию обратно с диска в память. Использование страничной подкачки не требует каких-либо изменений в приложениях, поскольку диспетчер памяти благодаря аппаратной поддержке справляется с этим, не ставя в известность процессы или потоки и не пользуясь их содействием.

Размер виртуального адресного пространства зависит от конкретной аппаратной платформы. На 32-разрядных системах x86 общее виртуальное адресное пространство имеет теоретический максимальный объем, равный 4 Гбайт. По умолчанию Windows распределяет половину этого адресного пространства (нижнюю половину 4-гигабайтного виртуального адресного пространства с адресами от 0x00000000 до 0x7FFFFFFF) между процессами для их уникальных закрытых хранилищ и использует другую половину (верхнюю, с адресами от 0x80000000 до 0xFFFFFFFF) в качестве своей собственной защищенной памяти операционной системы. Отображения нижней половины изменяются в соответствии с виртуальным адресным пространством текущих выполняемых процессов, а отображения верхней части всегда состоят из виртуальной памяти операционной системы.

Windows поддерживает параметры загрузки1, которые дают процессам, выполняющим специально помеченные программы2, возможность использования до 3 Гбайт закрытого адресного пространства (оставляя 1 Гбайт для операционной системы).

Это параметр позволяет таким приложениям, как серверы баз данных, хранить более крупные части баз данных в адресном пространстве процесса, сокращая тем самым потребности в отображении представлений подмножеств базы данных.

На рисунке показаны две типичные схемы виртуальных адресных пространств, поддерживаемых 32-разрядной Windows. (Параметр "increaseuserva" позволяет помеченным приложениям использовать от 2 до 3 Гбайт адресного пространства.)

схема-адрессных-пространств-32-бита
Несмотря на то что 3 Гбайт иметь лучше, чем 2 Гбайт, для отображения очень больших (многогигабайтных) баз данных этого объема все же не хватает. Чтобы отвечать их потребностям на 32-разрядных системах, Windows предоставляет механизм под названием "Address Windowing Extension (AWE)", позволяющий 32-разрядным приложениям выделять до 64 Гбайт физической памяти, а затем проецировать представления, или окна, на свое 2-гигабайтное виртуальное адресное пространство.

Использование AWE возлагает на программиста обязанности по управлению отображением виртуальной памяти на физическую. Этот механизм удовлетворяет потребность в непосредственном доступе к большему объему физической памяти, чем тот, который может в любой заданный момент времени быть отображен на адресное пространство 32-разрядного процесса.

схема-адрессных-пространств-64-бита
64-разрядная версия Windows предоставляет процессам намного более обширное адресное пространство: 7152 Гбайт на системах IA-64 и 8192 Гбайт на системах x64. На рис. 1.5 показано упрощенное представление структуры адресного пространства 64-разрядной системы. Следует заметить, что показанные объемы памяти не отображают архитектурных ограничений этих платформ.

Шестьдесят четыре разряда адресного пространства позволяют адресовать более 17 миллиардов гигабайт, но имеющееся в настоящее время 64-разрядное оборудование ограничивает этот объем более скромным значением. А ограничения, связанные с реализацией текущей 64-разрядной операционной системы Windows, снижают доступное адресное пространство еще больше, сводя его к 8192 Гбайт (8 Тб).

Post a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.


↓