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.