[COFF] [TUHS] Memory management in Dennis Ritchie's C Compiler

Paul Winalski paul.winalski at gmail.com
Thu Aug 20 03:39:38 AEST 2020


On 8/18/20, Tony Finch <dot at dotat.at> wrote:
>
> The Manchester / Ferranti Atlas had virtual memory in 1962 but I don't
> know how much they used it for multiprogramming (and by implication shared
> text segments) - it didn't do timesharing until later, but AIUI virtual
> memory helped it to have an exceptionally good job throughput for the
> time. Perhaps their motivation was more to do with having a good shared
> implementation of overlays and paged IO.
>
> https://en.wikipedia.org/wiki/Single-level_store

I knew the Manchester invented virtual memory in the Atlas system.

In the IBM System/360 world, the first machine with Dynamic Address
Translation (DAT, the hardware that implements virtual->physical
address transiation via page tables) was the S/360 model 67.  The only
IBM OS to use it was CP/67, the virtual machine forerunner of VM/370.
All of the models of System/370 eventually got virtual memory
capability.  The different OSes implemented virtual memory quite
differently:

DOS/VS, the OS for smaller machines, had a single, demand-paged
virtual address space that could be larger than physical memory..
This could be partitioned into five user program spaces.  DOS/VS could
run up to five processes (one per partition) simultaneously.  Process
scheduling was strictly preemptive--the program in P4 got the CPU
whenever it needed it.  P3 only ran when P4 was stalled; P2 only when
P4 and P3 were stalled, etc.  At our school we ran the spooling system
in P4 since it was almost completely I/O bound.  P3 ran the
administrative transaction processing system.  P2 ran the student
time-sharing software.  P1 and BG (background; the lowest on the
scheuling totem pole) ran batch jobs.

OS/VS1 was the successor to OS/MFT (multiprogramming with a fixed
number of tasks).  Like DOS/VS, it had a single virtual address space
divided into partitions, but you could have more than five of them.

OS/VS2 SVS (single virtual storage) was the first successor to OS/ MVT
(multiprogramming with a variable number of tasks).  It, too, had a
single virtual address space, but partitioning was done dynamically.

OS/VS2 MVS (multiiple virtual storage) was the only one of the lot to
handle virtual memory the way that modern OSes do.  Each process got
its own, independent virtual address space.

-Paul W.


More information about the COFF mailing list