Reklama
Większość komputerów jest obecnie wyposażona w 64-bitową wersję systemu Windows i często minimalną ilość pamięci RAM. To stawia pod znakiem zapytania skuteczność tych systemów. Jest to szczególnie ważne, gdy użytkownicy chcą uruchamiać starsze oprogramowanie 32-bitowe na tych nowych komputerach.
Co rodzi interesujące pytanie. Czy ty potrzebujesz więcej lub mniej pamięci RAM Ile pamięci RAM naprawdę potrzebujesz?RAM jest jak pamięć krótkotrwała. Im więcej pracujesz wielozadaniowo, tym więcej potrzebujesz. Dowiedz się, ile ma komputer, jak najlepiej z niego korzystać lub jak uzyskać więcej. Czytaj więcej uruchomić 32-bitową aplikację na 64-bitowa wersja systemu Windows Co to jest przetwarzanie 64-bitowe?Opakowanie komputera lub sprzętu komputerowego jest pełne technicznych warunków i identyfikatorów. Jednym z bardziej znanych jest 64-bit. Czytaj więcej ? W tym tygodniu dowiaduje się Bruce Epper.
Czytelnik pyta:
Czy to prawda, że uruchamianie 32-bitowych aplikacji w 64-bitowym systemie Windows zużywa
1,5 razy więcej pamięci w porównaniu do uruchamiania 32-bitowej aplikacji w 32-bitowym systemie operacyjnym Windows?
Odpowiedź Bruce'a:
Wcześniej omówiliśmy zalety i wady związane z utrzymywaniem wszystkiego w wersji 64-bitowej i niektórych efekty „mieszania i dopasowywania” Wpływ sprzętu i oprogramowania na wydajność systemu WindowsTeoretycznie 32-bitowe oprogramowanie może przewyższać swój 64-bitowy odpowiednik, w zależności od konfiguracji sprzętowej. Brzmi skomplikowanie? Jesteśmy tutaj, aby mieć sens i pomóc Ci uzyskać najlepszą wydajność Twojego systemu. Czytaj więcej . Dzisiaj zbadamy, w jaki sposób 32-bitowe aplikacje działają w 64-bitowych wersjach systemu Windows.
64-bitowy system operacyjny Windows nie może uruchomić 32-bitowego programu Windows bez dodatkowej pomocy. Różnią się one zbytnio: od wskaźników i typów danych, po wywołania systemowe (jak programy wykorzystują zasoby podstawowego systemu operacyjnego). Potrzebujesz sposobu na ich kompatybilność.
Zrozumienie WoW64
System Windows używa podsystemu WoW64 (Windows32 w systemie Windows64) w celu kompensacji różnic. Działa skutecznie jako 32-bitowy mini-emulator Windows w systemach x64 i pełnoprawny emulator w systemach Itanium (IA64).
Systemy IA64 wymagają pełnego emulatora ze względu na różnice w instrukcjach procesorów i rozmiarach stron pamięci (4K w x86 i x64, 8K w IA64). Ponieważ procesory x64 mają wszystkie instrukcje procesorów x86 i używają tego samego rozmiaru strony pamięci, nie wymaga pełnego emulatora.
W obu przypadkach WoW64 zapewnia interfejs między 64-bitowym jądrem systemu Windows a 32-bitową wersją ntdll.dll (zawiera listę rdzenia Funkcje jądra systemu Windows), przechwytywanie wywołań jądra i modyfikowanie ich, aby mogły być przetwarzane przez natywne funkcje 64-bitowe zapewniane przez system Windows jądro.
Aby to osiągnąć, w systemach x64 / IA64 zastosowano 3 pliki DLL: wow64cpu.dll, wow64win.dll i wow64.dll. Ich funkcje mają na celu wyodrębnienie właściwości procesora i dostarczenie thunks (dojdziemy do nich później) do win32k.sys, który zapewnia funkcję „okna” i ntoskrnl.exe, który zawiera program wykonawczy, jądro, menedżer pamięci, harmonogram procesu (nie mylić z Harmonogramem zadań dostępnym z Panelu sterowania) i innymi podstawowymi elementami działania system.
Thunk jest podprogramem (pomyśl o nich jako serią instrukcji wykonujących jedno zadanie), który pozwala programowi wykonać wspólną podprogram lub funkcję w systemie.
W takim przypadku wyodrębnia argumenty ze stosu wywołań 32-bitowego programu, konwertuje je na ich 64-bitowe odpowiedniki i wykonuje 64-bitowe wywołanie systemowe. Po powrocie z wywołania konwertuje 64-bitowe wyniki z powrotem na 32-bitowe i wypycha je z powrotem na stos wywołań programu, z którego może skorzystać osoba dzwoniąca.
Cała praca jest wykonywana w trybie użytkownika (który ma ograniczone uprawnienia) z dwóch powodów. Po pierwsze, minimalizuje skutki błędów w kodzie, które mogą spowodować lukę w zabezpieczeniach, uszkodzenie danych lub awarię systemu, jeśli działają w trybie jądra.
Po drugie, zmniejsza wpływ na wydajność, jaki miałby, gdyby działał w trybie jądra (tryb używany przez niezbędne części systemu operacyjnego) z powodu narzutu związanego z przełączaniem między tryb użytkownika i tryb jądra i z powrotem.
Wracając do systemów Itanium, należy zauważyć kilka innych ważnych różnic. Systemy IA64 używają dwóch dodatkowych plików. IA32exec.bin to emulator oprogramowania x86, a Wowia32x.dll zapewnia interfejs między WoW64 a emulatorem oprogramowania.
Proces 32-bitowy załaduje te pliki, a także 64-bitową wersję ntdll.dll. Są to jedyne 64-bitowe pliki binarne, które można załadować do procesu 32-bitowego przed Windows 7. Windows 7 i nowsze wersje mają także inną bibliotekę DLL, apisetschema.dll, która zostanie załadowana do wszystkich procesów.
Po uruchomieniu procesu 32-bitowego ładuje plik Wow64.dll, który z kolei ładuje 32-bitową wersję pliku ntdll.dll i wszelkie niezbędne 32-bitowe biblioteki DLL z % systemroot% \ SysWOW64. Większość z tych plików jest identyczna z plikami binarnymi w systemie 32-bitowym, chociaż niektóre zostały przepisane, aby zachowywać się inaczej pod WOW64.
Patrząc na listę załadowanych bibliotek DLL, widzimy, że w procesie Win64 załadowano 9 bibliotek DLL, których nie ma w systemie Win32.
Teraz możesz ulec pokusie, aby spojrzeć na rozmiary plików, dodać je i wykorzystać jako podstawę do wykorzystania dodatkowej pamięci, ale skończyłoby się to niedokładnymi wynikami. Pliki te ze swej natury są zaprojektowane jako współdzielone komponenty, w wyniku czego pierwszy plik wymagający biblioteki DLL ładuje go do pamięci.
Kolejne programy wymagające tej samej biblioteki DLL nie ładują całego komponentu do pamięci. Otrzymują wskaźnik do już załadowanego komponentu i przydzielają pamięć RAM dla dodatkowych elementów, które są ładowane do procesu.
Nasza konfiguracja testowa
Aby zobaczyć, co się dzieje, skonfigurowałem dwie maszyny wirtualne z systemem Windows 7 Ultimate z przydzielonymi 2 GB pamięci RAM. Jedna z nich to wersja 32-bitowa, a druga to wersja 64-bitowa. Oba przeszły dokładnie ten sam proces instalacji i łatania.
Po załataniu obu systemów wyłączyłem plik wymiany na obu, aby uzyskać lepszy obraz wykorzystania pamięci, upewniając się, że RAM nie może zostać przeniesiony na dysk. Po zakończeniu zostanie zainstalowany LibreOffice 5.0.3.2.
Kopia Sysinternals Process Explorer Process Explorer - najpotężniejsza wymiana Menedżera zadań [Windows]Bądźmy szczerzy, Menedżer zadań Windows nie jest świetny do zrozumienia i zarządzania procesami uruchomionymi na twoim komputerze. Nawet w Windows 8, gdzie jest znacznie ulepszony, menedżer zadań nie może zbliżyć się do ... Czytaj więcej został również umieszczony na obu maszynach. To jest narzędzie, którego użyłem do zebrania informacji o zużyciu pamięci. Domyślna konfiguracja kolumny została zmieniona, abym mógł zobaczyć zestaw roboczy i użycie WS Private.
Te numery zestawu roboczego odzwierciedlają ilość pamięci RAM używanej przez programy. Skomplikowało to nieco bardziej, odzwierciedlając ilość pamięci używanej przez biblioteki współdzielone, nawet jeśli zostały już załadowane przez inny proces. Z tego powodu, jeśli dodasz całą kolumnę, możliwe jest uzyskanie sumy całkowitej większa niż zainstalowana pamięć RAM. Zestaw roboczy jest nadal najlepszym miernikiem tego, ile dokładnie pamięci potrzeba na proces.
Procesy, które badamy, również nie są samodzielne. Różne programy LibreOffice uruchamiają inny proces, soffice.exe, który wykona kolejny proces, soffice.bin. Musimy spojrzeć na sumy wszystkich trzech procesów, aby zobaczyć efektywne wykorzystanie pamięci przez każdy program.
Do wstępnego testu po prostu otworzyłem Writer, Calc i Impress indywidualnie, aby sprawdzić, ile pamięci zajmują bez ładowania danych i eksportowanie danych z Process Explorer. W programach Calc i Impress otworzyłem odpowiednio plik .xls 3,7 MB i plik pptx 3,9 MB i zapisałem zużycie nowej pamięci. Wyniki można zobaczyć w poniższej tabeli. Wszystkie dane są w KB.
Wielka niespodzianka miała miejsce w przypadku Impress. Bez dokumentu zużywał 4,1% więcej pamięci RAM w systemie 64-bitowym i 9,9% mniej z załadowanym dokumentem. Wykopałem kilka innych prezentacji i przyniosłem podobne wyniki ze wszystkimi. System 64-bitowy ostatecznie zużywał mniej pamięci RAM niż system 32-bitowy.
Czy więc 64-bitowe wersje systemu Windows wymagają więcej pamięci RAM niż ich 32-bitowe odpowiedniki podczas uruchamiania aplikacji 32-bitowych? Ogólnie tak.
Ale czy potrzebujesz zaktualizować swoją pamięć RAM? Prawdopodobnie nie. Różnica naprawdę nie jest tak ogromny. Z pewnością nie jest 1,5 razy inny.
Bruce bawi się elektroniką od lat 70., komputerami od wczesnych lat 80. i dokładnie odpowiada na pytania dotyczące technologii, z których nie korzystał ani nie widział przez cały czas. Drażni się także próbą gry na gitarze.