Annonse
De fleste datamaskiner leveres i dag med en 64-biters versjon av Windows, og ofte en minimal mengde RAM. Dette bringer spørsmål ved hvor godt disse systemene fungerer. Dette gjelder spesielt når brukere ønsker å kjøre den gamle 32-biters programvaren på disse nye datamaskinene.
Noe som reiser et interessant spørsmål. Gjør du trenger mer eller mindre RAM Hvor mye RAM trenger du virkelig?RAM er som korttidsminne. Jo mer du multitasker, jo mer trenger du. Finn ut hvor mye datamaskinen din har, hvordan du får mest mulig ut av det, eller hvordan du får mer ut av det. Les mer å kjøre en 32-bits applikasjon på en 64-biters versjon av Windows Hva er 64-biters databehandling?Emballasjen til en datamaskin eller datamaskinvare er full av tekniske termer og merker. En av de mer fremtredende er 64-biters. Les mer ? Denne uken finner Bruce Epper ut.
En leser spør:
Er det sant at det å kjøre 32-biters apper i et 64-biters Windows-system bruker? 1,5 ganger mer minne sammenlignet med å kjøre 32-biters-appen under et 32-biters Windows-operativsystem?
Bruces svar:
Vi har tidligere diskutert fordeler og ulemper med å holde alt 64-biters over hele linjen og noen av dem effekter av "blanding og matching" Hvordan Windows-ytelsen påvirkes av maskinvare og programvareI teorien kan 32-biters programvare overgå 64-biters motstykke, avhengig av maskinvareoppsett. Høres komplisert ut? Vi er her for å være fornuftige og hjelpe deg med å få den beste ytelsen ut av systemet ditt. Les mer . I dag skal vi undersøke hvordan 32-biters applikasjoner kjører på 64-biters versjoner av Windows.
Et 64-biters Windows-operativsystem kan ikke kjøre et 32-biters Windows-program uten noe ekstra hjelp. De er litt for forskjellige: fra pekere og datatyper til hvordan systemanrop (hvordan programmer bruker ressursene til det underliggende operativsystemet). Du trenger en 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-minimulator på x64-systemer og en fullverdig emulator på Itanium (IA64) -systemer.
IA64-systemer krever en full emulator på grunn av forskjellene i prosessorinstruksjoner og minnesidestørrelser (4K i x86 og x64, 8K i IA64). Siden x64-prosessorene har alle instruksjonene til x86-prosessorene og bruker den samme minnesidestørrelsen, har den ikke behov for en full emulator.
I begge tilfeller gir WoW64 et grensesnitt mellom 64-biters Windows-kjernen og 32-bitersversjonen av ntdll.dll (denne inneholder en liste over kjernen Windows-kjernefunksjoner), oppfanger kjerneanrop og endrer dem slik at de kan behandles av de opprinnelige 64-bits funksjonene levert 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 prosessorens egenskaper og gi tunker (vi kommer til dem senere) inn i win32k.sys som gir "windows" -funksjonaliteten og ntoskrnl.exe som inneholder den utøvende, kjernen, minnebehandleren, prosessplanlegger (ikke forveksles med oppgaveplanleggeren tilgjengelig fra kontrollpanelet) og andre kjerneelementer i driften system.

En thunk er en subroutine (tenk på disse som en serie instruksjoner som utfører en enkelt oppgave) som lar et program utføre en felles subroutine eller funksjon i systemet.
I dette tilfellet trekker den ut argumentene fra 32-bits programmets anropsstabel, konverterer dem til sine 64-bits kolleger og foretar 64-biters systemanrop. Når du kommer tilbake fra samtalen, vil den konvertere 64-bits resultatene tilbake til 32-biter og skyve dem tilbake på programmets samtalebunke som den som ringer skal bruke.
All tunking gjøres i brukermodus (som har begrensede tillatelser) av to grunner. Først minimerer den effekten av feil i koden som kan føre til et sikkerhetshull, datakorrupsjon eller et systemkrasj hvis det kjøres i kjernemodus.
For det andre reduserer den ytelsen som det vil ha hvis du kjører i kjernemodus (modus brukt av viktige deler av operativsystemet) på grunn av omkostningen som er involvert når du veksler mellom brukermodus og kjernemodus og tilbake.
Når det gjelder Itanium-systemer, er det noen andre viktige forskjeller å merke seg. IA64-systemer bruker to tilleggsfiler. IA32exec.bin er x86-programvareemulator og Wowia32x.dll gir grensesnittet mellom WoW64 og programvareemulatoren.
En 32-bits prosess vil laste inn disse filene så vel som 64-biters versjonen av ntdll.dll. Dette er de eneste 64-biters binærene som kan lastes inn i en 32-bits prosess før Windows 7. Windows 7 og nyere har også en annen DLL, apisetschema.dll, som vil lastes inn i alle prosesser.

