IP Library Granted Patent US 7,007,139
Granted Patent B2
US 7,007,139 · App. 10/184,792 · Granted Feb 28, 2006

System and method for using virtual memory for redirecting auxiliary memory operations

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,007,139
App. No.
10/184,792
Granted
Feb 28, 2006
Kind
B2
Abstract

A method for using virtual memory for redirecting auxiliary memory operations redirects the auxiliary memory write operations of a process to a buffer after capturing the state of the auxiliary memory at various times during the method in three buffers. After the write operations have ended, the auxiliary memory is reconstructed into one of the buffers by comparing the contents of the buffers to each other. The reconstructed memory is then available when the process next regains control of the auxiliary memory.

Claims (14)

1. A method for redirecting and reconstructing writing operations directed to a portion of a memory from a process running in a computer, comprising:

storing a pre-redirection copy of said portion of said memory in a pre-redirection buffer and a redirection copy of the contents of said portion of said memory in a redirection buffer;

redirecting writing operations to write data to said redirection buffer;

storing a post-redirection copy of the contents of said portion of said memory in a post-redirection buffer after said step of redirecting writing operations; and

reconstructing said portion of said memory using said pre-redirection buffer, said redirection buffer, and said post-redirection buffer, where said reconstruction comprises, for each memory location in said portion of said memory: (a) determining if the contents of the corresponding memory location of said pre-redirection buffer are different from the contents of the corresponding memory location of said post-redirection buffer; (b) if said contents of said corresponding location of said pre-redirection buffer are different from said contents of said corresponding memory location of said post-redirection buffer, determining if the contents of the corresponding memory location of said redirection buffer are equal to said corresponding memory location of said pre-redirection buffer; and (c) if said contents of said corresponding location of said pre-redirection buffer are different from said contents of said corresponding memory location of said post-redirection buffer and said contents of said corresponding memory location of said redirection buffer are equal to said corresponding memory location of said pre-redirection buffer, storing the contents of said corresponding memory location of said post-redirection buffer in the corresponding memory location of said redirection buffer.

2. A computer-readable medium having stored thereon a plurality of computer-executable instructions comprising instructions for causing a computer comprising a memory to perform redirection and reconstruction of writing operations directed to a portion of said memory from a process running in said computer, comprising:

storing a pre-redirection copy of said portion of said memory in a pre-redirection buffer and a redirection copy of the contents of said portion of said memory in a redirection buffer;

redirecting writing operations to write data to said redirection buffer;

storing a post-redirection copy of the contents of said portion of said memory in a post-redirection buffer after said step of redirecting writing operations; and

reconstructing said portion of said memory using said pre-redirection buffer, said redirection buffer, and said post-redirection buffer where said reconstruction comprises, for each memory location in said portion of said memory: (a) determining if the contents of the corresponding memory location of said pre-redirection buffer are different from the contents of the corresponding memory location of said post-redirection buffer; (b) if said contents of said corresponding location of said pre-redirection buffer are different from said contents of said corresponding memory location of said post-redirection buffer, determining if the contents of the corresponding memory location of said redirection buffer are equal to said corresponding memory location of said pre-redirection buffer; and (c) if said contents of said corresponding location of said pre-redirection buffer are different from said contents of said corresponding memory location of said post-redirection buffer and said contents of said corresponding memory location of said redirection buffer are equal to said corresponding memory location of said pre-redirection buffer, storing the contents of said corresponding memory location of said post-redirection buffer in the corresponding memory location of said redirection buffer.

3. A system for redirecting and reconstructing writing operations directed to a portion of a memory from a process running in a computer system, comprising:

a storage module that stores a pre-redirection buffer, a redirection buffer, and a post-redirection buffer;

a redirection module that, sequentially, stores a copy of the contents of said portion of said memory in said pre-redirection buffer and said redirection buffer, redirects said writing operations to said redirection buffer, and stores a copy of the contents of said portion of said memory in post-redirection buffer; and

a reconstruction module that reconstructs said portion of said memory using said pre-redirection buffer, said redirection buffer, and said post-redirection buffer, where said reconstruction module reconstructs said portion of said memory by, for each memory location in said portion of said memory (a) determining if the contents of the corresponding memory location of said pre-redirection buffer are different from the contents of the corresponding memory location of said post-redirection buffer; (b) if said contents of said corresponding location of said pre-redirection buffer are different from said contents of said corresponding memory location of said post-redirection buffer, determining if the contents of the corresponding memory location of said redirection buffer are equal to said corresponding memory location of said pre-redirection buffer; and (c) if said contents of said corresponding location of said pre-redirection buffer are different from said contents of said corresponding memory location of said post-redirection buffer and said contents of said corresponding memory location of said redirection buffer are equal to said corresponding memory location of said pre-redirection buffer, storing the contents of said corresponding memory location of said post-redirection buffer in the corresponding memory location of said redirection buffer.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034541/0477 →