US 7,581,142 B2
Method and system usable in sensor networks for handling memory faults
Florin Sultan, Princeton, N.J. (US); Kiran Nagaraja, Plainsboro, N.J. (US); Srimat T. Chakradhar, Manalapan, N.J. (US); and Ram Kumar Rengaswamy, Los Angeles, Calif. (US)
Assigned to NEC Laboratories America, Inc., Princeton, N.J. (US)
Filed on Dec. 26, 2006, as Appl. No. 11/616,086.
Claims priority of provisional application 60/743092, filed on Jan. 03, 2006.
Prior Publication US 2007/0156951 A1, Jul. 05, 2007
Int. Cl. G06F 11/00 (2006.01)
U.S. Cl. 714—38 21 Claims
OG exemplary drawing
 
1. A method comprising:
executing multiple application modules which access memory in a single memory address space;
prior to a memory access to an application state by an application module, detecting whether the state of the application module is corrupted;
when the state of the application module is corrupted, micro-rebooting the application module; and
when the state of the application module is not corrupted, permitting the application module to access the at least one block of memory allocated to the application module up to completion of a current execution of the application module, recalculating the MIC for the at least one block of memory allocated to the application module immediately after the execution of the application module, and replacing the stored MIC for the at least one block of memory allocated to the application module with the recalculated MIC for the at least one block of memory allocated to the application module;
wherein each of the application modules is allocated at least one block of memory in said single data memory space, and said step of detecting whether a state of the application module is corrupted comprises:
calculating a memory integrity code (MIC) for the at least one block of memory allocated to the application module as a function of content stored in the at least one block of memory allocated to the application module;
comparing the calculated MIC with a stored MIC for the at least one block of memory allocated to the application module;
when the calculated MIC is identical to the stored MIC for the at least one block of memory allocated to the application module, determining that the state of the application module is not corrupted; and
when the calculated MIC is not identical to the stored MIC for the at least one block of memory allocated to the application module, determining that the state of the application module is corrupted.