Czy mogę „hibernować” program?

17

Tak, wiem, że hibernacja zwykle dotyczy komputera. (Hibernuj, co oznacza oszczędzanie pamięci programu na dysku i możliwość przywracania jej w spójny sposób).

Jednak hibernacja programu może być bardzo przydatna. Załóżmy, że chcę zagrać w grę, ale kilka programów, takich jak Firefox, Acrobat, zajmuje 500 mln pamięci, więc chcę ją zwolnić. Zamykanie, a następnie uruchamianie może być czasochłonne, zwłaszcza jeśli nie można zapisać danych sesji. Zamiast tego idę i hibernuję je. Czy jest więc jakiś sposób na hibernację programu?

apoorv020
źródło
Z jakiego systemu operacyjnego korzystasz?
Ian C.,
1
Windows 7, 64-bitowy Zmieniłem także to pytanie.
apoorv020
niezła poprawa dla systemu operacyjnego ...
kokbira,
2
Powiązane (ale brak odpowiedzi) superuser.com/questions/170434/…
Sathyajith Bhat

Odpowiedzi:

8

W StackOverflow istnieje podobne pytanie na ten temat. Jest to bardziej związane z programowaniem, ale główna zaakceptowana odpowiedź wyjaśnia, dlaczego to, co próbujesz zrobić, jest trudna i oferuje realną alternatywę.

Zasadniczo uruchom aplikacje biznesowe na maszynie wirtualnej i wstrzymaj / hibernuj / zamknij, gdy chcesz grać.

Ƭᴇcʜιᴇ007
źródło
4

Chociaż nie jest to rzeczywista hibernacja , proces można zawiesić. Natychmiast przestanie używać cykli procesora, ale nadal będzie używać pamięci. Na szczęście ta pamięć zostanie zamieniona na plik stronicowania, jeśli później uruchomisz aplikację wymagającą dużej ilości pamięci, więc nie jest to prawdziwy problem. Proces zawieszony nie może przetrwać ponownego uruchomienia \ wylogowania, ale to wystarczy, aby zagrać w grę.

Powiązane pytanie: Zawiesić / wznowić proces w prosty sposób?

Wewnętrznie zawieszanie procesów można wykonać za pomocą różnych metod :

  • Para funkcji SuspendThread i ResumeThread .

  • NtSuspendProcess funkcja (nieoficjalnie udokumentowana), która została wprowadzona w systemie Windows XP Sp0 i od tego czasu działa na każdej wersji systemu.

  • Interfejs debugowania udostępniany przez Microsoft przy użyciu funkcji DebugActiveProcess i DebugActiveProcessStop . Kiedy debugger przyłącza się do procesu zdalnego, wszystkie wątki celu są natychmiast zawieszane, dopóki debuger nie da znaku, aby umożliwić ich wykonanie.

Dostępnych jest wiele narzędzi, które mogą zawiesić procesy:

Ponadto Monitor zasobów ( Task ManagerPerformanceOpen Resource Monitor) w systemie Windows Vista i nowszych może zawiesić \ wznowić procesy:

Monitor zasobów

beatcracker
źródło
0

„Hibernacja” aplikacji nie byłaby szybsza niż samo jej zamknięcie i ponowne uruchomienie, chociaż twój punkt widzenia na temat danych sesji jest prawidłowy. Ogólnie rzecz biorąc, nie byłoby wiele korzyści.

CarlF
źródło
5
Według jakiej logiki hibernacja nie byłaby szybsza? Hibernacja i przywracanie systemu operacyjnego jest szybsze niż ponowne uruchomienie.
apoorv020
Pomyśl o tym, czym jest hibernacja. Wymaga skopiowania obrazu programu na dysk twardy, a następnie skopiowania go z powrotem. Zamknięcie programu, a następnie jego ponowne uruchomienie wymaga jedynie skopiowania go z dysku twardego. Windows uruchamia się bardzo wolno, z powodów, których nie znam. W przypadku innych systemów operacyjnych, np. Linux, hibernacja i przebudzenie trwa dłużej niż wyłączenie i ponowne uruchomienie, przynajmniej na każdym moim systemie, na którym próbowałem. Jest to wygodne, ale nie szybkie.
CarlF
Cóż, uruchamianie niektórych programów zajmuje dużo czasu, zwłaszcza Firefox. Nie wspominając o irytującym.
apoorv020
3
Closing the program and then restarting it only requires copying it from the hard disk. Zapominasz dodać czasu potrzebnego do przywrócenia programu do stanu, w którym był. Na przykład, ponowne otwarcie kilku kart przeglądarki, otwarcie pliku w edytorze itp.
Synetech
-2

Ponieważ korzystasz z systemu Windows, zawsze możesz utworzyć dwa konta użytkownika i użyć funkcji szybkiego przełączania kont w systemie Windows i użyć każdego z nich do różnych zestawów aplikacji. Ponieważ Windows prawie hibernuje, inne secesje zostały otwarte na komputerze. Chyba tak.

TripingPC
źródło
2
Przełączanie między kontami użytkowników w systemie Windows 7 nie hibernuje ani w żaden inny sposób nie zawiesza aktywności na nieaktywnym koncie. Możesz to sobie udowodnić, odtwarzając dźwięk z jednego konta, a następnie przełączając się na inne konto i obserwując, że dźwięk nadal jest odtwarzany.
Mówię: Przywróć Monikę
Wellllllllll ..... tak naprawdę przestaje rysować ekran.
djsmiley2k in darkness