Når en 32-bit prosess startes, vil den laste Wow64.dll som igjen laster 32-biters versjonen av ntdll.dll og eventuelle nødvendige 32-biters DLL fra % Systemroot% \ SysWOW64. De fleste av disse filene er identiske med binærene på et 32-biters system, selv om noen er skrevet om for å oppføre seg annerledes under WOW64.
Ser vi på listen over DLL-er lastet, kan vi se at det er 9 DLL-er 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 brukes, men du vil ende opp med unøyaktige resultater. Disse filene er etter sin art designet for å være delte komponenter, og som et resultat laster den første filen som krever en DLL inn i minnet.
Påfølgende 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 er lastet inn i prosessen.
Testoppsettet vårt
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-biters versjonen og den andre er 64-biters. Begge gjennomgikk nøyaktig samme installasjons- og lappeprosess.
Etter at begge systemene var oppdatert, deaktiverte jeg byttefilen på begge for å få et bedre bilde av minnebruken ved å sikre at RAM ikke kunne pages ut til disk. Når dette var fullført ble LibreOffice 5.0.3.2 installert.

En kopi av Sysinternals Process Explorer Process Explorer - den kraftigste utskiftningen av oppgavebehandler [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, der det er mye forbedret, kan ikke oppgavebehandleren komme i nærheten av ... Les mer ble også plassert på begge maskinene. Dette er verktøyet jeg brukte for å samle informasjon om minnebruk. Standardkolonneoppsettet ble endret slik at jeg kunne se på bruken Working Set og WS Private.
Disse arbeidsinnstilte tallene gjenspeiler mengden RAM som brukes av programmene. Det kompliserte litt lenger ved å reflektere mengden minne som ble brukt av delte biblioteker, selv om de allerede var lastet 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 fremdeles den beste måleren på nøyaktig hvor mye minne som kreves for en prosess.
Prosessene vi undersøker står heller ikke alene. De forskjellige LibreOffice-programmene starter en annen prosess, soffice.exe, som vil utføre enda en prosess, soffice.bin. Vi må se på summen av alle tre prosessene for å se effektiv minnebruk av hvert program.
For den første testen åpnet jeg ganske enkelt Writer, Calc og Impress hver for å se på hvor mye minne de bruker uten at data lastes inn og eksporterte dataene fra Process Explorer. Med Calc og Impress hadde jeg åpnet henholdsvis en 3,7 MB .xls-fil og 3,9 MB .pptx-fil og registrert den nye minnebruken. Resultatene kan sees i tabellen nedenfor. Alle data er i KB.

Den store overraskelsen skjedde med Impress. Uten et dokument brukte den 4,1% mer RAM på 64-bits systemet og 9,9% mindre med dokumentet lastet. Jeg gravde frem noen få andre presentasjoner og hadde lignende resultater med dem alle. 64-biters systemet endte opp med å bruke mindre RAM enn 32-biters systemet.
Krever 64-biters versjoner av Windows mer RAM enn 32-biters kolleger når du kjører 32-biters apper? Generelt, ja.
Men trenger du å oppgradere RAM? Sannsynligvis ikke. Forskjellen egentlig er ikke så massiv. Det er absolutt ikke 1,5 ganger annerledes.
Bruce har lekt med elektronikk siden 70-tallet, datamaskiner siden begynnelsen av 80-tallet, og svarer nøyaktig på spørsmål om teknologi han ikke har brukt eller sett hele tiden. Han irriterer seg også ved å prøve å spille gitar.