Timp de ani de zile, explicația obișnuită pentru faptul că versiunile pe 32 de biți de Windows raportau doar 4 GB de memorie RAM (sau mai puțin) a fost că „sistemele pe 32 de biți pot adresa doar 4 GB”.
Deși este un punct de plecare util, această explicație este incompletă într-un mod semnificativ. Procesoarele pe 32 de biți compatibile cu arhitectura Intel și suportul Windows pentru Physical Address Extension (PAE) puteau, în anumite configurații, să gestioneze memorie fizică peste pragul de 4 GB.
Limita impusă versiunilor client a fost, în schimb, o decizie de compatibilitate bazată pe o constrângere reală de adresare pe 32 de biți, și nu o dovadă a absenței PAE sau a irelevanței calculelor matematice implicate.
Această distincție a revenit în atenție în urma explicațiilor oferite de Raymond Chen, un veteran Microsoft, cu privire la motivele pentru care Windows XP Service Pack 2 și Windows Server 2003 SP1 Standard Edition gestionau memoria de peste 4 GB diferit față de anumite ediții pentru servere.
Pe scurt, expunerea unor adrese fizice mai mari crea un risc major pentru driverele care presupuneau că orice adresă fizică poate fi reprezentată pe 32 de biți. În special, erorile legate de DMA (Direct Memory Access) puteau duce la coruperea memoriei.
Rezultatul a fost o politică prudentă pentru versiunile client: menținerea memoriei RAM fizice utilizabile în limitele obișnuite de 4 GB, chiar și atunci când funcția PAE era activă.
Înțelegerea acestei politici necesită diferențierea a trei concepte adesea confundate:
- memoria RAM instalată
- capacitatea de adresare fizică
- spațiul de adresare virtuală disponibil pentru o aplicație individuală.
Cifra de 4 GB avea semnificații diferite
O valoare pe 32 de biți poate lua 2^32 valori distincte, ceea ce corespunde unui spațiu de adresare de 4 GB.
Aceasta reprezintă o limitare reală și semnificativă pentru adresarea virtuală convențională pe 32 de biți.
Totuși, acest lucru nu determină automat cantitatea totală de memorie fizică pe care o poate conține un sistem sau pe care o poate gestiona un sistem de operare.
Tehnologia PAE a fost concepută tocmai pentru a rezolva această din urmă problemă.
Ea permite sistemului de operare să utilizeze adrese fizice extinse, oferind posibilitatea de a mapa pagini de memorie situate peste pragul de 4 GB în spațiul de adresare obișnuit al unui proces, în funcție de necesități.
Cu alte cuvinte, sistemul poate lucra cu o cantitate mai mare de memorie RAM fizică fără a transforma brusc fiecare aplicație pe 32 de biți într-una pe 64 de biți.
Acest ultim aspect este esențial. Documentația Microsoft precizează clar că PAE nu extinde spațiul de adresare virtuală al unui proces pe 32 de biți
Un proces Windows pe 32 de biți rămâne limitat la un spațiu de adresare virtuală de maximum 4 GB.
În configurația convențională Windows x86, aplicațiile care rulează în modul utilizator primesc, de regulă, 2 GB din acest spațiu, restul fiind rezervat nucleului (kernel-ului).
Configurația 4GT putea mări porțiunea utilizabilă în modul utilizator până la 3 GB pentru anumite aplicații, însă nu transforma procesul într-unul pe 64 de biți și nici nu elimina limita generală de 4 GB pentru adresarea virtuală.
Prin urmare, afirmația simplificată conform căreia Windows-ul pe 32 de biți se lovea de o limită de 4 GB nu era complet eronată.
Ea devenea însă incorectă atunci când era folosită ca explicație exhaustivă pentru plafonul memoriei RAM fizice impus edițiilor destinate consumatorilor.
O formulare mai precisă ar fi următoarea: PAE a făcut ca memoria fizică situată peste pragul de 4 GB să poată fi utilizată tehnic de anumite configurații Windows pe 32 de biți, în timp ce aplicațiile pe 32 de biți rămâneau supuse unei limitări mult mai stricte privind spațiul de adresare virtuală. Ambele afirmații erau simultan adevărate.
De ce driverii au devenit factorul decisiv?
Explicația lui Chen indică problemele de compatibilitate a driverelor de dispozitiv drept cauză imediată a restricției impuse clientului.
Driverele mai vechi puteau porni de la o premisă eronată: aceea că o adresă fizică încape întotdeauna în 32 de biți.
Această presupunere putea trece neobservată atâta timp cât întreaga memorie RAM se afla sub pragul de 4 GB. Însă, odată ce Windows a permis utilizarea memoriei situate peste acest prag, un driver care gestiona o adresă ce depășea limita de 32 de biți putea funcționa defectuos.
Riscul era deosebit de critic în cazul accesului direct la memorie (DMA).
DMA permite unui dispozitiv hardware să transfere date către sau dinspre memorie fără ca procesorul să fie nevoit să copieze el însuși fiecare octet.
Prin urmare, driverul și dispozitivul trebuie să „cadă de acord” asupra locației fizice a acelei memorii.
Dacă software-ul gestiona incorect o adresă fizică ridicată, datele puteau fi trimise către o locație greșită sau citite dintr-una. Nu era vorba doar despre o problemă de performanță; riscul semnalat oficial viza posibila corupere a memoriei.
Acest lucru explică de ce măsura nu a fost o simplă chestiune de activare a unei funcționalități a procesorului.
Furnizorul sistemului de operare trebuia să țină cont de calitatea și de ipotezele de funcționare specifice unui ecosistem vast de componente hardware și drivere.
O funcționalitate poate fi validă din punct de vedere tehnic, dar nesigură pentru o implementare generalizată, dacă există riscul ca driverele existente să o gestioneze incorect.
De asemenea, este necesară precizie în ceea ce privește sfera de aplicare.
Explicația vizează sistemele Windows XP SP2 și Windows Server 2003 SP1 Standard Edition.
Afirmația generală conform căreia modificarea a afectat „Windows XP” estompează o distincție importantă legată de pachetele de actualizare (Service Pack) și diminuează acuratețea relatării istorice.
PAE nu a fost pur și simplu dezactivat pe sistemele Windows client
O altă simplificare excesivă frecvent întâlnită este ideea că versiunile de Windows pe 32 de biți destinate utilizatorilor obișnuiți nu utilizau PAE. Documentația Microsoft nu susține această afirmație generalizatoare.
PAE putea fi activat automat pe sistemele client pe 32 de biți atunci când era utilizată funcția DEP (Data Execution Prevention – Prevenirea executării datelor) implementată la nivel hardware.
De asemenea, Microsoft a precizat în documentație că versiunile client x86 cu PAE activat dispuneau de un spațiu de adresare fizică pe 32 de biți utilizabil.
Restricția principală nu era imposibilitatea rulării în modul PAE; mai degrabă, edițiile client limitau adresa fizică maximă a memoriei RAM pe care o puteau utiliza.
Această nuanță poate părea una teoretică, dar explică o situație confuză cu care utilizatorii se confruntau adesea:
- Un sistem client Windows pe 32 de biți putea utiliza funcționalități asociate PAE, precum DEP-ul hardware.
- Același sistem putea, totuși, să nu utilizeze memoria RAM mapată peste limita de memorie fizică permisă pentru ediția client respectivă.
- Activarea sau prezența PAE nu oferea unei aplicații obișnuite pe 32 de biți o alocare de adrese virtuale mai mare decât cea standard.
Acesta este și motivul pentru care sfaturile care promit „deblocarea” unor cantități mari de memorie RAM pe vechile sisteme client pe 32 de biți trebuie tratate cu prudență.
Chiar dacă o soluție alternativă modifică o limită aparentă, aceasta nu rezolvă problema istorică de compatibilitate a driverelor pe care Microsoft încerca să o evite și nici nu oferă aplicațiilor pe 32 de biți, mari consumatoare de memorie, un spațiu de adresare specific sistemelor pe 64 de biți.
De ce 4 GB instalați însemnau adesea mai puțin de 4 GB utilizabili?
O altă sursă de confuzie este diferența dintre memoria RAM instalată fizic într-un PC și memoria RAM pe care Windows o raportează ca fiind disponibilă.
Dispozitivele hardware necesită porțiuni din harta de adresare a sistemului pentru uz propriu.
Aceste intervale rezervate se pot afla sub pragul de 4 GB.
Componentele grafice, firmware-ul și alte dispozitive pot ocupa un spațiu de adresare care, în mod normal, ar corespunde memoriei RAM instalate.
Prin urmare, un computer echipat cu 4 GB de memorie poate afișa o cantitate de memorie utilizabilă semnificativ mai mică atunci când rulează o ediție client Windows pe 32 de biți.
Firmware-ul poate avea capacitatea de a realoca memoria RAM astfel deplasată către adrese situate peste pragul de 4 GB.
Acest lucru este util doar dacă sistemul de operare poate accesa zona realocată. Microsoft a precizat că versiunile Windows pe 64 de biți (x64) și anumite ediții Windows Server pe 32 de biți (x86) pot utiliza o astfel de memorie, în timp ce edițiile client Windows pe 32 de biți (x86) nu pot, de regulă, să utilizeze porțiunea realocată.
Pentru posesorii de hardware din acea epocă, aceasta este explicația practică a unei situații deosebit de frustrante: instalarea a 4 GB de memorie nu garanta că Windows va recunoaște și va pune la dispoziție întreaga cantitate de 4 GB.
Capacitatea „lipsă” nu provenea neapărat dintr-un modul de memorie defect; o parte din aceasta putea fi deplasată din cauza rezervărilor de adrese și realocată într-o regiune pe care sistemul de operare client nu o utiliza.
Edițiile pentru servere ilustrează capacitățile și limitările PAE
Edițiile Windows Server din acea perioadă demonstrează că PAE reprezenta mai mult decât o simplă capacitate teoretică.
Documentația Microsoft privind limitele pentru Windows Server 2003 SP1 (versiunea pe 32 de biți) indică faptul că edițiile Enterprise și Datacenter suportau până la 64 GB de memorie RAM prin utilizarea PAE, în timp ce ediția Standard rămânea limitată la 4 GB.
De asemenea, Microsoft a specificat o limită mai scăzută, de 16 GB, pentru edițiile Enterprise și Datacenter atunci când era utilizată funcția 4GT.
O rectificare importantă este aceea că, potrivit documentației, ediția Datacenter a sistemului Windows Server 2003 SP1 (pe 32 de biți) suporta 64 GB, nu 128 GB.
Acest detaliu este relevant, deoarece cifrele exagerate pot crea impresia că diferențele dintre edițiile pentru servere și cele pentru stații de lucru sunt mai mari sau mai neobișnuite decât indică datele oficiale.
Aceste limite specifice serverelor nu înseamnă că PAE a fost o soluție universală.
O memorie fizică extinsă permitea serverului să mențină mai multe date în memorie și să gestioneze mai multe sarcini de lucru, însă fiecare proces convențional pe 32 de biți dispunea în continuare de un spațiu de adresare virtuală limitat.
Uneori, software-ul necesita un design specific pentru a beneficia eficient de configurațiile cu memorie mare.
Nici diferențele dintre ediții nu demonstrează, prin ele însele, existența unui motiv comercial ascuns.
Este rezonabil să observăm că exista o segmentare: o ediție pe 32 de biți putea utiliza mult mai multă memorie RAM fizică decât o alta.
Nu există dovezi care să susțină ideea că problema compatibilității a fost doar un pretext.
Explicația oferită de Chen prezintă raționamentul oficial al Microsoft: evitarea problemelor cauzate de driverele care gestionau incorect adresele fizice superioare.
Prețurile practicate în trecut oferă un context pentru scepticismul legat de teoria stimulării vânzărilor către utilizatorii casnici (Windows Server 2003 Enterprise costa 3.999 USD și includea 25 de licențe de acces pentru clienți), însă prețul, în sine, nu poate explica toate deciziile sau motivațiile interne privind produsele.
Concluzia cea mai pertinentă este că au coexistat o problemă reală de compatibilitate și limitări ale produsului specifice fiecărei ediții.
Ce înseamnă acest istoric pentru utilizatorii actuali de Windows?
Problematica memoriei RAM pe 32 de biți ține, în mare parte, de depanarea sistemelor mai vechi, însă lecțiile conceptuale rămân utile.
În primul rând, atunci când analizați utilizarea memoriei, faceți distincția între valorile afișate de Windows:
- Memoria RAM instalată reprezintă capacitatea fizică a memoriei montate pe sistem.
- Memoria RAM utilizabilă reprezintă cantitatea de memorie pe care sistemul de operare o poate pune efectiv la dispoziție, după aplicarea rezervărilor hardware și a limitărilor impuse de ediția sistemului sau de arhitectură. Spațiul de adresare alocat fiecărui proces reprezintă cantitatea de memorie pe care o anumită aplicație o poate mapa; aceasta nu este echivalentă cu memoria RAM totală a sistemului.
În al doilea rând, nu vă așteptați ca activarea PAE să schimbe radical modul de funcționare a unei aplicații vechi pe 32 de biți. Chiar dacă sistemul de operare poate gestiona o cantitate mai mare de memorie fizică, limita proprie a aplicației privind spațiul de adresare virtuală pe 32 de biți rămâne neschimbată. Un proces care atinge limita maximă a spațiului său de adresare poate eșua, chiar dacă sistemul dispune de memorie RAM fizică neutilizată.
În al treilea rând, trecerea de la o instalare client pe 32 de biți la o versiune de Windows pe 64 de biți (suportată oficial) rezolvă mai mult decât simpla problemă a limitei de memorie RAM menționate frecvent. Această tranziție elimină restricția specifică de memorie fizică a clientului pe 32 de biți și permite sistemului de operare să utilizeze memoria RAM mapată peste pragul de 4 GB, cu condiția ca hardware-ul, firmware-ul, driverele și ediția sistemului de operare să ofere suportul necesar. În cazul PC-urilor mai vechi, aceste aspecte trebuie verificate, nu doar presupuse.
Având în vedere direcția strategică adoptată de Microsoft pentru platformele sale, această problemă a devenit de mult o chestiune de tranziție, nu o soluție de viitor.
Începând cu versiunea 2004 a Windows 10, noile sisteme OEM au fost obligate să utilizeze ediții Windows pe 64 de biți, deși Microsoft a continuat să ofere actualizări pentru sistemele existente pe 32 de biți și a menținut disponibilitatea mediilor de instalare pe 32 de biți prin canale non-OEM.
Sistemele Windows 11 și versiunile ulterioare sunt disponibile exclusiv pe 64 de biți.
Lecția de istorie nu este aceea că vechea explicație privind limita de 4 GB a fost un mit, ci faptul că aceasta descria doar un singur aspect al problemei.
Limita spațiului de adresare virtuală pe 32 de biți era reală.
Tehnologia PAE a demonstrat că limita memoriei fizice putea fi extinsă.
Totuși, edițiile client Windows au ales să nu permită utilizarea acestei extensii pentru memoria RAM obișnuită situată peste pragul de 4 GB, deoarece modul în care funcționau anumite drivere făcea ca o astfel de abordare să fie nesigură.
Această explicație mai precisă clarifică contradicția aparentă și explică de ce sistemele vechi puteau avea PAE activat, lăsând totodată memorie neutilizată.

Lasă un răspuns