Share this page
Share this page E-mail this page Print this page RSS feeds
Home > Publications > Samurai - Protecting Critical Data in Unsafe Languages
Samurai - Protecting Critical Data in Unsafe Languages

Programs written in type-unsafe languages such as C and C++ incur costly memory errors that result in corrupted data structures, program crashes, and incorrect results. We present a data-centric solution to memory corruption called critical memory, a memory model that allows programmers to identify and protect data that is critical for correct program execution. Critical memory defines operations to consistently read and update critical data, and ensures that other non-critical updates in the program will not corrupt it. We also present Samurai, a runtime system that implements critical memory in software. Samurai uses replication and forward error correction to provide probabilistic guarantees of critical memory semantics. Because Samurai does not modify memory operations on non-critical data, the majority of memory operations in programs run at full speed, and Samurai is compatible with third party libraries. Using both applications, including a Web server, and libraries (an STL list class and a memory allocator), we evaluate the performance overhead and fault tolerance that Samurai provides.

tr-2006-127.pdf
PDF file

Details

Type: TechReport
Number: MSR-TR-2006-127
Pages: 16
Institution: Microsoft Research