Пару дней назад набрел на форум, в котором

Пару дней назад набрел на форум, в котором как раз обсуждалась совместимость (видео-)драйверов с виндой, работающей в режиме /PAE: nvworld.ru/php/viewtopic.php?t=17687

Заодно приведу ссылку на тему, родственную нашей:
nvworld.ru/php/viewtopic.php?p=290036#290036

PS:

DanZer писал(-а):
Data Execution Protection - защита от выполнения кода из областей памяти, помеченных, как данные. По идее - должно защищать от эксплоитов на основе переполнения буфера

Пишут, что это просто пустая маркетинговая болтовня от MS.
Разгромная статья про DEP

PPS: Решил закинуть сюда часть моей дискуссии с DrEvil с форума nvworld.ru (на случай, если тот форум будет недоступен), которая логически продолжает здешнее обсуждение. Получилось что-то наподобие миниFAQ'а.:)

nvworld.ru/php/viewtopic.php?p=290036#290036

Цитата:
DrEvil писал(-а):

Понимают этот ремаппиннг только Vista и какие-то версии ядра Linux.

В смысле "понимают" ?

Понимать должны все операционки, которые искусственно не оганичены мелкософтом пределом в 4Гб (см. таблицу ниже).

WinXP SP2 - ограничена и от ремапинга толка ноль, только хуже будет.

WinXP SP1 + /PAE - прекрасно видит все 4 гига. Вот пример: forum.rom.by/topic16311.html#133984

А вот более полный список из упомянутого интеловского документа:

Microsoft Windows       Maximum Physical 
Operating System        Memory Supported 
=================       ================ 
Server 2003 Web Edition.........2 GB 

2000 Professional...............4 GB 
2000 Server.....................4 GB 
XP Pro & Home Edition...........4 GB 
Server 2003 Standard Edition....4 GB 
---------------------------------------------

2000 Advanced Server.....................8 GB 
2000 Datacenter Server..................32 GB 
Server 2003 Enterprise Edition..........32 GB 
Server 2003 Datacenter Edition..........64 GB 

---------------------------------------------
XP 64 bit Edition.......................32 GB 
Server 2003 Enterprise 64-bit Edition...64 GB 
Server 2003 Datacenter 64-bit Edition..512 GB

А вообще говоря, с учетом того, что обычно при включенном ремапинге из под границы 4Гб "исчезают" 2Гб, получается, что реальный максимум, доступный операционкам, на 2 Гб меньше того, что указан в в приведенной выше таблице.

Если ремапинг включен, то для 32-х битных операционок с max пределом >4Gb (из таблицы) для доступа ко всей памяти выше 2Gb должна быть указана опция /PAE в boot.ini.

nvworld.ru/php/viewtopic.php?p=290058#290058

Цитата:
DrEvil
DrEvil писал(-а):
А что, до изобретения ремаппинга не видела?

До включения ремаппинга видела меньше 4 Гб (примерно 3Гб) -- часть системной памяти "затенялась железом".

DrEvil писал(-а):
Какие-то области и при ремаппинге не переносятся.

Если это так, то эти области очень и очень небольшого размера.

DrEvil писал(-а):
Вы лучше скажите, у вас с ремаппингом и PAE сколько памяти в диспетчере задач доступно сразу после загрузки? Сколько выделено?

Я вроде приводил уже ссылку на ром.бай. Вот картинка оттуда:

Запечетлен момент работы программы S&M 1.9.0a (тест памяти), которая отожрала 2 Гб оперативы (больше она захватить не смогла, т.к. пока не обучена этому - всему виной ограничение винды на максимальный кусок памяти для одного процесса).

DrEvil писал(-а):
Не все чисто с реализацией технологии у Intel. И в этом документе, и в даташитах на чипсеты упрямо приводят пример с 5 Гб физической памяти. При этом по описанию технологии ремапа никакого PAE от системы вообще не требуется, все осуществляется якобы "у ей унутре" MCH, скрытно от программной части вообще. Если бы так и было, у нас было бы доступно 4 Гб без необходимости в использовании PAE.

Ничего подобного. При включении ремаппинга та часть ОЗУ, которая раньше затенялась "железками", просто переносится сразу за границу 4Гб адресного пространства. Поскольку при включении ремаппинга на многих платах под границей 4Гб остается всего лишь 2Гб оперативы, то остальные 2 Гига начинаются сразу, как только кончается затеняемая железом область, т.е с адреса=4Гб и дальше.

