Single-level store

From Computer History Wiki
Jump to: navigation, search

A single-level store (SLS) or single-level memory has had two meanings; they are related in that in both, information may be in primary storage (usually RAM) or in secondary storage (usually disk), and the operating system automatically moves information between them, as needed, without the active involvement of the user.

Initial meaning

It originally meant what is now usually called virtual memory, introduced in 1962 by the Atlas system at Manchester. In this, memory is divided into fixed-size pages, and the current actual physical location of a page is unimportant to a process; the operating system automagically arranges to bring pages into primary storage from secondary storage when a process needs them.

Since secondary storage is usually much larger than primary storage (or, to emphasize the converse, primary storage is usually much smaller than secondary storage), everything cannot simmply be brought into primary storage; it is necessary to manage what is in primary storage, and move things out to make room, as needed.

The operating system takes on the responsibility of locating pages and making them available for processing: if a needed page is in primary storage, it is immediately available; if a page is in secondary storage, a page fault occurs and the operating system brings the page into primary storage.

Contemporary meaning

The term SLS now usually refers to an architecture of a computing system in which there are no files, only persistent objects (often called segments), which are mapped into processes' address spaces (which usually consist entirely of a collection of mapped objects).

The entire storage system of the computer, including both primary and secondary storage (the distinction between which is no longer visible to the users) can be thought of as a single two-dimensional plane, with segment numbers on one axis, and addresses within a segment on the other.

Although in theory entire segments could be moved between primary and secondary storage, this kind of system is usually implemented as virtual memory, using pages, for a number of practical reasons. (E.g. the latency when a missing segment is needed will be higher if entire segments are being moved; the main memory allocation issue is simpler when it is all allocated in fixed-size pages; etc.)

However, it is very important to remember that although the two are usually seen together, there is no fundamental connection between the two, which are quite different. Also, the single-level store is necessarily a key part of the user's visible evironment, whereas paging is (by its very goals and nature) invisible.

No explicit I/O to secondary storage is done by processes: instead, reads from secondary storage are done as the result of page faults; writes to secondary storage are done when pages that have been modified since being read from secondary storage into primary storage are written back to their location in secondary storage, often to make room in primary storage for other pages.


The persistent object / single-level store concept was first introduced by Multics in the mid-1960s, where the actual physical implementation included a number of levels of storage types. Multics initially had three levels: main memory, a high-speed drum, and disks.