Czy potrzebujesz więcej pamięci RAM, aby uruchamiać programy 32-bitowe w 64-bitowym systemie Windows?

  • Peter Holmes
  • 0
  • 2075
  • 117
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ą uruchomić starsze oprogramowanie 32-bitowe na tych nowych komputerach.

Co rodzi interesujące pytanie. Czy potrzebujesz więcej lub mniej pamięci RAM Ile naprawdę potrzebujesz 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. uruchomić 32-bitową aplikację w 64-bitowej wersji systemu Windows Co to jest przetwarzanie 64-bitowe? 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. ? 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 z uruchomieniem 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óre z efektów “mieszanie i dopasowywanie” Wpływ sprzętu i oprogramowania na wydajność systemu Windows Wpływ sprzętu i oprogramowania na wydajność systemu Windows Teoretycznie oprogramowanie 32-bitowe może przewyższać swój 64-bitowy odpowiednik, w zależności od konfiguracji sprzętu. Brzmi skomplikowanie? Jesteśmy tutaj, aby mieć sens i pomóc Ci uzyskać najlepszą wydajność Twojego systemu. . 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, od wywołań systemowych (w jaki sposób 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 systemu 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ę podstawowych funkcji jądra systemu Windows), przechwytując wywołania jądra i zmieniając je, aby mogły być przetwarzane przez natywne funkcje 64-bitowe dostarczane przez jądro systemu Windows.

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 (dotrzemy do nich później) do win32k.sys, który zapewnia “okno” funkcjonalność i ntoskrnl.exe, który zawiera program wykonawczy, jądro, menedżer pamięci, harmonogram procesów (nie mylić z Harmonogramem zadań dostępnym z Panelu sterowania) i inne podstawowe elementy systemu operacyjnego.

Thunk to podprogram (pomyśl o nich jako o szeregu instrukcji wykonujących jedno zadanie), który pozwala programowi na wykonanie wspólnego podprogramu lub funkcji 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, aby osoba dzwoniąca mogła z nich skorzystać.

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 podstawowe części systemu operacyjnego) z powodu narzutu związanego z przełączaniem między trybem użytkownika a trybem jądra i wstecz.

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ść tych plików jest identyczna z plikami binarnymi w systemie 32-bitowym, chociaż niektóre zostały przepisane, aby działały 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 swojej 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] Process Explorer - najpotężniejsza wymiana Menedżera zadań [Windows] Bądźmy szczerzy, Menedżer zadań Windows nie jest tak świetny do zrozumienia i zarządzania uruchomionymi procesami w Twoim komputerze. Nawet w Windows 8, gdzie jest znacznie ulepszony, menedżer zadań nie może zbliżyć się do… został również umieszczony na obu komputerach. 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 nowe użycie 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 masywne. Z pewnością nie jest 1,5 raza inny.




Jeszcze bez komentarzy

O nowoczesnej technologii, prostej i niedrogiej.
Twój przewodnik w świecie nowoczesnych technologii. Dowiedz się, jak korzystać z technologii i gadżetów, które nas otaczają każdego dnia i dowiedz się, jak odkrywać ciekawe rzeczy w Internecie.