Printable Version of Topic
Click here to view this topic in its original format
Forums > Компьютерная техника > Правда о 4ГБ ограничении.


Posted by: astra on 26-11-2009, 13:03
(Во флейм решил это не стоит постить)

Я недавно говорил с одним человеком и он скааал мне, что физическое ограничение XP-32bit на 4Г памяти - это абсолютная лажа. что это софтверное ограничение наложенное MS. Что 32 бит никак не влияют на то, сколько памяти XP-32bit может видеть.

Что скажет всезнающий All?

Posted by: Sidorini on 26-11-2009, 16:54
32 битная адресация позволяет поиметь прямой доступ к 4ГБ адресного пространства. Которое включает в себя и адресацию оперативной и видеопамяти и адресацию различных устройств. Это ограничение можно обойти, используя "оконный" доступ к памяти, но далеко не весь софт сможет работать в таком режиме.

Posted by: Lord KiRon on 26-11-2009, 16:58
Ну собственно Sidorini уже ответил , но отвечу "математически" - адрес хранится в 32-х битном числе , в каждой ячейке 0 или 1 - степени 2-и, то есть максимальное число 2^32 и больше быть не может.
Соответственно "напрямую" к большему адресу не добраться.

Что там действительно "софтовое" это ограничение в 2гига на одну программу.

Posted by: Uzaren on 26-11-2009, 17:02
http://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx (http://msdn.microsoft.com/en-us/library/aa366778(VS.85).aspx
http://www.ixbt.com/soft/windows-4gb.shtml (http://www.ixbt.com/soft/windows-4gb.shtml

Posted by: astra on 26-11-2009, 17:46
Я отсканирую статью и выложу тут скан (на английском правда).
Интересно что вы скажете по этому поводу.

Posted by: FiL on 26-11-2009, 19:00
Windows 2000 Server Datacenter Edition (естественно, 32-битный) уже тогда понимал до 32 гиг памяти.
Так что винда сама по себе работать с памятью за пределами 4-гигового порога на 32-битной архетектуре умеет.
А вот ограничение в 2 гига на процесс - оно есть.

Posted by: astra on 26-11-2009, 19:18
QUOTE (FiL @ 26-11-2009, 16:00):
Windows 2000 Server Datacenter Edition (естественно, 32-битный) уже тогда понимал до 32 гиг памяти.
Так что винда сама по себе работать с памятью за пределами 4-гигового порога на 32-битной архетектуре умеет.
А вот ограничение в 2 гига на процесс - оно есть.
Получается в XP-32 только 2 процесса? А в 64? Есть ли разница в XP-64 и например W7-64?

Кстати разговор с того и начался, что 32-бит сервер запросто держит больше чем 4Г.
И что это за ограничение в 2Г на процесс? Что такое процесс?

Posted by: Sidorini on 26-11-2009, 21:27
QUOTE (astra @ 26-11-2009, 18:18):
Кстати разговор с того и начался, что 32-бит сервер запросто держит больше чем 4Г.
И на нём работает только специфический софт :)

Posted by: Lord KiRon on 26-11-2009, 22:42
QUOTE (FiL @ 26-11-2009, 18:00):
Windows 2000 Server Datacenter Edition (естественно, 32-битный) уже тогда понимал до 32 гиг памяти.
Так что винда сама по себе работать с памятью за пределами 4-гигового порога на 32-битной архетектуре умеет.
А вот ограничение в 2 гига на процесс - оно есть.
Там по страницам доступ организован, софт "специфически" надо писать. В связи с тем что дело это мутное и муторное и программ то таки единицы, в голову сейчас приходит только SQL Server но было еще несколько но порядок тот же - "несколько".
А уж если учесть что технологий для "расширения" было не одна а две (одна более ранняя другая более поздняя)...

Это скорее не "возможность софта" а способ умного софта обходить ограничения железа. На DOS вон тоже больше 640К можно было использовать блоками по 64к не смотря на ограничение через extended/expanded правда там действительно было ограничение софта операционки.

Posted by: ilmarranen on 26-11-2009, 22:48
Вот (http://ru.wikipedia.org/wiki/DRAM. Плюс всё по ссылочкам - что такое страничная память

Posted by: Power User on 26-11-2009, 22:52
в двух словах.
1. да может. (ХР до первого сервис пака видела 4 гига полностью)
2. не может. (виноваты криворукие дровописатели - в те временя никто про даже 2 гига не думал... этим кстати и отличаются драйвера под сервер 2003 и под хр - хотя они часто работают и там и тут - но сертефицированные под сервер написаны с учетом "4гига+" - из-за глюков (накладка памяти) - ХР-СП1 откусили поддержку 4гига...
3. есть клюс - 3гига - как раз что бы процесс заюзал 3 гига... (на серверах - на ХР работает ли не знаю - не интересовался...)

доступ к более 4 гигам в 32-х битных системах идет через PAE (который в ХР+СП отключен)


Posted by: Gwelgoth on 27-11-2009, 00:32
QUOTE (Power User @ 26-11-2009, 20:52):
через PAE (который в ХР+СП отключен)
но который можно включить ;)

Posted by: astra on 27-11-2009, 00:35
То есть в Линукс 32 бита будет видеь больше чем 4Г?

Posted by: FiL on 27-11-2009, 07:38
QUOTE (Sidorini @ 26-11-2009, 13:27):
QUOTE (astra @ 26-11-2009, 18:18):
Кстати разговор с того и начался, что 32-бит сервер запросто держит больше чем 4Г.
И на нём работает только специфический софт :)
ась? на win2000 только специфический софт работает? У нас разные вселенные с тобой? :) А то у меня проблем с запуском обычного софта не возникало.

