Heeft u meer RAM nodig om 32-bits programma's uit te voeren op 64-bit Windows?

Heeft u meer RAM nodig om 32-bits programma's uit te voeren op 64-bit Windows? / Vraag de experts

De meeste computers worden vandaag geleverd met een 64-bits versie van Windows en vaak een minimale hoeveelheid RAM. Dit zet vraagtekens bij hoe goed deze systemen presteren. Dit is met name het geval wanneer gebruikers hun oudere 32-bits software op deze nieuwe computers willen uitvoeren.

Dat roept een interessante vraag op. Heeft u meer of minder RAM nodig Hoeveel RAM heeft u echt nodig? Hoeveel RAM heb je echt nodig? RAM is als kortetermijngeheugen. Hoe meer u multitaskt, hoe meer u nodig heeft. Ontdek hoeveel uw computer heeft, hoe u er het meeste uit kunt halen, of hoe u meer krijgt. Meer lezen om een ​​32-bits toepassing uit te voeren op een 64-bits versie van Windows Wat is 64-bits computergebruik? Wat is 64-bit computergebruik? De verpakking van een computer of computerhardware zit boordevol technische termen en badges. Een van de meest prominente is 64 bit. Lees verder ? Deze week komt Bruce Epper erachter.

Een lezer vraagt:

Klopt het dat 32-bits apps op een 64-bits Windows-systeem worden gebruikt? 1,5 keer meer geheugen vergeleken met het uitvoeren van de 32-bits app onder een 32-bits Windows-besturingssysteem?

Bruce's Antwoord:

We hebben eerder de voor- en nadelen besproken van het houden van alles 64-bit over het bord en enkele van de effecten van “mixen en matchen” Hoe Windows Prestaties wordt beïnvloed door Hardware & Software Hoe Windows Prestaties wordt beïnvloed door Hardware & Software In theorie zou 32-bits software het beter kunnen doen dan de 64-bits versie, afhankelijk van de hardware-instellingen. Klinkt ingewikkeld? We zijn hier om logisch te zijn en u te helpen de beste prestaties uit uw systeem te halen. Lees verder . Vandaag zullen we onderzoeken hoe 32-bit applicaties worden uitgevoerd op 64-bit versies van Windows.

