{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,3,24]],"date-time":"2026-03-24T15:49:46Z","timestamp":1774367386183,"version":"3.50.1"},"reference-count":58,"publisher":"Association for Computing Machinery (ACM)","issue":"4","license":[{"start":{"date-parts":[[2012,11,1]],"date-time":"2012-11-01T00:00:00Z","timestamp":1351728000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Comput. Syst."],"published-print":{"date-parts":[[2012,11]]},"abstract":"<jats:p>This article describes the historical context, technical challenges, and main implementation techniques used by VMware Workstation to bring virtualization to the x86 architecture in 1999. Although virtual machine monitors (VMMs) had been around for decades, they were traditionally designed as part of monolithic, single-vendor architectures with explicit support for virtualization. In contrast, the x86 architecture lacked virtualization support, and the industry around it had disaggregated into an ecosystem, with different vendors controlling the computers, CPUs, peripherals, operating systems, and applications, none of them asking for virtualization. We chose to build our solution independently of these vendors.<\/jats:p>\n          <jats:p>As a result, VMware Workstation had to deal with new challenges associated with (i) the lack of virtualization support in the x86 architecture, (ii) the daunting complexity of the architecture itself, (iii) the need to support a broad combination of peripherals, and (iv) the need to offer a simple user experience within existing environments. These new challenges led us to a novel combination of well-known virtualization techniques, techniques from other domains, and new techniques.<\/jats:p>\n          <jats:p>VMware Workstation combined a hosted architecture with a VMM. The hosted architecture enabled a simple user experience and offered broad hardware compatibility. Rather than exposing I\/O diversity to the virtual machines, VMware Workstation also relied on software emulation of I\/O devices. The VMM combined a trap-and-emulate direct execution engine with a system-level dynamic binary translator to efficiently virtualize the x86 architecture and support most commodity operating systems. By relying on x86 hardware segmentation as a protection mechanism, the binary translator could execute translated code at near hardware speeds. The binary translator also relied on partial evaluation and adaptive retranslation to reduce the overall overheads of virtualization.<\/jats:p>\n          <jats:p>Written with the benefit of hindsight, this article shares the key lessons we learned from building the original system and from its later evolution.<\/jats:p>","DOI":"10.1145\/2382553.2382554","type":"journal-article","created":{"date-parts":[[2012,12,4]],"date-time":"2012-12-04T20:10:57Z","timestamp":1354651857000},"page":"1-51","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":70,"title":["Bringing Virtualization to the x86 Architecture with the Original VMware Workstation"],"prefix":"10.1145","volume":"30","author":[{"given":"Edouard","family":"Bugnion","sequence":"first","affiliation":[{"name":"Stanford University"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Scott","family":"Devine","sequence":"additional","affiliation":[{"name":"VMware Inc."}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Mendel","family":"Rosenblum","sequence":"additional","affiliation":[{"name":"Stanford University"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Jeremy","family":"Sugerman","sequence":"additional","affiliation":[{"name":"Talaria Technologies, Inc."}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Edward Y.","family":"Wang","sequence":"additional","affiliation":[{"name":"Cumulus Networks, Inc."}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2012,11]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/1168857.1168860"},{"key":"e_1_2_1_2_1","volume-title":"Workshop on Binary Instrumentation and Applications. 7--14","author":"Agesen O.","year":"2006","unstructured":"Agesen , O. 2006 . Binary translation of returns . In Workshop on Binary Instrumentation and Applications. 7--14 . Agesen, O. 2006. Binary translation of returns. In Workshop on Binary Instrumentation and Applications. 7--14."},{"key":"e_1_2_1_3_1","first-page":"277","article-title":"Restricting memory access to protect data when sharing a common address space","volume":"7","author":"Agesen O.","year":"2004","unstructured":"Agesen , O. and Sheldon , J. W. 2004 . Restricting memory access to protect data when sharing a common address space . U.S. Patent 7 , 277 ,999. Agesen, O. and Sheldon, J. W. 2004. Restricting memory access to protect data when sharing a common address space. U.S. Patent 7,277,999.","journal-title":"U.S. Patent"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/1899928.1899930"},{"key":"e_1_2_1_5_1","volume-title":"Network Products: Ethernet Controllers Books 2.","author":"AMD Corporation","year":"1998","unstructured":"AMD Corporation . 1998 . Network Products: Ethernet Controllers Books 2. AMD Corporation. 1998. Network Products: Ethernet Controllers Books 2."},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/945445.945462"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/1899928.1899945"},{"key":"e_1_2_1_8_1","volume-title":"Proceedings of the USENIX Annual Technical Conference, FREENIX Track. 41--46","author":"Bellard F.","year":"2005","unstructured":"Bellard , F. 2005 . QEMU, a fast and portable dynamic translator . In Proceedings of the USENIX Annual Technical Conference, FREENIX Track. 41--46 . Bellard, F. 2005. QEMU, a fast and portable dynamic translator. In Proceedings of the USENIX Annual Technical Conference, FREENIX Track. 41--46."},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/1346281.1346286"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/2080.357392"},{"key":"e_1_2_1_11_1","first-page":"704","article-title":"Dynamic binary translator with a system and method for updating and maintaining coherency of a translation cache","volume":"6","author":"Bugnion E.","year":"1998","unstructured":"Bugnion , E. 1998 . Dynamic binary translator with a system and method for updating and maintaining coherency of a translation cache . U.S. Patent 6 , 704 ,925. Bugnion, E. 1998. Dynamic binary translator with a system and method for updating and maintaining coherency of a translation cache. U.S. Patent 6,704,925.","journal-title":"U.S. Patent"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/265924.265930"},{"key":"e_1_2_1_13_1","first-page":"496","article-title":"System and method for virtualizing computer systems","volume":"6","author":"Bugnion E.","year":"1998","unstructured":"Bugnion , E. , Devine , S. W. , and Rosenblum , M. 1998 . System and method for virtualizing computer systems . U.S. Patent 6 , 496 ,847. Bugnion, E., Devine, S. W., and Rosenblum, M. 1998. System and method for virtualizing computer systems. U.S. Patent 6,496,847.","journal-title":"U.S. Patent"},{"key":"e_1_2_1_14_1","unstructured":"Chappell G. 1994. DOS Internals. Addisson-Wesley. Chappell G. 1994. DOS Internals . Addisson-Wesley."},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/183018.183032"},{"key":"e_1_2_1_17_1","unstructured":"Compaq Phoenix Intel. 1996. BIOS Boot Specification v1.0.1. http:\/\/www.phoenix.com\/resources\/specs-bbs101.pdf. Compaq Phoenix Intel . 1996. BIOS Boot Specification v1.0.1. http:\/\/www.phoenix.com\/resources\/specs-bbs101.pdf."},{"key":"e_1_2_1_18_1","volume-title":"Connectix Virtual PC for Windows","author":"Connectix Corporation","unstructured":"Connectix Corporation . 2001. Connectix Virtual PC for Windows (Press Release). Retrieved on the Internet Archive\u2019s Wayback Machine . Connectix Corporation. 2001. Connectix Virtual PC for Windows (Press Release). Retrieved on the Internet Archive\u2019s Wayback Machine."},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1147\/rd.255.0483"},{"key":"e_1_2_1_20_1","volume-title":"Inside Windows NT","author":"Custer H.","unstructured":"Custer , H. 1993. Inside Windows NT . Microsoft Press . Custer, H. 1993. Inside Windows NT. Microsoft Press."},{"key":"e_1_2_1_21_1","volume-title":"Proceedings of the 1st IEEE\/ACM International Symposium on Code Generation and Optimization (CGO). 15--24","author":"Dehnert J. C.","unstructured":"Dehnert , J. C. , Grant , B. , Banning , J. P. , Johnson , R. , Kistler , T. , Klaiber , A. , and Mattson , J . 2003. The Transmeta Code Morphing - Software: Using speculation, recovery, and adaptive retranslation to address real-life challenges . In Proceedings of the 1st IEEE\/ACM International Symposium on Code Generation and Optimization (CGO). 15--24 . Dehnert, J. C., Grant, B., Banning, J. P., Johnson, R., Kistler, T., Klaiber, A., and Mattson, J. 2003. The Transmeta Code Morphing - Software: Using speculation, recovery, and adaptive retranslation to address real-life challenges. In Proceedings of the 1st IEEE\/ACM International Symposium on Code Generation and Optimization (CGO). 15--24."},{"key":"e_1_2_1_22_1","first-page":"397","article-title":"Virtualization system including a virtual machine monitor for a computer with a segmented architecture","volume":"6","author":"Devine S. W.","year":"1998","unstructured":"Devine , S. W. , Bugnion , E. , and Rosenblum , M. 1998 . Virtualization system including a virtual machine monitor for a computer with a segmented architecture . U.S. Patent 6 , 397 ,242. Devine, S. W., Bugnion, E., and Rosenblum, M. 1998. Virtualization system including a virtual machine monitor for a computer with a segmented architecture. U.S. Patent 6,397,242.","journal-title":"U.S. Patent"},{"key":"e_1_2_1_23_1","volume-title":"Proceedings of the 5th Annual Ottawa Linux Symposium (OLS).","author":"Dike J.","year":"2001","unstructured":"Dike , J. 2001 . User Mode Linux . In Proceedings of the 5th Annual Ottawa Linux Symposium (OLS). Dike, J. 2001. User Mode Linux. In Proceedings of the 5th Annual Ottawa Linux Symposium (OLS)."},{"key":"e_1_2_1_24_1","unstructured":"Drepper U. and Molnar I. 2003. The Native POSIX Thread Library for Linux. RedHat White Paper. Drepper U. and Molnar I. 2003. The Native POSIX Thread Library for Linux. RedHat White Paper."},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/264107.264126"},{"key":"e_1_2_1_26_1","volume-title":"Proceedings of the USENIX Annual Technical Conference. 293--306","author":"Ford B.","unstructured":"Ford , B. and Cox , R . 2008. Vx32: Lightweight user-level sandboxing on the x86 . In Proceedings of the USENIX Annual Technical Conference. 293--306 . Ford, B. and Cox, R. 2008. Vx32: Lightweight user-level sandboxing on the x86. In Proceedings of the USENIX Annual Technical Conference. 293--306."},{"key":"e_1_2_1_27_1","volume-title":"Personal Communication","author":"Gelsinger P.","unstructured":"Gelsinger , P. 1998. Personal Communication (Intel Corp. CTO) . Gelsinger, P. 1998. Personal Communication (Intel Corp. CTO)."},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1109\/MC.1974.6323581"},{"key":"e_1_2_1_30_1","volume-title":"Server Virtualization Hits Inflection Point as Number of Virtual Machines to Exceed Physical Systems in 2009","year":"1840","unstructured":"IDC. 2009. Server Virtualization Hits Inflection Point as Number of Virtual Machines to Exceed Physical Systems in 2009 ( Press Release) . http:\/\/www.idc.com\/about\/viewpressrelease.jsp?containerId=prUK2 1840 309. IDC. 2009. Server Virtualization Hits Inflection Point as Number of Virtual Machines to Exceed Physical Systems in 2009 (Press Release). http:\/\/www.idc.com\/about\/viewpressrelease.jsp?containerId=prUK21840309."},{"key":"e_1_2_1_31_1","unstructured":"Intel Corporation. 2008. Intel Virtualization Technology FlexMigration Application Note. Tech. rep. Intel Corporation . 2008. Intel Virtualization Technology FlexMigration Application Note. Tech. rep."},{"key":"e_1_2_1_32_1","volume-title":"Intel64 and IA-32 Architectures Software Developer\u2019s Manual","author":"Intel Corporation","unstructured":"Intel Corporation . 2010. Intel64 and IA-32 Architectures Software Developer\u2019s Manual Volume 2 (2A and 2B). Intel Corporation. 2010. Intel64 and IA-32 Architectures Software Developer\u2019s Manual Volume 2 (2A and 2B)."},{"key":"e_1_2_1_33_1","first-page":"9660","article-title":"Information processing -- Volume and file structure of CD-ROM for information interchange","author":"International Standards Organization","year":"1988","unstructured":"International Standards Organization . 1988 . Information processing -- Volume and file structure of CD-ROM for information interchange . In ISO 9660 - 1988 . International Standards Organization. 1988. Information processing -- Volume and file structure of CD-ROM for information interchange. In ISO 9660-1988.","journal-title":"ISO"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/243439.243447"},{"key":"e_1_2_1_35_1","unstructured":"King A. 1995. Inside Windows 95. Microsoft Press. King A. 1995. Inside Windows 95 . Microsoft Press."},{"key":"e_1_2_1_36_1","volume-title":"USENIX Annual Technical Conference, General Track. 71--84","author":"King S. T.","unstructured":"King , S. T. , Dunlap , G. W. , and Chen , P. M . 2003. Operating system support for virtual machines . In USENIX Annual Technical Conference, General Track. 71--84 . King, S. T., Dunlap, G. W., and Chen, P. M. 2003. Operating system support for virtual machines. In USENIX Annual Technical Conference, General Track. 71--84."},{"key":"e_1_2_1_37_1","volume-title":"Proceedings of the 2007 Ottawa Linux Symposium (OLS). 225--230","author":"Kivity A.","year":"2007","unstructured":"Kivity , A. 2007 . KVM: The Linux virtual machine monitor . In Proceedings of the 2007 Ottawa Linux Symposium (OLS). 225--230 . Kivity, A. 2007. KVM: The Linux virtual machine monitor. In Proceedings of the 2007 Ottawa Linux Symposium (OLS). 225--230."},{"key":"e_1_2_1_38_1","first-page":"785","article-title":"Deferred shadowing of segment descriptors in a virtual machine monitor for a segmented computer architecture","volume":"6","author":"Lim B.-H.","year":"2000","unstructured":"Lim , B.-H. , Le , B. C. , and Bugnion , E. 2000 . Deferred shadowing of segment descriptors in a virtual machine monitor for a segmented computer architecture . U.S. Patent 6 , 785 ,886. Lim, B.-H., Le, B. C., and Bugnion, E. 2000. Deferred shadowing of segment descriptors in a virtual machine monitor for a segmented computer architecture. U.S. Patent 6,785,886.","journal-title":"U.S. Patent"},{"key":"e_1_2_1_39_1","volume-title":"Sandpile: The world\u2019s leading source for technical x86 processor information","author":"Ludloff C.","year":"1996","unstructured":"Ludloff , C. 1996 . Sandpile: The world\u2019s leading source for technical x86 processor information . http:\/\/www.sandpile.org. Ludloff, C. 1996. Sandpile: The world\u2019s leading source for technical x86 processor information. http:\/\/www.sandpile.org."},{"key":"e_1_2_1_40_1","first-page":"4","article-title":"NetTop: Commercial technology in high assurance applications","volume":"9","author":"Meushaw R.","year":"2000","unstructured":"Meushaw , R. and Simard , D. 2000 . NetTop: Commercial technology in high assurance applications . NSA Tech Trend Notes 9 , 4 . Meushaw, R. and Simard, D. 2000. NetTop: Commercial technology in high assurance applications. NSA Tech Trend Notes 9, 4.","journal-title":"NSA Tech Trend Notes"},{"key":"e_1_2_1_41_1","unstructured":"Microsoft Corporation. 2008. Windows Server 2008R2 Hyper-V. http:\/\/www.microsoft.com\/en-us\/server-cloud\/windows-server\/hyper-v.aspx. Microsoft Corporation . 2008. Windows Server 2008R2 Hyper-V. http:\/\/www.microsoft.com\/en-us\/server-cloud\/windows-server\/hyper-v.aspx."},{"key":"e_1_2_1_42_1","unstructured":"Microsoft Corporation. 2009. Windows XP Mode and Windows Virtual PC. http:\/\/www.microsoft.com\/windows\/virtual-pc\/. Microsoft Corporation . 2009. Windows XP Mode and Windows Virtual PC. http:\/\/www.microsoft.com\/windows\/virtual-pc\/."},{"key":"e_1_2_1_43_1","volume-title":"Proceedings of the USENIX Annual Technical Conference, General Track. 391--394","author":"Nelson M.","unstructured":"Nelson , M. , Lim , B.-H. , and Hutchins , G . 2005. Fast transparent migration for virtual machines . In Proceedings of the USENIX Annual Technical Conference, General Track. 391--394 . Nelson, M., Lim, B.-H., and Hutchins, G. 2005. Fast transparent migration for virtual machines. In Proceedings of the USENIX Annual Technical Conference, General Track. 391--394."},{"key":"e_1_2_1_44_1","unstructured":"Parallels Corporation. 2006. Parallels Desktop for the Mac. http:\/\/www.parallels.com\/products\/desktop\/. Parallels Corporation . 2006. Parallels Desktop for the Mac. http:\/\/www.parallels.com\/products\/desktop\/."},{"key":"e_1_2_1_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/361011.361073"},{"key":"e_1_2_1_46_1","volume-title":"Proceedings of the 9th Conference on USENIX Security Symposium","volume":"9","author":"Robin J. S.","unstructured":"Robin , J. S. and Irvine , C. E . 2000. Analysis of the Intel Pentium\u2019s ability to support a secure virtual machine monitor . In Proceedings of the 9th Conference on USENIX Security Symposium , vol. 9 . Robin, J. S. and Irvine, C. E. 2000. Analysis of the Intel Pentium\u2019s ability to support a secure virtual machine monitor. In Proceedings of the 9th Conference on USENIX Security Symposium, vol. 9."},{"key":"e_1_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.1109\/88.473612"},{"key":"e_1_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/244804.244807"},{"key":"e_1_2_1_49_1","volume-title":"Proceedings of the 4th European Dependable Computing Conference (EDCC). 159--171","author":"Sieh V.","unstructured":"Sieh , V. and Buchacker , K . 2002. UMLinux -- A versatile SWIFI tool . In Proceedings of the 4th European Dependable Computing Conference (EDCC). 159--171 . Sieh, V. and Buchacker, K. 2002. UMLinux -- A versatile SWIFI tool. In Proceedings of the 4th European Dependable Computing Conference (EDCC). 159--171."},{"key":"e_1_2_1_50_1","doi-asserted-by":"publisher","DOI":"10.1145\/151220.151227"},{"key":"e_1_2_1_51_1","doi-asserted-by":"crossref","unstructured":"Solomon D. A. and Russinovich M. E. 2000. Inside Microsoft Windows 2000 3rd Ed. Microsoft Press. Solomon D. A. and Russinovich M. E. 2000. Inside Microsoft Windows 2000 3rd Ed. Microsoft Press.","DOI":"10.1016\/S1361-3723(00)03010-4"},{"key":"e_1_2_1_52_1","volume-title":"Proceedings of the USENIX Annual Technical Conference, General Track. 1--14","author":"Sugerman J.","unstructured":"Sugerman , J. , Venkitachalam , G. , and Lim , B . -H. 2001. Virtualizing I\/O devices on VMware Workstation\u2019s hosted virtual machine monitor . In Proceedings of the USENIX Annual Technical Conference, General Track. 1--14 . Sugerman, J., Venkitachalam, G., and Lim, B.-H. 2001. Virtualizing I\/O devices on VMware Workstation\u2019s hosted virtual machine monitor. In Proceedings of the USENIX Annual Technical Conference, General Track. 1--14."},{"key":"e_1_2_1_53_1","doi-asserted-by":"publisher","DOI":"10.1109\/MC.2005.163"},{"key":"e_1_2_1_54_1","doi-asserted-by":"publisher","DOI":"10.1145\/168619.168635"},{"key":"e_1_2_1_55_1","doi-asserted-by":"publisher","DOI":"10.5555\/1060289.1060307"},{"key":"e_1_2_1_56_1","doi-asserted-by":"publisher","DOI":"10.1145\/2063176.2063194"},{"key":"e_1_2_1_57_1","unstructured":"Wheeler D. A. 2001. SLOCCount. http:\/\/www.dwheeler.com\/sloccount\/. Wheeler D. A. 2001. SLOCCount. http:\/\/www.dwheeler.com\/sloccount\/."},{"key":"e_1_2_1_58_1","doi-asserted-by":"publisher","DOI":"10.5555\/1060289.1060308"},{"key":"e_1_2_1_59_1","doi-asserted-by":"publisher","DOI":"10.1145\/233013.233025"},{"key":"e_1_2_1_60_1","doi-asserted-by":"publisher","DOI":"10.1145\/1629175.1629203"}],"container-title":["ACM Transactions on Computer Systems"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2382553.2382554","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/2382553.2382554","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T09:34:38Z","timestamp":1750239278000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2382553.2382554"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2012,11]]},"references-count":58,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2012,11]]}},"alternative-id":["10.1145\/2382553.2382554"],"URL":"https:\/\/doi.org\/10.1145\/2382553.2382554","relation":{},"ISSN":["0734-2071","1557-7333"],"issn-type":[{"value":"0734-2071","type":"print"},{"value":"1557-7333","type":"electronic"}],"subject":[],"published":{"date-parts":[[2012,11]]},"assertion":[{"value":"2012-04-01","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2012-07-01","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2012-11-01","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}