Trenger du mer RAM for å kjøre 32-biters programmer på 64-biters Windows?

Trenger du mer RAM for å kjøre 32-biters programmer på 64-biters Windows? / Spør ekspertene

De fleste datamaskiner leveres i dag med en 64-biters versjon av Windows, og ofte en minimal mengde RAM. Dette bringer spørsmålstegn ved hvor godt disse systemene utfører. Dette gjelder spesielt når brukere vil kjøre sin eldre 32-bits programvare på disse nye datamaskinene.

Som reiser et interessant spørsmål. Trenger du mer eller mindre RAM Hvor mye RAM trenger du egentlig? Hvor mye RAM trenger du egentlig? RAM er som korttidsminne. Jo mer du multitask, jo mer du trenger. Finn ut hvor mye datamaskinen har, hvordan du får mest mulig ut av det, eller hvordan du får mer. Les mer for å kjøre et 32-biters program på en 64-biters versjon av Windows Hva er 64-biters databehandling? Hva er 64-biters databehandling? Innpakningen av en datamaskin eller maskinvare er overfylt med tekniske vilkår og merker. En av de mest fremtredende er 64-bit. Les mer ? Denne uken finner Bruce Epper ut.

En leser spør:

Er det sant at kjører 32-biters apps på et 64-biters Windows-system forbruker 1,5 ganger mer minne sammenlignet med å kjøre 32-biters app under et 32-biters Windows-operativsystem?

Bruces svar:

Vi har tidligere diskutert fordeler og ulemper ved å holde alt 64-bit over hele linja og noen av effektene av “blande og matche” Hvordan Windows ytelse påvirkes av maskinvare og programvare Hvordan Windows ytelse påvirkes av maskinvare og programvare I teorien kan 32-bits programvare overgå 64-biters motpart, avhengig av maskinvareoppsettet. Høres komplisert? Vi er her for å gi mening og hjelpe deg med å få best mulig ytelse ut av systemet. Les mer . I dag skal vi undersøke hvordan 32-biters applikasjoner kjøres på 64-biters versjoner av Windows.

Et 64-biters Windows-operativsystem kan ikke kjøre et 32-biters Windows-program uten noen ekstra hjelp. De er bare for forskjellige: fra pekere og datatyper, til hvordan systemet samtaler (hvordan programmer bruker ressursene til det underliggende operativsystemet). Du trenger noen måte å gjøre dem kompatible.

Forstå WoW64

Windows bruker delsystemet WoW64 (Windows32 på Windows64) for å kompensere for forskjellene. Den fungerer effektivt som en 32-biters Windows mini-emulator på x64-systemer og en fullverdig emulator på Itanium (IA64) -systemer.

IA64-systemer krever en full emulator på grunn av forskjellene i prosessorinstruksjoner og minne sidestørrelser (4K i x86 og x64, 8K i IA64). Siden x64-prosessorene har alle instruksjonene til x86-prosessorene og bruker samme minnesidestørrelse, har det ikke behov for en full emulator.

I begge tilfeller gir WoW64 et grensesnitt mellom 64-biters Windows-kjernen og 32-bitersversjonen av ntdll.dll (dette inneholder en liste over kjernekjernens funksjoner i Windows), oppfanger kjerneanrop og endrer dem slik at de kan behandles av de innfødte 64-bit-funksjonene som tilbys av Windows-kjernen.

Det er 3 DLL-filer som brukes på x64 / IA64-systemer for å oppnå dette: wow64cpu.dll, wow64win.dll og wow64.dll. Deres funksjoner er å abstrahere prosessoregenskapene og gi dunks (vi kommer til dem senere) til win32k.sys som gir “vindu” funksjonalitet og ntoskrnl.exe som inneholder utøvende, kjerne, minnebehandler, prosessplanlegger (ikke forveksles med oppgaveplanleggeren tilgjengelig fra kontrollpanelet) og andre kjerneelementer i operativsystemet.

En thunk er en subrutine (tenk på disse som en rekke instruksjoner som utfører en enkelt oppgave) som gjør det mulig for et program å utføre en felles subrutine eller funksjon i systemet.

I dette tilfellet utpakkes argumentene fra 32-bits programets kallestak, konverterer dem til 64-biters motparter, og gjør 64-bits systemanrop. Ved retur fra samtalen, vil den konvertere 64-biters resultatene tilbake til 32-bits og skyve dem tilbake på programmets anropsstabel for den som ringer til å bruke.

All thunking er gjort i brukermodus (som har begrensede tillatelser) av to grunner. For det første minimerer det virkningen av feil i koden som kan resultere i et sikkerhetshull, datakorrupsjon eller et systemkrasj hvis det kjøres i kjernemodus.

For det andre reduserer det ytelsespåvirkningen det ville ha hvis det kjører i kjernemodus (modusen som brukes av de viktigste delene av operativsystemet) på grunn av overhead involvert når du bytter mellom brukermodus og kjernemodus og tilbake.

