Автор Тема: На какво се дължи това че 4Gb рам да се открива като 3Gb?  (Прочетена 3799 пъти)

Naka

  • Напреднали
  • *****
  • Публикации: 3469
    • Профил
Предползгам, че много са виждали това при малко по-старите машини: Компютър с сложена 4Gb рам да се открива само като 3Gb.

Никога не съм се замислял точно за причините. На какво се дължи това ограничение?
На BIOS? на ограничение на 32-битовата архитектура? някакво ограничение при адресацията от архитектурата на процесорите Intel/AMD?

Ако биоса изпише само 3GB, като бутне кърнела колко памет ще има? - 3 или 4?

PS: Не ме бийте за толкова тъп въпрос. [_]3
« Последна редакция: Mar 26, 2012, 14:17 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

runtime

  • Напреднали
  • *****
  • Публикации: 807
  • Distribution: Ubuntu 14.04
  • Window Manager: Unity
  • LZ1DOT
    • Профил
    • WWW
Биос - Memory remap
Архитектура - адресация
Ограничение при Ос - също. ( може да пуснеш PAE подръжка Physical Address Extension)
Това на кратко.  Чети в интернет ако те вълнува повече по темата. Там има доста изписано по този казус.
http://en.wikipedia.org/wiki/3_GB_barrier
« Последна редакция: Mar 26, 2012, 14:33 от runtime »
Активен

Naka

  • Напреднали
  • *****
  • Публикации: 3469
    • Профил
Добре де PAE нали е за адресиране на повече от 4GB при 32-битови системи.  Аз питам защо има дупка между 3 и 4GB?

Цитат
http://en.wikipedia.org/wiki/3_GB_barrier
Прочетох го но нищо не разбрах, освен че има 3_GB ограничение. Много неясно са го написали.
« Последна редакция: Mar 26, 2012, 19:13 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

runtime

  • Напреднали
  • *****
  • Публикации: 807
  • Distribution: Ubuntu 14.04
  • Window Manager: Unity
  • LZ1DOT
    • Профил
    • WWW
Ами всъщност там доста ясно си е написано и отговора ти е в още в първото изречение. Ако на теб английския не ти е на ниво е друга бира - кажи ще преведем ако е нужно  [_]3

Няма дупка точно м/у 3 и 4 и там си е обяснено.

Сега съм на радиостанцията и нямам време да пиша. Ако някой не ти е превел / обяснил до утре ще го направя :)
Активен

vyrgozunqk

  • Гост
Абе да речем, че софтуерното ПАЕ може да се ползва, само ако и процесора ти има PAE, точно затова тук има един колега, който е със селерон без пае и половината дистрибуции не му тръгват. Защото примерно кърнъла им е компилиран с пае поддръжка : )

П.С. Така де, без пае неможеш да видиш повече от 3ГБ или Memory контролера на дъното ти не го позволява...
« Последна редакция: Mar 26, 2012, 20:29 от vyrgozunqk »
Активен

Naka

  • Напреднали
  • *****
  • Публикации: 3469
    • Профил
Ами всъщност там доста ясно си е написано и отговора ти е в още в първото изречение. Ако на теб английския не ти е на ниво е друга бира - кажи ще преведем ако е нужно  [_]3

Няма дупка точно м/у 3 и 4 и там си е обяснено.

Сега съм на радиостанцията и нямам време да пиша. Ако някой не ти е превел / обяснил до утре ще го направя :)

Ами айде давай да те видим какво ще обясниш, щото до сега нищо конкретно не си казал по темата. И стига тези глупости с английският. Да не говорим, че и на български може да се приказва неразбрано - много приказки и нищо.


Единственото което разбирам за проблема е, че I/O-то на PCI се мапва в същият адресен диапазон 0-4Gb. 32 битовите процесори не могът да адресират също повече от 4Gb.

За да се избегне този конфликт (PCI и РАМ на едно и също място), BIOS-а или забранява частта от паметта или пък рамапва тази част извън 4Gb адрес. Т.е. вече имаме дупка или загубена памет.

Но ако все пак ни трябва тази ремапната памет (извън 4Gb диапазон, който може да адресира 32битова система) ни трябва PAE. PAE трябва да имат и процесора и ОС-а.

Така ли е както го мисля?

Възниква и друг въпрос. Нека под 32bit-ова система имаме процес който консумира 4GB памет. Заради горните проблеми, явно част от тази памет, заделена за процеса е достъпна само чрез PAE. Oзначава ли това, че такъв процес ще работи бавно и спънато? Колко ще е загубата в производителността?

« Последна редакция: Mar 26, 2012, 21:38 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

laskov

  • Напреднали
  • *****
  • Публикации: 3182
    • Профил
//извън темата:
Сега съм на радиостанцията ...
??? Ти си радиолюбител ? amateur radio с позивна LZнещо_си ? Има ли някъде нещо, което да разказва за това, което правиш?
Активен

Не си мислете, че понеже Вие мислите правилно, всички мислят като Вас! Затова, когато има избори, идете и гласувайте, за да не сте изненадани после от резултата, и за да не твърди всяка партия, че тя е спечелила, а Б.Б. (С.С., ...) е загубил, а трети да управлява.  Наздраве!  [_]3

