Czy istnieje sposób na wykonanie migawki działającego procesu na dysk w celu przywrócenia go później?

11

Zwykle pracuję z wieloma instancjami visual studio otwartymi na różne projekty, zastanawiałem się, czy istnieje sposób na wykonanie migawki / hibernacji działającego procesu na dysk zamiast zamykania go, aby móc go otworzyć w tym samym stanie, w jakim był szybko.

Mam mnóstwo wolnego miejsca na dysku, więc nie miałbym nic przeciwko zapisaniu migawki całego procesu, jeśli pozwoliłoby mi to zaoszczędzić czas na otwarciu rozwiązania i czekaniu na załadowanie projektów.

Sijin
źródło
+1: Ciekawy pomysł! (Oczywiście właśnie to menedżer wirtualnej pamięci próbuje zrobić dla ciebie automatycznie, gdy jest to wymagane).
Andy
2
FWIW, coś takiego („unnexec”, oparty na zrzutu pamięci) jest tradycyjnie częścią procesu kompilacji Emacsa w systemach UNIX. Patrz na przykład xemacs.org/Architecting-XEmacs/unexec.html
coneslayer
1
Zostało to specjalnie zaprojektowane dla emacsa nie? Zastanawiam się, czy można by napisać wersję ogólnego przeznaczenia.
Andy
Od dłuższego czasu szukam czegoś takiego. Byłoby to szczególnie pomocne, jeśli chcesz zatrzymać koder wideo!
Przełom
1
Wygląda na to, że jest coś takiego dla Linuksa linux.org/apps/AppId_2488.html Jednak myślę, że problemem będą otwarte uchwyty plików, gniazda sieciowe itp., Które sprawiają, że jest to nietrywialny problem
Sijin

Odpowiedzi:

2

Robię to za pomocą VirtualBox firmy Sun do rozdzielania projektów. Jest to również przydatne, ponieważ możesz robić migawki.

Wadą jest to, że musisz tam umieścić cały system operacyjny.

Incognito
źródło
3
Tak - używam migawek na poziomie systemu operacyjnego VirtualBox, stąd wpadłem na pomysł migawki na poziomie aplikacji. Wygląda na to, że jest coś takiego dla Linuksa linux.org/apps/AppId_2488.html Jednak myślę, że problemem będą otwarte uchwyty plików i takie, które sprawiają, że nie jest to trywialny problem.
Sijin
0

ProcessExplorer od MS Sysinternals pozwala Ci zawiesić proces. czy to pomaga / wykonuje pracę?


źródło
5
Niestety nie ... Chciałem usunąć proces z pamięci, aby go zwolnić, a nie po prostu zatrzymać aplikację. Chociaż jest to bardzo przydatny program do aplikacji intensywnie wykorzystujących procesor, które mogą wymagać zatrzymania!
Przełom
Zawieszenie procesu skutecznie zamraża wszystkie inne procesy, które zdarzają się, wysyłając do niego niektóre komunikaty systemu Windows. Zdarza się, że niektóre procesy lubią wysyłać wiadomości do innych procesów, a niektóre są celami takich transmisji. Tak więc zawieszenie niektórych procesów jest nieszkodliwe, ale w innych przypadkach zakłóci Twoją pracę z komputerem. I jeszcze jedno. Niektóre procesy, po wznowieniu z długotrwałego zawieszenia, zawieszają się i zajmują cały procesor, aby nadrobić stracony czas na obliczeniu czegoś bardzo inteligentnego: P
Roland Pihlakas
Istnieje również narzędzie wiersza polecenia pssuspend od MS Sysinternals. Można go znaleźć tam: technet.microsoft.com/en-us/sysinternals/bb897540 . Jest to część pakietu PsTools: technet.microsoft.com/en-us/sysinternals/bb896649, w którym można również znaleźć na przykład narzędzie pskill , które jest na przykład dość przydatne po wznowieniu procesu i staje się zbyt podekscytowane .
Roland Pihlakas
1
@Breakthrough, ale jeśli proces zostanie zawieszony, zrezygnuje z pamięci (ponieważ inne programy wykorzystują pamięć, spowodują, że ten zostanie stronicowany) bez próby odzyskania go, dopóki go nie wznowisz. Jest to naprawdę najbliższy / najbezpieczniejszy sposób, aby uzyskać to, czego chcesz - zamieniony zawieszony program w zasadzie jest bezpiecznie przechowywaną migawką, po prostu utraconą podczas ponownego uruchamiania.
binki
-1

Możesz użyć WinDbg (narzędzie Microsoft), aby utworzyć zrzut bieżącego stanu komputera z systemem Windows. Zwykle służy to do analizy problemów, ale być może może również służyć twoim potrzebom. Wyszukaj słowa kluczowe WinDbg i zrzuć dodatkowe informacje, być może istnieje nawet opcja zrzucenia tylko pojedynczych procesów.

Simon D.
źródło
Plik zrzutu nie może zostać użyty do przywrócenia procesu.
user2284570,