2011-01-11 5 views
0

Siehe this SuperUser question. Zusammenfassend können Sie mit der VM-Software den Status beliebiger Anwendungen speichern (indem Sie das gesamte VM-Image speichern).Erstellen einer Anwendung zum Speichern des arbiträren Anwendungsstatus

Wäre es möglich, eine Software für Windows zu schreiben, mit der Sie einen beliebigen Anwendungsstatus speichern und erneut laden können? Wenn ja (und vermutlich), was würde es bedeuten?

Ich würde versuchen, dies, wenn möglich, in einer höheren Sprache wie C# zu implementieren. Ich nehme an, wenn ich etwas anderes verwenden würde, müsste ich Speicherregister (oder vielleicht den gesamten Anwendungsspeicherblock) irgendwo in eine Datei ausgeben und sie irgendwo wieder laden, um den Status zu aktualisieren.

Also, wie baue ich dieses Ding?

+0

"Wäre es möglich, eine Software für Windows zu schreiben, die es Ihnen ermöglicht, einen beliebigen Anwendungszustand zu speichern und neu zu laden? Wenn ja (und vermutlich), was würde das bedeuten?" - Ja, es heißt eine VM! Warum erfüllt eine VM Ihre Anforderungen nicht und warum müssen Sie den Anwendungsstatus speichern? –

+0

Und es ist möglich, VM in verwalteten Sprache zu implementieren - http://en.wikipedia.org/wiki/Java_PC. Sieht so aus, als wäre die Frage erledigt. –

+0

VM führt das Betriebssystem aus. Ich suche nicht nach dieser Art von Overhead. Angenommen, es gibt eine Handvoll Programme, die beim Beenden nativ keinen Status speichern, den ich gerne speichern möchte - das ist es, wonach ich suche. Sicher, ich könnte ein bloßes Windows verwenden und meinen "echten" Computer in einer VM haben; aber das scheint eine Verschwendung von Ressourcen (Speicher/CPU) zu sein. – ashes999

Antwort

1

Nun, es ist unwahrscheinlich, dass dies passieren wird, vor allem nicht in C# - die niedrigen Anforderungen in verwaltetem Code wären kaum möglich. Das Speichern des Zustands einer ganzen virtuellen Maschine ist eigentlich einfacher als das Speichern einzelner Prozesse. Sie müssen lediglich den gesamten Maschinenspeicher sichern und ein konsistentes Festplattenimage sicherstellen, was angesichts der Möglichkeiten der Virtualisierungssoftware ziemlich einfach ist. Das Wiederherstellen eines einzelnen Prozesses würde das Laden aller gemeinsam genutzten Objekte erfordern, auf die der Prozess verweist, einschließlich aller Objekte, auf die der Prozess im Kernel-Bereich verweist, dh Datei-/Speicher-/Mutex-/beliebige Griffe und ohne die gesamte Maschine/das Betriebssystem virtuell würde das bedeuten, tief in die Interna von Windows zu stochern ...

Alles was ich sage ist: solange es möglich ist, wäre die Anstrengung enorm und wahrscheinlich nicht wert.

+0

Sogar Mutex, Threads, Dateigriffe usw. abzählen. Ich denke, du hast recht; es ist mehr Arbeit als es wert ist. – ashes999