"...Windows запускает каждую Win32 пpогpамму в отдельном виpтуальном пpостpанстве. Это означает, что каждая Win32 пpогpамма будет иметь 4-х гигабайтовое адpесное пpостpанство. Под Win32, мы больше не должны беспокоиться о моделях памяти или сегментах! Тепеpь только одна модель память: Плоская модель памяти. Тепеpь нет больше 64K сегментов. Память тепеpь это большое последовательное 4-х гигабайтовое пpостpанство. Это также означает, что вы не должны "игpать" с сегментными pегистpами. Вы можете использовать любой сегментный pегистp для адpесации к любой точке памяти..." Это отрывок из Iczelion'овсих туториалов, так вот, наверное тупой или уже задвавшийся вопрос (я подобной темы на форуме не нашел), но все же интересно, что будет если физической памяти будет БОЛЬШЕ чем 4 ГБ?
Возможно не совсем полный вопрос.. Что если у меня памяти будет больше чем четыре ГБ, я не смогу получить доступ к верхним адресам?
Сможешь. 4 гб это виртуальное адресное пространство, и оно проэцируется на физическую память. Если MS не наложили ограничения при проэкции(о чём я не слышал), то всё будет нормально.
>> "я подобной темы на форуме не нашел" Жалллььь : http://www.wasm.ru/publist.php?list=24 там гениальные вещи. учат не путать иметь 4-х гигабайтовое адpесное пpостpанство и иметь 4-х гигабайтовое виртуальное адpесное пpостpанство.
MuZiKaNT Расширение Интел Xeon CPUs - Physical Address Extensions (PAE) может использовать 36-bit адресную шину. Вкратце : ты можешь отображать виртуальные 4 Гига на любые из 64 Гиг. Серверные Винды это поддерживают - ключ так и называется /PAE. Понадобиться и "мать", поддерживающая PAE - в обычные компы ее не ставт. Но в современных условиях - это уже "ненужные ходули". 64-битные процессоры адресуют гораздо больше - есть уже 64-битный ХП и Linux-ы.
PavPS Я не буду с спорить о качестве моих знаний так как сам сомневаюсь в них - это кстати не в форуме, и я там был, а адресное пространство с виртуальным адресным пространством стараюсь не путать.. ... но плохо получается... valterg Возможно я задал некорректный вопрос. В 64 битных системах скорее всего уже своя политика разделения адресного виртуального пространства, я про 32 битные системы.. Надеюсь ,что ничего очень смешного не скажу... "...В Win32® API используется плоская 32-разрядная модель памяти. Каждому процессу выделяется «личное» (private) изолированное адресное пространство, размер которого составляет 4Gb. Это пространство разбивается на регионы, немного отличные для Windows’95 и Windows NT. В общем для той и другой системы можно сказать, что нижние 2Gb этого пространства отведены процессу для свободного использования, а верхние 2Gb зарезервированы для использования операционной системой...." Здесь говорится о старой версии NT, но в 32 битной XP подобная фигня. Вот и вопрос, сможет ли процесс получить доступ к адресу лежащему выше своих "зарезервированых двух гигабайт"?
MuZiKaNT >> "сможет ли процесс получить доступ к адресу лежащему выше своих "зарезервированых двух гигабайт"?" А почему нет Пиши драйвер. При вызове DeviceIoControl и некоторых других вызовах к драйверу (чтение/запись) всё осуществляется в контексте вызавающего процесса, а драйвер, в таком случае, может писать в любое место в этом адресном пр-ве (и выше 2-х и ниже) (если у страницЫ аттрибут write есть, а нет - поправь сам)
MuZiKaNT Да. Рихтер, Глава 13: Управление памятью. И если я правильно понял механизм AWE, то и это тоже. Но не уверен, давно читал.