Jak „zamienić” ponownie pamięć z pliku strony na pamięć fizyczną w systemie Windows jednocześnie (jak zamiana linuksa)


10

Czy istnieje sposób na zamianę (w celu przywrócenia wszystkich danych pamięci, które zostały umieszczone w pliku stronicowania (lub zamianę, cokolwiek wolisz) pamięci na komputerze z systemem Windows?

W systemie Linux można to łatwo zrobić za pomocą swapoff / dev / sdaX, gdzie X jest partycją wymiany. W systemie Windows wydaje się, że prosi mnie o ponowne uruchomienie za każdym razem ...

Powodem, dla którego chciałbym to zrobić, jest to, że pomimo zamiany danych do pliku wymiany, mogę grać w grę wymagającą dużej ilości zasobów w fizycznym pamięci RAM, kiedy zatrzymuję grę, wszystkie pozostałe programy działają powolny. Jest to oczywiście normalne; wszystkie programy zostały wepchnięte do pliku strony, ponieważ moja pamięć RAM była zbyt mała, a cały dostęp do pamięci tych programów po grach uderzył w poważne błędy strony, z poważnymi opóźnieniami i pewną frustracją.

Frustracji tej można jednak łatwo uniknąć, pozwalając komputerowi na skopiowanie wszystkich danych z powrotem do pamięci fizycznej przez około minutę, a następnie wznowić pracę na szybkim komputerze! (zamiast znosić powolność podczas pracy)

Z góry dziękuję za wszelkie porady na ten temat!

Z poważaniem


To, czego chcesz, to „hypervisor” z wieloma kopiami systemu Windows na nim uruchomionym. Zawieszasz jedną, a drugą zawieszasz. Robi się to dość często w przypadku innych systemów, ale nie jestem pewien, czy istnieje hypervisor, który mógłby to zrobić w systemie Windows.
Daniel R Hicks

Odpowiedzi:


6

Niestety nie. Sposób działania wirtualnego systemu pamięci Windows powoduje, że wielu stron po prostu nie można zmapować, dopóki nie zostaną uszkodzone i nie można ich zapisać w pamięci, chyba że zostaną zmapowane. Tak więc Windows musi poczekać na dostęp do stron.


Może jakiś wystarczająco uprzywilejowany proces strony trzeciej mógłby spróbować uzyskać dostęp do tych stron, aby popełnić błąd?
badp

Kolejny proces dostępu do stron nie przydałby się wiele. Potrzebujesz ich winy w procesach aplikacji, których próbujesz użyć.
Jamie Hanrahan,

Pomyśl o tym, można to zrobić ... tak jakby. Będziesz musiał wstrzyknąć zdalny wątek do procesu docelowego. Wątek ten wykonałby VirtualQuery na przestrzeni adresowej, a następnie po prostu odczytałby każdą stronę prywatną procesu. Jednak nie ma sposobu na rozróżnienie stron, które były w pamięci RAM i zostały później stronicowane, a stronami, które nigdy nie były stronicowane w pierwszej kolejności. Nie byłoby również sposobu na identyfikację stron, których proces już nigdy nie będzie potrzebny. Więc będziesz stronicował w wielu rzeczach, których nie musiałeś.
Jamie Hanrahan,

@JamieHanrahan Wygląda na to, że to by działało.
David Schwartz

1

Niestety nie ma takiej opcji.

Jedynym sposobem na zmniejszenie wymiany w systemie Windows jest zwiększenie fizycznej pamięci RAM.


Lub całkowicie wyłącz swap. Niekoniecznie Windows, ale na moich maszynach Linux / BSD wyłączam wszelkie formy zamiany rotacyjnej, ponieważ nie przynosi to żadnego efektu, a kiedy rzeczy zaczynają z niej korzystać, zamiast osiągać twardy limit, spowalniają wszystko.
killermist

1
Wyłączenie pliku stronicowania nie spowoduje wyłączenia stronicowania na dysk. Spowoduje to wyłączenie stronicowania prywatnej zatwierdzonej przestrzeni adresowej. Zawartość pliku odwzorowanego w pamięci nadal będzie wczytywana i wyprowadzana na strony.
Jamie Hanrahan,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.