Een 64-bits Windows-besturingssysteem kan geen 32-bits Windows-programma uitvoeren zonder wat extra hulp. Ze zijn gewoon te verschillend: van pointers en gegevenstypen tot hoe systeemaanroepen (hoe programma's de bronnen van het onderliggende besturingssysteem gebruiken). Je hebt een manier nodig om ze compatibel te maken.

WoW64 begrijpen

Windows gebruikt het WoW64 (Windows32 op Windows 64) -subsysteem om de verschillen te compenseren. Het werkt effectief als een 32-bits Windows mini-emulator op x64-systemen en een volwaardige emulator op Itanium (IA64) -systemen.

IA64-systemen vereisen een volledige emulator vanwege de verschillen in processorinstructies en geheugenpaginaformaten (4K in x86 en x64, 8K in IA64). Omdat de x64-processors alle instructies van de x86-processors hebben en hetzelfde geheugenpaginagrootte gebruiken, is er geen behoefte aan een volledige emulator.

In beide gevallen biedt WoW64 een interface tussen de 64-bits Windows-kernel en de 32-bits versie van ntdll.dll (deze bevat een lijst met de kern Windows-kernelfuncties), kernaanroepen onderscheppen en wijzigen zodat ze kunnen worden verwerkt door de native 64-bit-functies van de Windows-kernel.

Er zijn 3 DLL-bestanden gebruikt op x64 / IA64-systemen om dit te bereiken: wow64cpu.dll, wow64win.dll en wow64.dll. Hun functies zijn om de kenmerken van de processor te abstraheren en zorgen voor thunks (we komen ze later wel tegen) in win32k.sys die de “venster” functionaliteit en ntoskrnl.exe die de uitvoerende macht, kernel, geheugenbeheer, procesplanner (niet te verwarren met de taakplanner toegankelijk via het bedieningspaneel) en andere kernelementen van het besturingssysteem bevat.

Een thunk is een subroutine (denk aan deze als een reeks instructies die één taak uitvoeren) waarmee een programma een gemeenschappelijke subroutine of functie in het systeem kan uitvoeren.

In dit geval extraheert het de argumenten uit de call-stack van het 32-bits programma, converteert deze naar hun 64-bits tegenhangers en voert de 64-bits systeemaanroep uit. Bij terugkomst van het gesprek, zet het de 64-bit resultaten terug naar 32-bits en duwt ze terug naar de call stack van het programma zodat de beller het kan gebruiken.

Alle thunking wordt gedaan in gebruikersmodus (die beperkte machtigingen heeft) om twee redenen. Ten eerste, het minimaliseert de effecten van fouten in de code die zouden kunnen resulteren in een beveiligingslek, datacorruptie of een systeemcrash als het in de kernelmodus wordt uitgevoerd.

Ten tweede vermindert het de prestatie-impact die het zou hebben als het in de kernelmodus zou werken (de modus die wordt gebruikt door de essentiële onderdelen van het besturingssysteem) vanwege de hoge kosten bij het schakelen tussen gebruikersmodus en kernelmodus en terug.

Terugkomend op Itanium-systemen, zijn er enkele andere belangrijke verschillen om op te merken. IA64-systemen gebruiken twee extra bestanden. IA32exec.bin is de x86-software-emulator en Wowia32x.dll biedt de interface tussen WoW64 en de software-emulator.

Een 32-bits proces laadt deze bestanden en de 64-bits versie van ntdll.dll. Dit zijn de enige 64-bits binaire bestanden die mogelijk voorafgaand aan Windows 7 in een 32-bits proces zijn geladen. Windows 7 en hoger hebben ook nog een DLL, apisetschema.dll, die in alle processen wordt geladen.

Wanneer een 32-bits proces wordt gestart, wordt Wow64.dll geladen, dat op zijn beurt de 32-bits versie van ntdll.dll en eventuele 32-bits DLL's laadt van % Systemroot% \ SysWOW64. De meeste van deze bestanden zijn identiek aan de binaire bestanden op een 32-bits systeem, hoewel sommige zijn herschreven om zich anders te gedragen onder WOW64.

Als we naar de lijst met DLL's kijken die we hebben geladen, kunnen we zien dat er 9 DLL's zijn geladen in het proces onder Win64 die er niet zijn voor het Win32-systeem.

Nu kun je in de verleiding komen om de bestandsgroottes te bekijken, ze op te tellen en dat te gebruiken als basis voor hoeveel extra geheugen er wordt gebruikt, maar je zou eindigen met onnauwkeurige resultaten. Deze bestanden zijn, vanwege hun aard, ontworpen om gedeelde componenten te zijn en als een resultaat laadt het eerste bestand dat een DLL nodig heeft het in het geheugen.

Latere programma's die hetzelfde DLL-bestand vereisen, laden het volledige onderdeel niet in het geheugen. Ze krijgen een aanwijzer naar de reeds geladen component en wijzen RAM toe voor de aanvullende elementen die in het proces worden geladen.

Onze testopstelling

Om te zien wat er aan de hand is, heb ik twee virtuele machines met Windows 7 Ultimate opgezet met elk 2 GB RAM toegewezen. Een daarvan is de 32-bits versie en de andere is 64-bits. Beide hebben exact hetzelfde installatie- en patchproces doorlopen.

Nadat beide systemen waren gepatcht, schakelde ik het wisselbestand op beide uit om een ​​beter beeld te krijgen van het geheugengebruik door ervoor te zorgen dat RAM niet op schijf kon worden gepaged. Zodra dat voltooid was, werd LibreOffice 5.0.3.2 geïnstalleerd.

Een kopie van Sysinternals Process Explorer Process Explorer - De meest krachtige taakverzamelaar vervangen [Windows] Process Explorer - De meest krachtige taakverrekening vervangen [Windows] Laten we eerlijk zijn, de Windows Task Manager is niet zo geweldig voor het begrijpen en beheren van de processen die worden uitgevoerd op jouw computer. Zelfs op Windows 8, waar het sterk verbeterd is, kan de task manager niet in de buurt komen van de ... Lees meer werd ook op beide machines geplaatst. Dit is de tool die ik heb gebruikt om informatie over het geheugengebruik te verzamelen. De standaardinstelling van de kolom is gewijzigd, zodat ik de werkset en WS privégebruik kon bekijken.

Deze werksetnummers geven de hoeveelheid RAM weer die wordt gebruikt door de programma's. Het werd wat ingewikkelder door de hoeveelheid geheugen te weerspiegelen die door gedeelde bibliotheken wordt gebruikt, zelfs als ze al door een ander proces waren geladen. Hierdoor is het mogelijk om een ​​totaal te krijgen als u de volledige kolom toevoegt groter dan geïnstalleerd RAM. De werkset is nog steeds de beste meter voor precies hoeveel geheugen nodig is voor een proces.

De processen die we onderzoeken staan ​​ook niet alleen. De verschillende LibreOffice-programma's starten een ander proces, soffice.exe, dat nog een ander proces zal uitvoeren, soffice.bin. We moeten naar de totalen van alle drie de processen kijken om het effectieve geheugengebruik van elk programma te zien.

Voor de eerste test heb ik Writer, Calc en Impress individueel geopend om te kijken hoeveel geheugen ze verbruiken zonder dat er gegevens worden geladen en geëxporteerd uit de gegevensverwerker. Met Calc en Impress had ik respectievelijk een 3.7 MB .xls-bestand en een 3.9 MB .pptx-bestand geopend en het nieuwe geheugengebruik vastgelegd. De resultaten zijn te zien in de onderstaande tabel. Alle gegevens staan ​​in KB.

De grote verrassing vond plaats met Impress. Zonder een document gebruikte het 4,1% meer RAM op het 64-bits systeem en 9,9% minder met het document geladen. Ik heb een paar andere presentaties opgegraven en had vergelijkbare resultaten met ze allemaal. Het 64-bits systeem gebruikte uiteindelijk minder RAM dan het 32-bits systeem.

Dus, hebben de 64-bits versies van Windows meer RAM nodig dan hun 32-bit-tegenhangers bij het uitvoeren van 32-bits apps? In het algemeen, ja.

Maar moet je je RAM-geheugen upgraden? Waarschijnlijk niet. Het verschil werkelijk is niet zo enorm. Het is zeker niet 1,5 keer anders.

Ontdek meer over: 64-bit computergeheugen, Windows.