RSS
 

32-битовите ОС и RAM паметта

21 Nov

До преди няколко дни и аз като повечето хора, интересуващи се от компютри, бях напълно убеден в следния “факт”: 32-битовите операционни системи имат архитектурен лимит от 4GB на паметта, която могат да адресират. Това е ЛЪЖА!

Преди да се впусна в обяснения, нека обясня какво е общоприетото схващане. 32-бита е число, състоящо се от 32 нули и единици. Колко различни числа можем да напишем, ако разполагаме с 32 места? Отговорът е 2 на степен 32, или 4 294 967 296. Когато компютърът иска да знае къде точно в паметта се намират някакви данни, той пази техният “адрес” в 32-битово число – то представлява номерът на клетката памет, съдържаща данните. Ако адресът е 32-битово число, и ако 32-битовото число има само 4 милиарда различни стойности, значи можем да имаме най-много 4 милиарда различни адреси, нали? Правилно! И тук идва моментът на заблудата – повечето хора приемат без замисляне, че 1 адрес отговаря на 1 байт в паметта, т.е. с едно 32-битово число можем да адресираме максимум 4GB памет.

Системните програмисти не за пръв път се срещат с такива ограничения, и отдавна съществуват прости механизми за заобикалянето им. Когато компютрите са били 16-битови, са могли без проблем да работят с повече от 64KB памет! Дори още по-отдавна, 8-битовите компютри не са разполагали само с мизерните 1KB…

Още от времето на Pentium Pro (1995), процесорите на Intel поддържат технология, наречена Physical Address Extension, която ги снабдява с още 4 бита за адресиране на реалната памет. Технологията трябва да се поддържа и от процесора, и от операционната система. В случая с Windows, тази технология се поддържа още от Windows 2000! Доказателство за това е сайтът на Microsoft, описващ различните лимити за памет при различните версии на Windows. Ясно се виждат множеството 32-битови сървърни версии на Windows, които поддържат памет стигаща до 128GB!

Що се отнася до desktop версиите на Windows (например Vista), на практика те ползват абсолютно същите библиотеки за управление на паметта, както сървърните версии. Кодът е един и същ, и е наличен във всички версии! Във 32-битовата Vista просто изкуствено е заложена спънка, която да не позволява използването на повече от 4GB памет.

В крайна сметка, лимит наистина има – Vista не може да работи с повече от 4GB. Но този лимит няма абсолютно нищо общо с 32-битовата архитектура – той е наложен по чисто софтуерен път. И както доста от софтуерните ограничения, си има начини за заобикалянето му ;)

 
 

Leave a Reply

 
 
  1. Yanko

    3 June 2010 at 09:23

    Има ли начин да заобиколя ограничението на Win 7 32 bit, че имам 4 гб памет а в момента позлвам само 3 гб?

     
  2. Rosko

    3 June 2010 at 13:33

    http://www.unawave.de/windows-7-tipps/32-bit-ram-barrier.html?lang=EN – това трябва да помогне :)