Paging

Intro
Login

The transition from swapping to paging in ancient Unix

In the 1980-1983 time frame Unix changed its memory management from a "swapping" design to a "demand paging" design. At the root of this transition stands the "32/V" version of Unix. In the below chart this version of Unix is split in three subsequent releases R1, R2 and R3 (note that these monikers were not used at the time).

Both 3BSD and the VAX version of System III appear to derive from 32V R2, not R1. There are some indications that parts of System V R1 for the VAX was derived from or at least influenced by 32V R3. Note that almost complete SVR1 source code for the VAX can be found here, in the M68K tree.

For convenience, the core kernel files for System III are also in this repo in this commit and for SVR1 in this commit.

 

V7 swapping (late '78) 32V R1 swapping (late '78) 32V R2 scatter loading (mar '79) 32V R3 paging (early '80) Sys III scatter loading (summer '80) SysV R1 scatter loading (1982) SysV R2 paging (1983) 3BSD paging (jan '80) 4/4.1 BSD paging (1980/1981) 4.2 BSD paging (1983) CB Unix 3 pdp11, ipc (jan '80) sptmap paging algorithm mmap ipc
V7: box "V7" "swapping" bold small "(late '78)" italic small 
arrow right 50%
box "32V R1" "swapping" bold small "(late '78)" italic small 
arrow right 50%
A2: box "32V R2"  "scatter loading" bold small "(mar '79)" italic small 
arrow right 50%
A3: box fill 0xc0c0c0 "32V R3" "paging" bold small "(early '80)" italic small 
S1: box at A2+(0.7,-1) "Sys III" "scatter loading" bold small "(summer '80)" italic small 
arrow right 50%
S2: box "SysV R1" "scatter loading" bold small "(1982)" italic small 
arrow right 50%
S3: box "SysV R2" "paging" bold small "(1983)" italic small 
B3: box at A2+(0.7,1) "3BSD" "paging" bold small "(jan '80)" italic small 
arrow right 50%
B4: box "4/4.1 BSD" "paging" bold small "(1980/1981)" italic small 
arrow right 50%
B42: box "4.2 BSD" "paging" bold small "(1983)" italic small
CB: box at S1+(0,-1) "CB Unix 3" "pdp11, ipc" bold small "(jan '80)" italic small 
arrow from A2 to B3 chop
arrow from A2 to S1 chop
arrow dashed from A3 to S2 chop "sptmap" above aligned
arrow dashed from A3 to S3 chop "paging algorithm" above aligned
arrow dashed from A3 to B42 chop "mmap" below aligned
arrow dashed from CB to S2 chop "ipc" below aligned
arrow from V7 chop down then to CB radius 20px

Note: dates refer to internal availability, public release dates may be later.

The IPC primitives in CB Unix were maus (shared memory), event (semaphores) and msg.. (messages). These functions appear to have been redesigned in a more coherent form for SVR1 as the now well-known "SysV IPC" primitives.