The base technology for any persistence mechanism is a method to store data on non-volatile media. For now operating systems provide this facility via the file system.

File-based allocation

The persistence allocation software will therefore utilise the file system to store data.

A single file will be used in which arbitrary data can be stored and updated.

Malloc Model

At the simplest level the software must provide the file equivalent of malloc. Malloc, along with realloc and free are the standard posix functions that provide dynamic memory management.

Essentially it must be possible to request an address where data of a given size may be stored and later retrieved.

Transaction Scope

The main addition to simple memory management that a persistent storage mechanism must provide is that of update atomicity. This means that a set of updates should be made and committed as if a single update. And furthermore, that until the updates have been committed, that any system failure shall result in the previous committed state to be maintained.

The way that such update sets are commonly defined is by creating defining some scopes (contexts, environments, ...whatever) called transactions, so a transaction is created, updates made within that transaction, and the transaction committed.

So What?

Yes I know. Doesn't seem that difficult right? Well, then you'll be surprised to discover how few "professional" software people have even this level of appreciation of what is needed to support the systems they try to build.