Annons

De flesta datorer idag levereras med en 64-bitarsversion av Windows, och ofta en minimal mängd RAM. Detta ifrågasätter hur väl dessa system fungerar. Detta gäller särskilt när användare vill köra sin äldre 32-bitars programvara på dessa nya datorer.

Vilket väcker en intressant fråga. Gör du behöver mer eller mindre RAM Hur mycket RAM-minne behöver du egentligen?RAM är som korttidsminne. Ju mer du multitaskar, desto mer behöver du. Ta reda på hur mycket din dator har, hur du får ut det mesta av den eller hur du får ut mer. Läs mer för att köra en 32-bitars applikation på en 64-bitarsversion av Windows Vad är 64-bitars beräkning?Förpackningen av en dator eller datorhårdvara kryllar av tekniska termer och märken. En av de mer framträdande är 64-bitars. Läs mer ? Den här veckan får Bruce Epper reda på det.

En läsare frågar:

Är det sant att köra 32-bitars appar på ett 64-bitars Windows-system förbrukar 1,5 gånger mer minne jämfört med att köra 32-bitarsappen under ett 32-bitars Windows-operativsystem?

instagram viewer

Bruces svar:

Vi har tidigare diskuterat fördelar och nackdelar med att hålla allt 64-bitars över hela linjen och några av de effekter av att "mixa och matcha" Hur Windows-prestanda påverkas av hårdvara och programvaraI teorin kan 32-bitars programvara överträffa sin 64-bitars motsvarighet, beroende på hårdvaruinställningen. Låter det komplicerat? Vi är här för att vara vettiga och hjälpa dig att få ut bästa möjliga prestanda ur ditt system. Läs mer . Idag ska vi undersöka hur 32-bitars applikationer körs på 64-bitarsversioner av Windows.

Ett 64-bitars Windows-operativsystem kan inte köra ett 32-bitars Windows-program utan extra hjälp. De är helt enkelt för olika: från pekare och datatyper, till hur systemet anropar (hur program använder resurserna i det underliggande operativsystemet). Du behöver något sätt att göra dem kompatibla.

Förstå WoW64

Windows använder delsystemet WoW64 (Windows32 på Windows64) för att kompensera för skillnaderna. Den fungerar effektivt som en 32-bitars Windows mini-emulator på x64-system och en fullfjädrad emulator på Itanium (IA64)-system.

IA64-system kräver en fullständig emulator på grund av skillnaderna i processorinstruktioner och minnesstorlekar (4K i x86 och x64, 8K i IA64). Eftersom x64-processorerna har alla instruktioner för x86-processorerna och använder samma minnesstorlek, behöver den inte en komplett emulator.

I båda fallen tillhandahåller WoW64 ett gränssnitt mellan 64-bitars Windows-kärnan och 32-bitarsversionen av ntdll.dll (detta innehåller en lista över kärnan Windows kärnfunktioner), avlyssna kärnanrop och ändra dem så att de kan bearbetas av de inbyggda 64-bitarsfunktionerna som tillhandahålls av Windows kärna.

Det finns 3 DLL-filer som används på x64/IA64-system för att uppnå detta: wow64cpu.dll, wow64win.dll och wow64.dll. Deras funktioner är att abstrahera processoregenskaperna och ge thunks (vi kommer till dem senare) till win32k.sys som tillhandahåller "fönster"-funktionen och ntoskrnl.exe som innehåller executive, kärna, minneshanterare, processschemaläggare (inte att förväxla med uppgiftsschemaläggaren som är tillgänglig från kontrollpanelen) och andra kärnelement i driften systemet.

laddade-dll-filer

En thunk är en subrutin (tänk på dessa som en serie instruktioner som utför en enda uppgift) som gör att ett program kan exekvera en vanlig subrutin eller funktion i systemet.

I det här fallet extraherar den argumenten från 32-bitarsprogrammets anropsstack, konverterar dem till deras 64-bitars motsvarigheter och gör 64-bitars systemanrop. När den kommer tillbaka från samtalet kommer den att konvertera 64-bitarsresultaten tillbaka till 32-bitar och skjuta tillbaka dem till programmets anropsstack för anroparen att använda.

All thunking görs i användarläge (som har begränsade behörigheter) av två anledningar. För det första minimerar det effekterna av buggar i koden som kan resultera i ett säkerhetshål, datakorruption eller en systemkrasch om den körs i kärnläge.

För det andra minskar det prestandapåverkan det skulle ha om det körs i kärnläge (läget som används av de väsentliga delarna av operativsystemet) på grund av de omkostnader som är involverade när man växlar mellan användarläge och kärnläge och tillbaka.