Т.е. при включении ремаппинга память распределяется таким образом:

0Гб...2Гб-1 - первая порция ОЗУ (первые 2 гига)
2Гб...4Гб-1 - память, отданная на откуп (иными словами затеняемая) железу (PCI, Апертура, прочее)
4Гб...6Гб-1 - вторая порция ОЗУ (вторые 2 гига)

Естественно, чтобы добраться до второй "порции ОЗУ", операционка должна уметь адресовать более 4Гигов, т.е .должна поддерживать PAE.

А прозрачная роль чипсета в нашем случае заключается лишь в том, чтобы перенаправлять запросы ко всем адресам адресного пространства выше 4Гб на вторую половину оперативы. Например, обращение операционки (фактически, самого процессора) по адресу 5Гб будет перенаправлено в ячейку ОЗУ с адресом 3Гб.

В документе ftp.asus.com.tw/pub/ASUS/mb/4GB_Rev1.pdf даже картинка приводится (на странице 14) для лучшего усвоения.

Путаница может возникнуть в терминологии, т.к. в документе вводится новое понятие. Адрес, выставляемый на ножках процессора, называется в документе физическим. А адрес ячейки в озу, называется системным. Т.е. объем системной памяти равен объему всех установленных (воткнутых ) в комп (=в систему =в материнку) модулей памяти.

Понятно, что в случае 4Гб памяти (с включенным ремапингом по схеме 2Г+2Г):
* общий объем адресуемой системной памяти будет равен 4 гигам;
* физическое адресное пространство будет равно 4гига (системная память)+2Гига (память, отданная на откуп железу)=6 Гигов.

Вот чтобы адресовать эти 6 гигов 32-х битная операционка как раз таки должна иметь поддержку ПАЕ. Самое смешное, что из этих 6 гигов для хранения программ и данных будет доступно только 4Гб. Но ведь глупо было рассчитывать на большее.:)

Как я заметил, многих смущает такой парадокс, что для прог доспупны те же 4 Гига, а все равно требуется ПАЕ. Естественно, не забываем про память, отъедаемую железом -- ее ведь тоже надо адресовать. Так что ничего удивительного в необходимости PAE нет.:)

Надеюсь, объяснил не слишком путано.:)

PS: Для закрепления разберем случай с 8 гигами оперативы. Ремаппинг (2+2) в биосе включен.

Распределение будет таким:

первые 2Гб ОЗУ + 2Гб железо + оставшиеся 6 Гб ОЗУ = 10Гб

В этом случае получается, что операционка должна уметь адресовать 10Гб. Из таблицы видно, что например W2K Advanced Server на это не способна, т.к. у нее ограничение =8Гб (см. таблицу).

Понятно, что для этой операционки лучше отключить ремаппинг, тогда получим примерно такое распределение (зависит от конкретной системы):

первые ~3.5Гб ОЗУ + ~0.5Гб железо + оставшиеся 4 Гб ОЗУ = 8Гб - уже лучше. W2kAS с адресацией 8Гб уже справится. При этом операционной системе для размещения данных будет доступно 8,0 - ~0,5 = ~7,5Гб.

Так что ремаппинг из-за его "грубости" не всегда полезен.:) К сожалению, уточняющих настроек ремаппинга (позволяющих самому решать, сколько памяти оставлять под границей 4Гб, а сколько перекидывать за границу 4Г) в виденных мною биосах не было. Но это не значит, что их не будет. Надежда умирает последней.:)

PPS: Хотя нет, вроде полгода назад попадалась одна мамка, позволявшая настраивать адреса, выше которых производился REMAP. Вот только модель ее я не помню.:(

nvworld.ru/php/viewtopic.php?p=290060#290060

Цитата:
DrEvil
DrEvil писал(-а):

Вот-вот, приводится она именно для случая более чем 4-х гигабайт установленной памяти.

Не понял, а какая разница ровно 4Гб или больше ? При TOM=4Gb заремэпленый кусок начнется сразу за границей 4Гб. Просто случай с >4Гб более общий, потому его и нарисовали.

DrEvil писал(-а):
Да и даташиты реальных чипсетов описывают процесс несколько иначе от этого документа, отсутствующего, кстати, на сайте Intel:
[...]
Physical memory по тексту идет именно как установленная DRAM, а не адресное пространство.

Другой документ - другая терминология. Но суть ТА ЖЕ САМАЯ!:)
Кстати, связка "логическая <-> физическая" мне даже больше по душе.