А SQL Server примечателен тем, что он под себя самого может заюзать больше 2-х гиг.

Posted by: Lord KiRon on 27-11-2009, 11:38
QUOTE (FiL @ 27-11-2009, 06:38):
ась? на win2000 только специфический софт работает?
Только специфический софт может использовать больше 2-х гига на програмку).

Posted by: astra on 27-11-2009, 15:06
QUOTE (Lord KiRon @ 27-11-2009, 08:38):
QUOTE (FiL @ 27-11-2009, 06:38):
ась? на win2000 только специфический софт работает?
Только специфический софт может использовать больше 2-х гига на програмку).
То есть если 4 программы и каждой надо по 1.5Г, то сервер справится, и заполнит все 6Г а вот XP/W7-32 bit будут кряхтеть?

Posted by: FiL on 27-11-2009, 18:40
нет. "обычные" программы не смогут использовать память выше 4-х гиг. И при этом я не знаю сможет-ли винда сама использовать ту память для кеша, например. Скорее нет, чем да :(

Posted by: Power User on 29-11-2009, 10:42
PAE ключ не срабатывает в XP + SPx
а ключик 3G - для exchange помогает...

Posted by: Vitalij on 07-03-2010, 16:41
QUOTE (Power User @ 29-11-2009, 10:42):
PAE ключ не срабатывает в XP + SPx
а ключик 3G - для exchange помогает...
в чём помогает?

Итакой вопрос : 2 планки по 2гига, но винда видит только 2,87Гб. В чём проблема?
Как я понял то должно быть хотябы выше 3ГБ.

Posted by: Vlad_il on 07-03-2010, 17:42
QUOTE (Vitalij @ 07-03-2010, 13:41):
Итакой вопрос : 2 планки по 2гига, но винда видит только 2,87Гб. В чём проблема?
Как я понял то должно быть хотябы выше 3ГБ.
Значит скорее всего имеется онбордная видюха. Ей тоже кушать хочется.

Posted by: Vitalij on 07-03-2010, 18:07
стоит GeForce Go 7300 c 512Mb

Posted by: Lord KiRon on 07-03-2010, 18:08
Причем обычно в Биосе можно изменить ее настройки на ,кажется это называется, DMT и тогда она не будет эту память резервировать а брать по мере надобности.

Posted by: Vitalij on 07-03-2010, 18:10
это ноут, мож действительно встроенная, хотя мать асус :confused2:

Posted by: Vitalij on 07-03-2010, 18:11
попробую в биос заглянуть :)

Posted by: Lord KiRon on 07-03-2010, 19:57
QUOTE (Vitalij @ 07-03-2010, 17:11):
попробую в биос заглянуть :)
Попробуй, но в ноуте опции может и не быть.

Posted by: FiL on 07-03-2010, 20:36
разные железки резервируют разные куски памяти. Проблема в том, что память отсекается по нижней границе. И если какая-то хрень залочила под себя память от 2.8 до 2.9, то даже если выше никто не юзает, то та память уже не видна.

Возьми какой-нить тул системной информации и посмотри какие железки какую память зарезервировали. И попробуй перекинуть их повыше.

Posted by: Vitalij on 07-03-2010, 23:05
Everest это делает?

Posted by: FiL on 07-03-2010, 23:37
конечно.

Устройства -> ресурсы устройств. Там смотри память.

Вот у меня в лапте видяшка сидит на адресах Е0000000-Е01003FF
А это значит, что для использования доступна только память до Е0000000. Это примерно 3.5Гб.
Проблема в том, что НИЖЕ этого у меня еще PCI bus занимает адреса от 50000000 до упора.... но это он делает только потому, что у меня всего 1.25 Гига в этом лапте.
Но у тебя ВСЁ, что занимает память - всё её отбирает у системы. При 4-х гигах как ни крути, а любое железо забирает память. И задача только в том, чтоб это железо сложить покомпактнее в верхних адресах.

P.S. Там ниже еще куски вырезаны ниже мегабайта, но это совсем копейки и "не считается".

Posted by: upan on 08-03-2010, 09:45
вы зря спорите, на самом деле это давно доказано, и логически и математически. могу немного ошибиться в точности цитаты прочитанной где то у мелкомягких, но постараюсь донести суть:
любое 32битное приложение способно логически увидеть 4Гб памяти, т.е
2 в степени 32 поделённое на 1024 равно 4194304Кб(что равно 4Гб)
НО, винда под нужды системы(железо, собственный софт и т.д.) отжирает примерно 1Гб(на деле немного меньше), отжирает она в реестре адресной памяти, тоесть с 0 и до числа равного 1024(это если грубо и доступно), для всего остального остаються адреса с 1025 и до 4096, в это самое адресное пространство и вмещаються адреса виртуальной памяти(RAM). вот что туда влезло и видят 32битные программы. если это канечно не что то спецефичесское типа эвереста, который данные считывает с BIOS.

Posted by: FiL on 08-03-2010, 13:00
ну, во-первых, железо отжирает память не снизу, а сверху. в районе 3-4-го гигабайта. А во-вторых, там всё сложнее. С одной стороны железо да, отжирает. А с другой - есть еще всякие костыли в виде РАЕ. В общем... не всё там легко объясняется и не всё везде одинаково.

Posted by: Lord KiRon on 08-03-2010, 16:58
К этому еще добавлю что конкретно в винде ни одно 32-х битное приложение без использования "особых методов" (щрое PAE) никогда не получит больше 2-х Гига ибо 2гига из 4-х жрет кернел.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)