29

The NPR.org news article and podcast How The World Has Changed! Science During The 40 Years Of 'Morning Edition' includes the photo below with the caption

Before the introduction of the personal computer, mainframe computers were the norm. The IBM System/370 mainframe computer, introduced in 1970, was one of the first computers to include "virtual memory" technology.

It says the /370 was "one of the first", and this answer to Did Cray computers use virtual memory? also mentions the /370.

Question: But was there a clear "first computer" to use virtual memory, or was it an incremental development with no clear first instance?

It may be helpful to differentiate the first commercial product from the first developmental demonstration.


enter image description here

Source: NPR, Credit: Getty Images

4
  • 1
    At the very core, virtual memory isn't some sort of breakthrough invention... it's using a slower speed memory in place of higher speed memory. RAM naturally already loads from the HDD, but now we're going the other way and make the computer think part of the HDD is RAM.
    – Nelson
    Commented Nov 7, 2019 at 14:51
  • 11
    "Not a breakthrough"? I assume you have never needed to write overlay descriptions. :-)
    – dave
    Commented Nov 7, 2019 at 16:07
  • 4
    I had a computer science professor around 1999 or therebouts who still bemoaned that virtual memory had won out over use of dropfiles (completely serializing/deserializing process state). My class at CSU Chico learned more about virtual memory in our systems architecture class than we did in our operating system courses... Commented Nov 7, 2019 at 17:34
  • 6
    @Nelson "virtual memory" does not mean the same thing as paging or using a swapfile. That's a common misconception introduced by Windows 95's "Virtual memory" control panel which was used for configuring the swapfile. (You can use a swapfile or paging without using virtual-memory, and you can have virtual memory without using a swapfile or paging).
    – Dai
    Commented Nov 9, 2019 at 4:32

4 Answers 4

29

The History section of the Wikipedia Virtual Memory page seems to have the details of this:

The concept of virtual memory was first developed by German physicist Fritz-Rudolf Güntsch at the Technische Universität Berlin in 1956 in his doctoral thesis, Logical Design of a Digital Computer with Multiple Asynchronous Rotating Drums and Automatic High Speed Memory Operation; it described a machine with 6 100-word blocks of primary core memory and an address space of 1,000 100-word blocks, with hardware automatically moving blocks between primary memory and secondary drum memory. Paging was first implemented at the University of Manchester as a way to extend the Atlas Computer's working memory by combining its 16,384 words of primary core memory with an additional 98,304 words of secondary drum memory.[8] The first Atlas was commissioned in 1962 but working prototypes of paging had been developed by 1959.5 In 1961, the Burroughs Corporation independently released the first commercial computer with virtual memory, the B5000, with segmentation rather than paging.

Unfortunately, all the good sources appear to be paywalled. Elke Jessen's "Origin of the Virtual Memory Concept" from IEEE Annals of the History of Computing (2004, 26 (4), pp. 71–72) is likely to be accurate, if you can get hold of a copy.

9
  • 6
    Per Brinch Hansen's The evolution of operating systems paper covers the Atlas and the B5000, describing the Atlas as introducing demand paging and the B5000 as introducing virtual memory, which would make the B5000 the answer to this question. This paper isn’t behind a paywall ;-). Commented Nov 7, 2019 at 5:37
  • 1
    My tutor at University had worked on the Manchester Atlas. He was firmly convinced it was the first computer with demands paging.
    – JeremyP
    Commented Nov 7, 2019 at 8:17
  • 1
    @StephenKitt - I'm not convinced of the primacy of the B5000 here, based on Brinch Hansen's (excellent) survey. Demand paging a la Atlas implies virtual memory, and was demonstrated (per Wikipedia) in 1959. We don't know when VM first was demo'd at Burroughs. Question for the OP: is the answer to be "first system to ship"?
    – dave
    Commented Nov 7, 2019 at 13:48
  • @another-dave yes, I’m not sure what distinction Per Brinch Hansen was drawing between the two, but the Atlas Supervisor paper (paywalled) describes a paging system which really does implement virtual memory. Commented Nov 7, 2019 at 15:18
  • 1
    Is this the Atlas paper you mean? The Atlas Supervisor, by Kilburn, Payne, Howarth. I'm somewhat familiar with Atlas in general, and it's always been my understanding that Atlas had the first hardware VM implementation.
    – dave
    Commented Nov 7, 2019 at 16:03
