Emulated memory management
First Claim
1. A method of emulating memory management of a low resource computing device with an emulator application running on a high resource computing device, the method comprising:
- allocating one or more contiguous portions of emulated memory on the high resource computing device, wherein each contiguous portion has an address;
assigning an identifier to each address, wherein the identifier is assigned by a memory manager associated with the emulator application;
entering each identifier into a table, wherein each identifier is mapped to its corresponding address;
producing one or more pointers, wherein each of the one or more pointers includes an identifier and points to an address corresponding to the identifier; and
emulating a memory access operation, wherein the emulating comprises;
attempting to access a contiguous portion of the emulated memory having a first address;
comparing a first identifier in a pointer associated with the first address with a second identifier included in the table, the second identifier being mapped to the first address, andaccessing the contiguous portion of emulated memory associated with the first address when the first and second identifiers are the same.
2 Assignments
0 Petitions
Accused Products
Abstract
A first software program executing on a computing device emulates a second computing device executing a software program using emulated memory. The first software program permits the second software program to perform an operation on a contiguous portion of the emulated memory only when a pointer and a table entry both contain the same identifier, thus protecting against common types of memory usage errors in the second software program. The pointer has an address to the contiguous portion. The table entry maps to the contiguous portion. A plurality of table entries map to a respective plurality of contiguous portions of the emulated memory. A plurality of the pointers each contain the address to a respective contiguous portion of the emulated memory as well as containing an identifier corresponding to the respective contiguous portion of the emulated memory. The second computing device can be high or low in resources.
14 Citations
22 Claims
-
1. A method of emulating memory management of a low resource computing device with an emulator application running on a high resource computing device, the method comprising:
-
allocating one or more contiguous portions of emulated memory on the high resource computing device, wherein each contiguous portion has an address; assigning an identifier to each address, wherein the identifier is assigned by a memory manager associated with the emulator application; entering each identifier into a table, wherein each identifier is mapped to its corresponding address; producing one or more pointers, wherein each of the one or more pointers includes an identifier and points to an address corresponding to the identifier; and emulating a memory access operation, wherein the emulating comprises; attempting to access a contiguous portion of the emulated memory having a first address; comparing a first identifier in a pointer associated with the first address with a second identifier included in the table, the second identifier being mapped to the first address, and accessing the contiguous portion of emulated memory associated with the first address when the first and second identifiers are the same. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method for emulating at least some of the operational characteristics of a low resource computing device using resources of a high resource computing device comprising:
-
making a call to a memory manager for an emulated memory access operation to an allocated contiguous portion of emulated memory, wherein a generation count has been assigned by the memory manager for the emulated memory access operation to; a plurality of table entries corresponding to a respective plurality of said allocated contiguous portions of emulated memory, and a plurality of pointers each including an address to a respective said allocated contiguous portion of emulated memory; comparing the generation count; in the pointer including the address to the allocated contiguous portion of emulated memory; and in the table entry corresponding to the allocated contiguous portion of emulated memory; if the respective said generation counts in the comparison do not match, then outputting a diagnostic; and if the respective said generation counts in the comparison match, removing the generation count from the pointer specified by the memory manager for the emulated memory access operation during the performing of the emulated memory access operation for which the memory manager was called. - View Dependent Claims (7, 8, 9, 10)
-
-
11. In a first computing device executing a first application for the emulation of a second computing device executing a second application, a method comprising:
-
making a call from the second application to a memory manager for an emulated memory access operation to an allocated contiguous portion of emulated memory used by the second application and including a plurality of said allocated contiguous portions, wherein; a generation count is in a plurality of table entries corresponding to a respective plurality of said allocated contiguous portions of emulated memory, the generation count being entered into the plurality of table entries by the first application; a generation count is in a plurality of pointers each including an address to a respective said allocated contiguous portion of emulated memory, the generation count being included in the plurality of pointers by the first application; for the emulated memory access operation, the memory manager uses the address in the pointer that corresponds to the allocated contiguous portion in emulated memory after removal of the generation count from the pointer; and prior to performing the emulated memory access operation to the allocated contiguous portion of emulated memory; comparing the generation count; in the pointer including the address of the allocated contiguous portion of the emulated memory; and in the table entry corresponding to the allocated contiguous portion of the emulated memory; outputting a diagnostic when the respective said generation counts of the comparison do not match. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18)
-
-
19. A computer-readable medium including instructions for execution by a computer, wherein the instructions comprise:
-
first logic calling for an emulated memory access operation with respect to a first of a contiguous portion of an emulated memory for which there is; a corresponding table entry in a table having a plurality of said table entries that map to respective other said portions of the emulated memory, wherein each said table entry includes an identifier, and further wherein each identifier is entered into its corresponding table entry by an emulator application; and a corresponding pointer to a plurality of pointers each including an identifier and an address to a respective said contiguous portion of the emulated memory, wherein each identifier is entered into its corresponding pointer by the emulator application; second logic, in response to the first logic, such that, if the identifier in the table entry corresponding to the first said contiguous portion is the same as the identifier in the pointer corresponding to the first said portion, then; the emulated memory access operation is performed with respect to the first said contiguous portion of the emulated memory. - View Dependent Claims (20, 21, 22)
-
Specification