Om vi ​​går tillbaka till Itanium-system finns det några andra viktiga skillnader att notera. IA64-system använder ytterligare två filer. IA32exec.bin är x86-programemulatorn och Wowia32x.dll tillhandahåller gränssnittet mellan WoW64 och programvaruemulatorn.

En 32-bitars process kommer att ladda dessa filer såväl som 64-bitarsversionen av ntdll.dll. Dessa är de enda 64-bitars binärfiler som kan laddas in i en 32-bitars process före Windows 7. Windows 7 och senare har också en annan DLL, apisetschema.dll, som kommer att laddas in i alla processer.

processutforskare

När en 32-bitars process startas kommer den att ladda Wow64.dll som i sin tur laddar 32-bitarsversionen av ntdll.dll och eventuella nödvändiga 32-bitars DLL: er från %systemrot%\SysWOW64. De flesta av dessa filer är identiska med binärfilerna på ett 32-bitarssystem även om vissa har skrivits om för att bete sig annorlunda under WOW64.

När vi tittar på listan över laddade DLL: er kan vi se att det finns 9 DLL: er laddade under Win64 som inte finns där för Win32-systemet.

Nu kan du bli frestad att titta på filstorlekarna, lägga ihop dem och använda det som din grund för hur mycket extra minne som används, men du skulle sluta med felaktiga resultat. Dessa filer, till sin natur, är designade för att vara delade komponenter och som ett resultat laddar den första filen som kräver en DLL in den i minnet.

Efterföljande program som kräver samma DLL laddar inte in hela komponenten i minnet. De får en pekare till den redan laddade komponenten och allokerar RAM för de ytterligare element som laddas in i processen.

Våra testinställningar

För att se vad som händer har jag ställt in två virtuella maskiner som kör Windows 7 Ultimate med 2 GB RAM tilldelat till var och en. En av dem är 32-bitarsversionen och den andra är 64-bitars. Båda gick igenom exakt samma installations- och korrigeringsprocess.

Efter att båda systemen patchats inaktiverade jag växlingsfilen på båda för att få en bättre bild av minnesanvändningen genom att säkerställa att RAM inte kunde sökas ut till disken. När det var klart installerades LibreOffice 5.0.3.2.

lo-beräkn

En kopia av Sysinternals Process Explorer Process Explorer - den mest kraftfulla ersättningen av Task Manager [Windows]Låt oss vara ärliga, Windows Task Manager är inte så bra för att förstå och hantera processerna som körs på din dator. Även på Windows 8, där det är mycket förbättrat, kan aktivitetshanteraren inte komma i närheten av... Läs mer placerades också på båda maskinerna. Detta är verktyget jag använde för att samla information om minnesanvändning. Standardinställningen för kolumn ändrades så att jag kunde titta på Working Set och WS Private-användning.

Dessa arbetsuppsättningsnummer återspeglar mängden RAM som används av programmen. Det komplicerade det lite ytterligare genom att återspegla mängden minne som används av delade bibliotek även om de redan laddades av en annan process. På grund av detta, om du lägger till hela kolumnen, är det möjligt att sluta med en total större än installerat RAM. Arbetsuppsättningen är fortfarande den bästa mätaren för exakt hur mycket minne som krävs för en process.

De processer vi undersöker är inte heller fristående. De olika LibreOffice-programmen startar en annan process, soffice.exe, som kommer att köra ännu en process, soffice.bin. Vi måste titta på summan av alla tre processerna för att se den effektiva minnesanvändningen för varje program.

För det första testet öppnade jag helt enkelt Writer, Calc och Impress individuellt för att titta på hur mycket minne de förbrukar utan att någon data laddas och exporterade data från Process Explorer. Med Calc och Impress hade jag öppnat en 3,7 MB .xls-fil respektive 3,9 MB .pptx-fil och registrerat den nya minnesanvändningen. Resultaten kan ses i tabellen nedan. All data finns i KB.

minnesanvändning

Den stora överraskningen inträffade med Impress. Utan ett dokument använde den 4,1 % mer RAM på 64-bitarssystemet och 9,9 % mindre med dokumentet laddat. Jag grävde fram några andra presentationer och fick liknande resultat med dem alla. 64-bitarssystemet slutade använda mindre RAM än 32-bitarssystemet.

Så, kräver 64-bitarsversionerna av Windows mer RAM än sina 32-bitars motsvarigheter när de kör 32-bitars appar? I allmänhet, ja.

Men behöver du uppgradera ditt RAM? Antagligen inte. Skillnaden verkligen är inte så stor. Det är verkligen inte 1,5 gånger annorlunda.

Bruce har lekt med elektronik sedan 70-talet, datorer sedan tidigt 80-tal och svarat på frågor om teknik som han inte har använt eller sett på hela tiden. Han irriterar sig också genom att försöka spela gitarr.