Kent Friis wrote:
> Den Thu, 28 May 2009 14:11:39 +0000 (UTC) skrev Klaus Ellegaard:
>> Den enkelte proces' adresserum bliver ikke større eller mindre -
>> uanset om du kører PAE eller ej, og der vil heller ikek være
>> forskel på server-systemerne hvad det angår. Det er 32bit-grænsen,
>> der viser sit grimme hoved der.
>
> Er PAE ikke bare en førstørret address table? Altså ligesom man i
> de gamle 16-bit dage kunne adressere mere end 64 KB RAM[1], ved brug
> af segment-registrene?
>
Segment-registrene har INTET med sagen at gøre.
Det handler om det næste niveau i x86-arkitekturens adresseberegninger:
Ved hjælp af "page-tabellerne" kan de 4GB virtuelle adresser der er til
rådighed for et program (hvoraf 1GB eller 2GB bruges til systemkernen,
resten til programmet) mappes til en vilkårlig delmængde af de fysiske
adresser på maskinen. Med PAE øges det fysiske adresserum som CPU-en kan
adressere fra 4GB til over 1TB og dermed den mængde fysisk RAM som kan
fordeles mellem programmerne.
Altså kan den adresse som i program nr. 4 er kendt som "5MB fra 0" i
virkeligheden være den RAM-transistor som sidder på adresse "100MB fra
0", "2.6 GB fra 0" eller "5.7 GB fra 0" med PAE, mens den 3de mulighed
ikke findes uden PAE.
Når program nr. 4 så får lyst til at læse fra/til f.eks. disk eller
netkort fra denne adresse, så skal disk- eller netværks- chippen i
computeren tilgå den fysiske RAM som svarer hertil ved at sende adressen
bagud gennem PCI-bussen til bundkortets nordbro . Og her opstår så
problemet: Hvis den tekniker som har konstrueret chippen, kortet eller
driveren ikke har testet sin opfindelse på en maskine med 6GB RAM og et
OS der faktisk bruger alle 6GB, så er der en oplagt risiko for at
chippen i stedet tilgår en forkert del af hukkommelsen i stedet for "5.7
GB fra 0" og derved laver totalt kludder i noget RAM som tilhører et
andet program eller sender/gemmer noget som ikke har med det rigtige
indhold at gøre.
Før XP Service Pack 2 (og altså også i Windows 2000) var PAE kun aktiv
på de dengang dyre og sjældne maskiner med over 4GB RAM, så mange
teknikere havde slet ikke sådan en maskine at teste på og kun de bedste
kort blev solgt til dem der var villige til også at betale for mere end
4GB RAM, så mange chip- og kort- byggere slap af sted med drivere og
kort som ikke fungerede med PAE.
Men da DEP funktionen i nyere CPU-er kun kan slås til ved at køre med
PAE (også med meget mindre RAM), så var 32 bit XP Service Pack 2 nødt
til at slå PAE til pr. default, og så opdagede Microsoft at tusindvis af
PC-er gik i totalt smadder (de crashede og korrumperede harddisken med
forkerte skrivninger etc.) allerede under beta-testen. Så for at redde
situationen uden at skulle vente på at alverdens drivere blev testet og
tilrettet indsatte de en begrænsning: Hvis Windows-licensen ikke er til
serverudgaven, så bruges fysiske adresser over 4GB slet ikke.
Dette betyder at med 32 bit XP SP2/SP3 og måske nogle udgaver af 32 bit
Vista, så kan man kun tilgå den del af ens RAM som er tildelt fysiske
front side bus adresser under 4GB.
Da nogle kort (f.eks. grafikkort, men også andre) selv skal optræde som
hukkommelses adresser for at man hurtigt kan flytte data til og fra dem
er en del af front-side-bus adresserne lige under 4GB omdirigeret fra
RAM-klodserne til kortene. Den RAM som derved bliver utilgængelig er
måske / måske ikke (det kommer an på bundkortet) tilgængelig over 4GB
grænsen, som om man havde det mere RAM i maskinen. Men dette kan altså
hverken udnyttes af 32 bit systemer uden PAE eller af 32 bit XP SP2/SP3.
Om 32 bit Vista kan er et åbent spørgsmål.
HELT UAFHÆNGIGT af ovenstående tekniske begrænsninger har NT-baseret
Windows (herunder 2000/XP/2003/Vista/2008/Win7/2008R2) altid haft en
licensbegrænsning, hvor det maksimale antal CPU-er og den maksimale RAM
man kan bruge er begrænset af hvor mange penge man betalte for sin
Windows-licens. På server-udgaverne af Windows står maksgrænserne ofte
tydeligt på licensklistermærket, mens det for desktop-udgaverne skal
læses mellem det med småt.
> Så hvis en process er begrænset til 2 GB, må det vel være en
> OS-begrænsning? Hvis OS'et tillader det, er der så noget i vejen
> for at have 2 GB per segment-register?
>
32-bit Windows (og de fleste andre 32-bit systemer) kører med 4GB pr.
segmentregister, og lader (næsten) alle segmenterne pege på virtuel
adresse 0, så man kun behøver at tænke på page-tabellerne.
--
Jakob Bøhm, M.Sc.Eng. * jb@danware.dk * direct tel:+45-45-90-25-33
Netop Solutions A/S * Bregnerodvej 127 * DK-3460 Birkerod * DENMARK
http://www.netop.com * tel:+45-45-90-25-25 * fax:+45-45-90-25-26
Information in this mail is hasty, not binding and may not be right.
Information in this posting may not be the official position of Netop
Solutions A/S, only the personal opinions of the author.