13

IBM's original virtual memory machine was the System/360 Model 67, released in 1965, which was a variant of the Model 65 modified to add the address translation logic necessary to add virtual memory support. So virtual memory support at least predates the System/370 by that much.

References:

2
  • 3
    IBM was definitely a late-comer to the concept, though.
    – dave
    Commented Nov 7, 2019 at 13:55
  • 1
    I'm still trying to locate a confirmatory citation, but IBM purchased the Manchester Virtual Memory patents from the NRDC which was a substantial source of funding at Manchester . Commented Nov 9, 2019 at 12:38
5

Let me introduce yet another supplier of a Virtual Memory System. Tens of thousands of programmers (I'm guessing here) used VAX's VMS, which allowed RAM to be swapped in and out for temporary storage on disc. The PDP 11, which used VMS, sold over 600,000 units from the early 1970s until the 90s. Research on this machine is easy because so many people used them.

I programmed the PDP 11 once, back in the early 1970s and it was the friendliest, neatest little computer ever. My sometimes unreliable memory tells me I also programmed the IBM 650 in the mid 1960s, which was NOT all the above. I remember the engineer clearing the 650's memory by holding a bar magnet, wrapped in chamois leather, on the surface of the still-rotating drum memory! The Symbolic Optimizing Assembler Program placed each machine code instruction on the drum so that it's sector was just coming "over the drum's horizon" as the previous instruction finished executing. (I'm not too sure I believe that myself, but I remember being told it. It certainly makes a believable story.) This 650 was installed in IBM, Greenock, Scotland where they made IBM's card punches and verifiers.

7
  • 3
    You could page memory in a semi-virtual manner on a PDP-11, which used RSX-11. Although you had to explicitly do it through system calls. I wrote compilers on the PDP-11 which did this. I don't believe the PDP ever supported VMS, that came in with the VAX.
    – Chenmunka
    Commented Nov 8, 2019 at 16:00
  • 3
    VMS was never available for the PDP-11, although the VAX-11 could also run PDP-11 instructions. I agree on the friendliness of the PDP-11 hardware and all (well most) of its operating systems I ever used on it.
    – Deepstop
    Commented Nov 8, 2019 at 16:05
  • 1
    Former PDP-11 & VAX programmer here. Sure, VMS was a Virtual Memory System, but it was started about 17 years after Atlas was running. VMS wasn't even DEC's first system with virtual memory support; I imagine that honour goes to TOPS-10.
    – dave
    Commented Nov 8, 2019 at 18:03
  • Yes, but the Manchester Virtual Memory operating systems could also run on the VAX and PDP/11 range of computers! Commented Nov 9, 2019 at 12:36
  • 1
    There is an amusing (and interesting) story including optimising drum memory locations as part of the jargon file: See catb.org/~esr/jargon/html/story-of-mel.html Commented Nov 9, 2019 at 14:19
3

I'd suggest that the fact that there are two different "VM" interpretations muddies the water. Burroughs et al. had "virtual memory" implemented by transparent swapping between core and disk.

The IBM 370 had "virtual machines" allowing multiple operating systems to be run on the same physical hardware (i.e. a single copy of CP hosting multiple copies of CMS).

There is clearly overlap between the ideas, but it's probably safe to say that while having an MMU capable of handling multiple virtual machines probably implies that it would be easy to implement virtual memory, the reverse doesn't necessarily apply.

In any event: IBM was fairly late to the party as far as virtual memory is concerned.

MarkMLl

2
  • I'm still trying to locate a confirmatory citation, but IBM purchased the Manchester Virtual Memory patents from the NRDC which was a substantial source of funding at Manchester . Commented Nov 9, 2019 at 12:38
  • The question here is explicitly about virtual memory; I don’t think there’s much confusion here with virtual machines. Commented Nov 10, 2019 at 17:33

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .