Advertentie
De meeste computers worden tegenwoordig geleverd met een 64-bits versie van Windows en vaak met een minimale hoeveelheid RAM. Dit roept de vraag op hoe goed deze systemen presteren. Dit geldt met name wanneer gebruikers hun oude 32-bits software op deze nieuwe computers willen uitvoeren.
Dat roept een interessante vraag op. Doe je meer of minder RAM nodig hebben Hoeveel RAM heb je echt nodig?RAM is als kortetermijngeheugen. Hoe meer je multitaskt, hoe meer je nodig hebt. Ontdek hoeveel uw computer heeft, hoe u er het maximale uit kunt halen of hoe u meer kunt krijgen. Lees verder om een 32-bits toepassing uit te voeren op een 64-bits versie van Windows Wat is 64-bit computing?De verpakking van een computer of computerhardware zit vol met technische termen en badges. Een van de meer prominente is 64-bit. Lees verder ? Deze week komt Bruce Epper erachter.
Een lezer vraagt:
Het is waar dat het uitvoeren van 32-bits apps op een 64-bits Windows-systeem verbruikt 1,5 keer meer geheugen vergeleken met het uitvoeren van de 32-bits app onder een 32-bits Windows-besturingssysteem?
Antwoord van Bruce:
We hebben eerder de voor- en nadelen besproken van het 64-bits over de hele linie houden en sommige van de effecten van "mixen en matchen" Hoe Windows-prestaties worden beïnvloed door hardware en softwareIn theorie zou 32-bits software het beter kunnen doen dan zijn 64-bits tegenhanger, 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 gaan we onderzoeken hoe 32-bits applicaties worden uitgevoerd op 64-bits versies van Windows.
Een 64-bits Windows-besturingssysteem kan zonder enige extra hulp geen 32-bits Windows-programma uitvoeren. Ze zijn gewoon te verschillend: van verwijzingen 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-subsysteem (Windows32 op Windows64) om de verschillen te compenseren. Het werkt effectief als een 32-bit 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 geheugenpaginagroottes (4K in x86 en x64, 8K in IA64). Omdat de x64-processors alle instructies hebben van de x86-processors en dezelfde geheugenpagina gebruiken, is er geen volledige emulator nodig.
In beide gevallen biedt WoW64 een interface tussen de 64-bits Windows-kernel en de 32-bits versie van ntdll.dll (dit bevat een lijst met de kern Windows-kernelfuncties), kernel-aanroepen onderscheppen en wijzigen zodat ze kunnen worden verwerkt door de native 64-bits functies van Windows kernel.
Hiervoor worden 3 DLL-bestanden gebruikt op x64 / IA64-systemen: wow64cpu.dll, wow64win.dll en wow64.dll. Hun functies zijn om de kenmerken van de processor te abstraheren en thunks (we komen er later op terug) in win32k.sys die de "window" -functionaliteit biedt en ntoskrnl.exe die de executive, kernel, geheugenmanager bevat, procesplanner (niet te verwarren met de Taakplanner die toegankelijk is via het Configuratiescherm) en andere kernelementen van het besturingssysteem systeem.
Een thunk is een subroutine (beschouw deze als een reeks instructies die een enkele taak uitvoeren) waarmee een programma een gemeenschappelijke subroutine of functie in het systeem kan uitvoeren.
In dit geval haalt het de argumenten uit de aanroepstack van het 32-bits programma, converteert ze naar hun 64-bits tegenhangers en voert het de 64-bits systeemaanroep uit. Bij terugkomst van het gesprek zet het de 64-bits resultaten terug naar 32-bits en duwt ze terug naar de oproepstack van het programma zodat de beller ze kan gebruiken.
Alle thunking wordt gedaan in gebruikersmodus (die beperkte rechten heeft) om twee redenen. Ten eerste minimaliseert het de effecten van bugs in de code die kunnen leiden tot een beveiligingslek, gegevensbeschadiging of een systeemcrash als het in de kernel-modus draait.
Ten tweede vermindert het de prestatie-impact die het zou hebben als het in de kernelmodus draait (de modus die door de essentiële onderdelen van het besturingssysteem wordt gebruikt) vanwege de overhead die nodig is bij het schakelen tussen gebruikersmodus en kernel-modus en terug.
Terugkomend op Itanium-systemen, zijn er nog 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 vóór Windows 7 in een 32-bits proces kunnen worden geladen. Windows 7 en hoger hebben ook een andere 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 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 geladen DLL's kijken, kunnen we zien dat er onder Win64 9 DLL's zijn geladen die er niet zijn voor het Win32-systeem.
Nu kom je misschien in de verleiding om naar de bestandsgroottes te kijken, ze bij elkaar op te tellen en die te gebruiken als basis voor hoeveel extra geheugen wordt gebruikt, maar je krijgt uiteindelijk onnauwkeurige resultaten. Deze bestanden zijn van nature ontworpen om gedeelde componenten te zijn en als gevolg hiervan laadt het eerste bestand waarvoor een DLL vereist is, het in het geheugen.
Latere programma's die dezelfde DLL nodig hebben, laden niet het volledige onderdeel in het geheugen. Ze krijgen een aanwijzer naar de reeds geladen component en wijzen RAM toe voor de extra elementen die in het proces worden geladen.
Onze testopstelling
Om te zien wat er aan de hand is, heb ik twee virtuele machines opgezet met Windows 7 Ultimate met elk 2 GB RAM toegewezen. Een daarvan is de 32-bits versie en de andere is 64-bits. Beiden hebben exact hetzelfde installatie- en patchproces doorlopen.
Nadat beide systemen waren gepatcht, heb ik het wisselbestand op beide uitgeschakeld om een beter beeld te krijgen van het geheugengebruik door ervoor te zorgen dat RAM niet naar schijf kon worden opgeroepen. Toen dat eenmaal voltooid was, werd LibreOffice 5.0.3.2 geïnstalleerd.
Een kopie van Sysinternals Process Explorer Process Explorer - De krachtigste vervanging van Taakbeheer [Windows]Laten we eerlijk zijn, Windows Taakbeheer is niet zo geweldig voor het begrijpen en beheren van de processen die op uw computer worden uitgevoerd. Zelfs op Windows 8, waar het veel verbeterd is, kan de taakbeheerder niet in de buurt komen van de ... Lees verder werd ook op beide machines geplaatst. Dit is de tool die ik heb gebruikt om informatie over geheugengebruik te verzamelen. De standaardkolomconfiguratie is gewijzigd, zodat ik kon kijken naar de werkset en WS Private-gebruik.
Deze werksetnummers weerspiegelen de hoeveelheid RAM die door de programma's wordt gebruikt. Het maakte het een beetje ingewikkelder door de hoeveelheid geheugen weer te geven die door gedeelde bibliotheken werd gebruikt, zelfs als ze al door een ander proces waren geladen. Hierdoor is het mogelijk om een totaal te krijgen als je de hele kolom toevoegt groter dan geïnstalleerde RAM. De werkset is nog steeds de beste maatstaf voor hoeveel geheugen er precies nodig is voor een proces.
De processen die we onderzoeken staan ook niet op zichzelf. 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 eenvoudig Writer, Calc en Impress afzonderlijk geopend om te kijken hoeveel geheugen ze verbruiken zonder dat er gegevens worden geladen en de gegevens worden geëxporteerd vanuit Process Explorer. Met Calc en Impress had ik respectievelijk een 3,7 MB .xls-bestand en 3,9 MB .pptx-bestand geopend en het nieuwe geheugengebruik geregistreerd. De resultaten zijn te zien in onderstaande tabel. Alle gegevens zijn in KB.
De grote verrassing deed zich voor bij 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 met alle vergelijkbare resultaten. Het 64-bits systeem gebruikte uiteindelijk minder RAM dan het 32-bits systeem.
Hebben de 64-bits versies van Windows dus meer RAM nodig dan hun 32-bits tegenhangers bij het uitvoeren van 32-bits apps? Over het algemeen wel.
Maar moet u uw RAM upgraden? Waarschijnlijk niet. Het verschil werkelijk is niet zo enorm. Het is zeker niet 1,5 keer anders.
Bruce speelt sinds de jaren 70 met elektronica, computers sinds het begin van de jaren 80 en beantwoordt nauwkeurig vragen over technologie die hij de hele tijd niet heeft gebruikt of gezien. Hij ergert zich ook door te proberen gitaar te spelen.