vyrgozunqk

  • Гост
Има една голяма тема 32vs64 bits там ще намериш каквото те интересува... Наскоро го раззисквахме точно, каква е и колко е разликата. Зависи от ситуацията, като цяло и софтуера, но обикновено е малка разликата...
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Мисля, че е главно заради MMIO, вградени видеоадаптери, които ползват системна видеопамет и криви BIOS имплементации. Допълнително, 128 мегабайта винаги "хартисват" когато ползваш PAE. Също така си има ограничения, някои видове кеширана информация не може да се намира над 4-тия гигабайт.

Процесите не могат да адресират повече от 3 гигабайта с или без PAE на 32-битова система, не 4 гигабайта. Причината е че горният 1 гигабайт от адресното пространство е всъщност 1 гигабайт kernel-ска памет мап-ната в адресното пространство и защитена чрез сегментация. Тези 1 гигабайт памет не могат да се ползват от процеса.
Активен

"Knowledge is power" - France is Bacon

runtime

  • Напреднали
  • *****
  • Публикации: 807
  • Distribution: Ubuntu 14.04
  • Window Manager: Unity
  • LZ1DOT
    • Профил
    • WWW
@laskov - ми намира се тук и там... ако искаш ще ти пусна един - два линка. Но на български почти няма литература за това хоби :)

32bit OS може да адресира 2^32bytes (4294967296bytes = 4194304Kb = 4096Mb) RAM. Загубите се получават от това, че OS резервира част от оперативната памет за комуникация с други устройства.

RAM e един голям блок от регистри.
За да се адресира даден регистър, процесора запаметява регистъра и казва на паметта да чете съдържанието на регистъра записан в дадения адрес.

Регистрите в х86 OS са ограничени до 32 bit-а, съответно най-големият адрес, който може да се запише в регистъра е 2^32 байта (4294967296), което означава, че процесора има достъп до адрес с максимален номер = 4294967296, което е четвъртия GB памет.

Проблема идва от там, че процесора също адресира I/O устройства (LPT, RS232, USB, PS2, монитор и др.) като по този начин заделя адрес и за тях. Близо 500MB се резервират за комуникация с тези устройства. Точна цифра не може да се каже. Индивидуално е за всяка конфигурация.

И все пак в уикито е оябснено по-добре :)

« Последна редакция: Mar 27, 2012, 20:41 от runtime »
Активен

Naka

  • Напреднали
  • *****
  • Публикации: 3469
    • Профил
Да нещата се изясниха. Отивам за бира а за вас само виртуални бири!!!  [_]3 [_]3 [_]3 [_]3

Процесите не могат да адресират повече от 3 гигабайта с или без PAE на 32-битова система, не 4 гигабайта. Причината е че горният 1 гигабайт от адресното пространство е всъщност 1 гигабайт kernel-ска памет мап-ната в адресното пространство и защитена чрез сегментация. Тези 1 гигабайт памет не могат да се ползват от процеса.

Мерси, точно това живо ме интерсуваше. Имам един процес който яде страшно много памет. - много повече от 1ГБ. И ако наистина удари 3 гигабайта, ще трябва да го пускам на 64-битова система. :'(
« Последна редакция: Mar 27, 2012, 14:04 от Naka »
Активен

Perl - the only language that looks the same before and after encryption.

runtime

  • Напреднали
  • *****
  • Публикации: 807
  • Distribution: Ubuntu 14.04
  • Window Manager: Unity
  • LZ1DOT
    • Профил
    • WWW
П.С. Следващият път не тръгвай с рогата на пред след като някой няма време в момента да ти обясни нещо, а ти дава линк към място в което може да намериш желаната информация!  Все пак никой не е длъжен да ти обяснява на длъж и на шир в желано от теб време и място?!? Не го приемай като заяждане, а като съвет!


 [_]3 [_]3 [_]3
« Последна редакция: Mar 27, 2012, 20:47 от runtime »
Активен

4096bits

  • Напреднали
  • *****
  • Публикации: 7836
    • Профил
Инсталирай си х64 система.
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

runtime

  • Напреднали
  • *****
  • Публикации: 807
  • Distribution: Ubuntu 14.04
  • Window Manager: Unity
  • LZ1DOT
    • Профил
    • WWW
Ако има върху какво да я инсталира! Но, чисто от перспективна гледна точка - да по добре ще е.
P.S. Тоя процес да не да прави memory leak? Много нещо я хапва :)
« Последна редакция: Mar 27, 2012, 21:56 от runtime »
Активен

borovaka

  • Напреднали
  • *****
  • Публикации: 1331
  • Distribution: Каквото дойде
  • Window Manager: Gnome / KDE
    • Профил
@Naka Някое SQL сървърче ли ги лапа тези ресурси :) ? ... или някой "програмист" като мене дето много обича да прави 1000000 масива с още толкова под масиви и да ги обхожда на воля се е вихрил :)
Активен

Та извода е прост: "Колкото по-големи ла*ната - толкова по-малка щетата! ... моралната де, не материалната"