
Given the excitement surrounding commercially available byte-addressable non-volatile memory (NVM), now is a good time to remind ourselves that it has long been possible to implement a software abstraction of persistent memory on conventional hardware—ordinary volatile DRAM and block-addressed storage devices. The corresponding "persistent memory style of programming" offers many of the same attractions as NVM programming but doesn't require special NVM hardware. This article illustrates persistent memory programming on conventional hardware with working C code for UNIX-like operating systems. The right crash consistency mechanism for persistent memory programming on conventional hardware is failure-atomic msync() (FAMS), and this article presents a concise new implementation of FAMS.