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 | ||
Кстати разговор с того и начался, что 32-бит сервер запросто держит больше чем 4Г. И что это за ограничение в 2Г на процесс? Что такое процесс? |
Posted by: Sidorini on 26-11-2009, 21:27 | ||
![]() |
Posted by: Lord KiRon on 26-11-2009, 22:42 | ||
А уж если учесть что технологий для "расширения" было не одна а две (одна более ранняя другая более поздняя)... Это скорее не "возможность софта" а способ умного софта обходить ограничения железа. На 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 | ||
![]() |
Posted by: astra on 27-11-2009, 00:35 |
То есть в Линукс 32 бита будет видеь больше чем 4Г? |
Posted by: FiL on 27-11-2009, 07:38 | ||||
![]() А SQL Server примечателен тем, что он под себя самого может заюзать больше 2-х гиг. |
Posted by: Lord KiRon on 27-11-2009, 11:38 | ||
|
Posted by: astra on 27-11-2009, 15:06 | ||||
|
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 | ||
Итакой вопрос : 2 планки по 2гига, но винда видит только 2,87Гб. В чём проблема? Как я понял то должно быть хотябы выше 3ГБ. |
Posted by: Vlad_il on 07-03-2010, 17:42 | ||
|
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 |
это ноут, мож действительно встроенная, хотя мать асус ![]() |
Posted by: Vitalij on 07-03-2010, 18:11 |
попробую в биос заглянуть ![]() |
Posted by: Lord KiRon on 07-03-2010, 19:57 | ||
|
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-х жрет кернел. |