Å gå tilbake til Itanium-systemer, det er noen andre viktige forskjeller å merke seg. IA64-systemer bruker to ekstra filer. IA32exec.bin er x86-programvareemulatoren og Wowia32x.dll gir grensesnittet mellom WoW64 og programvareemulatoren.

En 32-bits prosess vil laste disse filene i tillegg til 64-bitersversjonen av ntdll.dll. Dette er de eneste 64 bitene som kan lastes inn i en 32-biters prosess før Windows 7. Windows 7 og nyere har også en annen DLL, apisetschema.dll, som lastes inn i alle prosesser.

Når en 32-biters prosess er startet, vil den laste Wow64.dll som igjen laster 32-bitersversjonen av ntdll.dll og eventuelle 32-biters DLL fra % Systemroot% \ SysWOW64. De fleste av disse filene er identiske med binærfilene på et 32-bits system, selv om noen har blitt omskrevet for å oppføre seg annerledes under WOW64.

Ser på listen over DLLer lastet vi kan se at det er 9 DLLer lastet i prosessen under Win64 som ikke er der for Win32-systemet.

Nå kan du bli fristet til å se på filstørrelsene, legge dem opp og bruke det som grunnlag for hvor mye ekstra minne som blir brukt, men du vil ende opp med unøyaktige resultater. Disse filene, av deres natur, er utformet for å være delte komponenter, og som et resultat laster den første filen som krever en DLL, den inn i minnet.

Senere programmer som krever samme DLL, laster ikke hele komponenten i minnet. De får en peker til den allerede lastede komponenten, og tildeler RAM for de ekstra elementene som lastes inn i prosessen.

Vår testoppsett

For å se hva som skjer, har jeg satt opp to virtuelle maskiner som kjører Windows 7 Ultimate med 2 GB RAM tildelt hver. En av dem er 32-bits versjonen og den andre er 64-bit. Begge gikk gjennom nøyaktig samme installasjon og patching prosess.

Etter at begge systemene ble oppdatert, deaktiverte jeg byttefilen på begge for å få et bedre bilde av minnesbruk ved å sikre at RAM ikke kunne bli plaget ut på disken. Når det var ferdig, ble LibreOffice 5.0.3.2 installert.

En kopi av Sysinternals Process Explorer Prosess Explorer - Den mest kraftfulle oppgavesjefens erstatning [Windows] Prosess Explorer - Den mest kraftige oppgavesjefen Erstatning [Windows] La oss være ærlige, Windows Task Manager er ikke så bra for å forstå og administrere prosessene som kjører på datamaskinen din. Selv på Windows 8, hvor det er mye bedre, kan oppgavebehandleren ikke komme nær ... Les mer ble også plassert på begge maskinene. Dette er verktøyet jeg brukte for å samle inn minneinformasjon. Standard kolonneoppsettet ble endret, slik at jeg kunne se på Brukesett og WS Privat bruk.

Disse arbeidsinnstillingene angir hvor mye RAM som brukes av programmene. Det kompliserte litt lenger ved å reflektere mengden minne som brukes av delte biblioteker, selv om de allerede var lastet inn av en annen prosess. På grunn av dette, hvis du legger til hele kolonnen, er det mulig å ende opp med totalt større enn installert RAM. Arbeidssettet er fortsatt den beste måleren av nøyaktig hvor mye minne som kreves for en prosess.

Prosessene vi undersøker er heller ikke stående alene. De forskjellige LibreOffice-programmene starter en annen prosess, soffice.exe, som vil utføre enda en prosess, soffice.bin. Vi må se på totalene for alle tre prosessene for å se effektiv minnebruk av hvert program.

For den første testen åpnet jeg bare Writer, Calc og Impress individuelt for å se hvor mye minne de forbruker uten at data blir lastet og eksportert data fra Process Explorer. Med Calc og Impress, hadde jeg åpnet en 3,7 MB .xls-fil og 3,9 MB .pptx-fil, og registrert den nye minnesbruken. Resultatene kan ses i tabellen nedenfor. Alle data er i KB.

Den store overraskelsen skjedde med Impress. Uten et dokument brukte det 4,1% mer RAM på 64-bits systemet og 9,9% mindre med dokumentet lastet. Jeg gravd opp noen andre presentasjoner og hadde lignende resultater med dem alle. 64-bitersystemet endte med å bruke mindre RAM enn 32-bits systemet.

Så, krever 64-biters versjoner av Windows mer RAM enn sine 32-biters kolleger når de kjører 32-bits apps? Generelt, ja.

Men trenger du å oppgradere din RAM? Sannsynligvis ikke. Forskjellen egentlig er ikke så massiv. Det er absolutt ikke 1,5 ganger forskjellig.

Utforsk mer om: 64-bit, dataminne, Windows.