Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Virtual memory
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==History== In the 1950s, all larger programs had to contain logic for managing primary and secondary storage, such as [[Overlay (programming)|overlaying]]. Virtual memory was therefore introduced not only to extend primary memory, but to make such an extension as easy as possible for programmers to use.<ref name="denning">{{cite journal |author-link=Peter J. Denning |last=Denning |first=Peter |title=Before Memory Was Virtual |journal=In the Beginning: Recollections of Software Pioneers |year=1997 |url=http://denninginstitute.com/pjd/PUBS/bvm.pdf}}</ref> To allow for [[multiprogramming]] and [[computer multitasking|multitasking]], many early systems divided memory between multiple programs without virtual memory, such as early models of the [[PDP-10]] via [[Processor register|registers]]. A claim that 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'',<ref>{{cite journal |first=Elke |last=Jessen |title=Origin of the Virtual Memory Concept |journal=[[IEEE Annals of the History of Computing]] |volume=26 |issue=4 |year=2004 |pages=71–72}}</ref><ref name=springer>{{Cite journal |last1=Jessen |first1=E. |title= Die Entwicklung des virtuellen Speichers |doi=10.1007/s002870050034 |journal=Informatik-Spektrum |issn=0170-6012 |volume=19 |issue=4 |pages=216–219 |year=1996 |s2cid=11514875 |language=de}}</ref> does not stand up to careful scrutiny. The computer proposed by Güntsch (but never built) had an address space of 10<sup>5</sup> words which mapped exactly onto the 10<sup>5</sup> words of the drums, i.e. the addresses were real addresses and there was no form of indirect mapping, a key feature of virtual memory. What Güntsch did invent was a form of [[cache memory]], since his high-speed memory was intended to contain a copy of some blocks of code or data taken from the drums. Indeed, he wrote (as quoted in translation{{sfnp | Jessen | 2004}}): "The programmer need not respect the existence of the primary memory (he need not even know that it exists), for there is only one sort of addresses {{sic}} by which one can program as if there were only one storage." This is exactly the situation in computers with cache memory, one of the earliest commercial examples of which was the IBM System/360 Model 85.<ref>{{citation |last=Liptay |first=J. S. |title=Structural Aspects of the System/360 Model 85 – The Cache |journal=[[IBM Systems Journal]] |volume=7 |pages=15–21 |year=1968 |doi=10.1147/sj.71.0015}}</ref> In the Model 85 all addresses were real addresses referring to the main core store. A semiconductor cache store, invisible to the user, held the contents of parts of the main store in use by the currently executing program. This is exactly analogous to Güntsch's system, designed as a means to improve performance, rather than to solve the problems involved in multi-programming. [[File:University of Manchester Atlas, January 1963.JPG|thumb|The University of Manchester [[Atlas Computer]] was the first computer to feature true virtual memory.]] The first true virtual memory system was that implemented at the [[University of Manchester]] to create a one-level storage system<ref>{{citation | last1=Kilburn | first1=T. | last2=Edwards | first2=D. B. G. | last3=Lanigan | first3=M. J. | last4=Sumner | first4=F. H. | title=One-level Storage System | journal=IRE Trans EC-11 | pages=223–235 | year=1962| issue=2 | doi=10.1109/TEC.1962.5219356 }}</ref> as part of the [[Atlas Computer]]. It used a [[paging]] mechanism to map the virtual addresses available to the programmer onto the real memory that consisted of 16,384 words of primary [[magnetic-core memory|core memory]] with an additional 98,304 words of secondary [[drum memory]].<ref>{{cite web|url=https://www.ourcomputerheritage.org/Maincomp/Fer/ccs-f5x2.pdf|title=Ferranti Atlas 1 & 2 – Systems Architecture|date=12 November 2009}}</ref> The addition of virtual memory into the Atlas also eliminated a looming programming problem: planning and scheduling data transfers between main and secondary memory and recompiling programs for each change of size of main memory.<ref>{{cite encyclopedia |last=Denning |first=Peter J. |entry=Virtual memory |date=1 January 2003 |entry-url=https://dl.acm.org/doi/abs/10.5555/1074100.1074903 |encyclopedia=Encyclopedia of Computer Science |pages=1832–1835 |publisher=John Wiley and Sons |isbn=978-0-470-86412-8 |access-date=10 January 2023}}</ref> The first Atlas was commissioned in 1962 but working prototypes of paging had been developed by 1959.<ref name="denning"/>{{rp|page=2}}<ref>{{cite journal |first=R. J. |last=Creasy |url=http://pages.cs.wisc.edu/~stjones/proj/vm_reading/ibmrd2505M.pdf |title=The origin of the VM/370 time-sharing system |journal=[[IBM Journal of Research & Development]] |volume=25 |issue=5 |date=September 1981 |page=486|doi=10.1147/rd.255.0483 }}</ref><ref>{{cite web|url=http://www.computer50.org/kgill/atlas/atlas.html|title=The Atlas|archive-url=https://web.archive.org/web/20141006103119/http://www.computer50.org/kgill/atlas/atlas.html|archive-date=6 October 2014|url-status=usurped}}</ref> As early as 1958, [[Robert S. Barton]], working at Shell Research, suggested that main storage should be allocated automatically rather than have the programmer being concerned with overlays from secondary memory, in effect virtual memory.<ref name="Waychoff 1979">{{cite web |last1=Waychoff |first1=Richard |title=Stories About the B5000 and People Who Were There |url= https://archive.computerhistory.org/resources/access/text/2016/06/102724640-05-01-acc.pdf |website=Computer History Museum}}</ref>{{rp|49}}<ref name="IEEE-Computer-Aug-1977">{{cite web |title=IEEE Computer August 1977 David Bulman's Letter to the Editor |url=https://www.computer.org/csdl/magazine/co/1977/08/01646583/13rRUxbCbsW |website=IEEE}}</ref> By 1960 Barton was lead architect on the Burroughs B5000 project. From 1959 to 1961, W. R. Lonergan was manager of the Burroughs Product Planning Group which included Barton, [[Donald Knuth]] as consultant, and Paul King. In May 1960, UCLA ran a two-week seminar "Using and Exploiting Giant Computers" to which Paul King and two others were sent. Stan Gill gave a presentation on virtual memory in the Atlas I computer. Paul King took the ideas back to Burroughs and it was determined that virtual memory should be designed into the core of the B5000.{{r|Waychoff 1979|p=3}}. Burroughs Corporation released the B5000 in 1964 as the first commercial computer with virtual memory.<ref>{{Cite book|first=Harvey G.|last=Cragon|title=Memory Systems and Pipelined Processors|publisher=Jones and Bartlett Publishers|page=113|year=1996|url=https://books.google.com/books?id=q2w3JSFD7l4C|isbn=978-0-86720-474-2}}</ref> IBM developed{{efn|IBM had previously used the term 'hypervisor' for the [[IBM System/360 Model 65|360/65]],<ref>{{cite conference | url = https://www.computer.org/csdl/proceedings/afips/1971/5077/00/50770163.pdf | title = System/370 integrated emulation under OS and DOS | first = Gary R. |last=Allred | page = 164 | conference = 1971 [[Spring Joint Computer Conference]] | volume = 38 | doi = 10.1109/AFIPS.1971.58 | date = May 1971 | publisher = AFIPS Press | access-date = 12 June 2022 }}</ref> but that did not involve virtual memory.}} the concept of [[hypervisor]]s in their [[IBM CP-40|CP-40]] and [[CP-67]], and in 1972 provided it for the [[IBM System/370|S/370]] as Virtual Machine Facility/370.<ref>{{cite book |url=http://www.vm.ibm.com/pubs/HCSF8A50.PDF |title=z/VM built on IBM Virtualization Technology General Information Version 4 Release 3.0 |id=GC24-5991-04 |date=12 April 2002}}</ref> IBM introduced the Start Interpretive Execution ('''SIE''') instruction as part of 370-XA on the 3081, and VM/XA versions of [[VM (operating system)|VM]] to exploit it. Before virtual memory could be implemented in mainstream operating systems, many problems had to be addressed. Dynamic address translation required expensive and difficult-to-build specialized hardware; initial implementations slowed down access to memory slightly.<ref name="denning" /> There were worries that new system-wide algorithms utilizing secondary storage would be less effective than previously used application-specific algorithms. By 1969, the debate over virtual memory for commercial computers was over;<ref name="denning" /> an [[IBM]] research team led by [[David Sayre]] showed that their virtual memory overlay system consistently worked better than the best manually controlled systems.<ref>{{Cite journal | last1 = Sayre | first1 = D. | title = Is automatic 'folding' of programs efficient enough to displace manual? | doi = 10.1145/363626.363629 | journal = Communications of the ACM | volume = 12 | issue = 12 | pages = 656–660 | year = 1969 | s2cid = 15655353 }}</ref> Throughout the 1970s, the IBM 370 series running their virtual-storage based operating systems provided a means for business users to migrate multiple older systems into fewer, more powerful, mainframes that had improved price/performance. The first [[minicomputer]] to introduce virtual memory was the Norwegian [[NORD-1]]; during the 1970s, other minicomputers implemented virtual memory, notably [[VAX]] models running [[OpenVMS|VMS]]. Virtual memory was introduced to the [[x86]] architecture with the [[protected mode]] of the [[Intel 80286]] processor, but its segment swapping technique scaled poorly to larger segment sizes. The [[Intel 80386]] introduced paging support underneath the existing [[Segmentation (memory)|segmentation]] layer, enabling the page fault exception to chain with other exceptions without [[double fault]]. However, loading segment descriptors was an expensive operation, causing operating system designers to rely strictly on paging rather than a combination of paging and segmentation.<ref>{{cite web | title = Difference Between Paging and Segmentation | url = https://unstop.com/blog/difference-between-paging-and-segmentation | website = Unstop | access-date = 14 December 2024 }}</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)