2016-08-10 4 views
-5

그래서 특정 방식으로 복원해야하는 많은 데이터 구조가있는 의심스러운 코딩 응용 프로그램이 있습니다.메모리 이미지 덤프 생성 및 복원 방법

매우 복잡한 작업 이전의 상태로 응용 프로그램을 복원하려면 실행 취소 옵션을 구현해야합니다.

저희 팀원은 파일을 저장하고 복원하여 모든 것이 되돌려 지도록 제안했습니다. 그렇게하는 것은 자원 집약적이며 시간 소모적 인 작업입니다. 파일 저장 및 로딩은 모든 구문 분석 및 이벤트 처리에 1 분 또는 그 이상 걸릴 수 있습니다.

그래서 제가 생각하기에 : 덤프 파일과 같이 메모리 상태를 어떻게 든 저장할 수 있다면 이미지 상태를 저장하고 필요할 경우 되돌릴 수 있습니다.

이 작업을 수행 할 수 있습니까? 그렇다면 어떻게?

+0

개별 앱은 최대 절전 모드 나 복원과 같은 일을 순진하게 할 수 없습니다. 시스템 만이 할 수 있습니다. 어떻게 든 상태를 파일에 유지해야합니다. 코드를 작성해야합니다. Excel과 같은 프로그램과 거의 같은 방식으로 수행됩니다. 그런 다음 그 상태를 복원하십시오. 간단한 마술로 하드 마당을 피할 수는 없습니다. –

+1

"시스템 복원"이라고 말합니다. 프로세스 상태 또는 전체 컴퓨터 상태 (다른 프로세스, OS 등)를 의미합니까? 프로세스 만 수행한다면이 작업을 수행 할 수는 있지만 많은 작업이 필요하며 프로그램에 실제 실행 취소 기능을 구축하는 것보다 낫지는 않습니다. –

+0

흠, 앱에서 무언가를 누르면 @AdrianMcCarthy 실수로 +1을주었습니다. 어쨌든, 귀하의 질문에 대답하기 위해, 나는 응용 프로그램 상태가 아닌 시스템 상태를 의미합니다. 그래, 나는 그만큼 생각 했어.하지만 내 동료는 다른 일에 대해 단호했다. 그래서 나는 조사 할 것이라고 생각했다. – Adrian

답변

2

일반적으로 불가능합니다. 당신이 그것을 시도한다면, 미묘하고 예측할 수없는 방식으로 실패 할 수도 있습니다. 몇 가지 잠재적 인 문제는 다음과 같습니다.

  1. 프로세스는 프로세스 ID와 스레드 ID를 저장할 수 있습니다. 복원 할 때 동일한 ID를 얻는 좋은 방법이 없습니다.
  2. 프로세스가 파일을 잠 갔을 수 있습니다. 파일이 같은 상태인지 확인하는 방법은 없습니다.
  3. 프로세스에서 더 이상 파일이 열리지 않을 수 있습니다. 임시 파일을 고려하십시오.
  4. 프로세스에서 소켓 또는 파이프가 내부적으로 또는 다른 프로세스에 열려있을 수 있습니다.
  5. 프로세스가 다른 프로세스와 통신하는 공유 상태를 조작하고 일관성없는 상태에서 해당 공유 상태로 프로세스를 중지하면 다른 프로세스가 중단 될 수 있습니다.
  6. 프로세스가 DLL 또는 프로세스를 다시 시작하려고 할 때 동일하게 존재하지 않을 수있는 다른 실행 파일을 잠글 수 있습니다.

다른 많은 문제가 있습니다. 일반적으로 응용 프로그램 저장/복원 기능을 제공하는 플랫폼은 응용 프로그램이 수행 할 수있는 작업이 매우 제한적이거나 응용 프로그램과의 긴밀한 협력이 필요합니다.