638
M. Delfino
14.8.1 Multi-core CPUs and Virtualization
Multi-core CPUs have been discussed in Sect. 14.1. Ideally, all applications would
by now be multi-threaded and capable of efficiently utilizing the full capacity of
the cores in a CPU. Unfortunately, thread-safe programming is a specialized skill
and the vast majority of programs used in the world are not thread-safe. Hence, a
different approach is needed to fully use multi-core CPUs.
In addition, applications running in distributed computing environments often
have intricate dependencies on the underlying libraries and on the operating system.
Continuously porting applications to newer versions of the underlying environment
and verifying their proper operation requires much larger human resources than can
be afforded by scientific communities (and even by many business communities).
Hence, deployment of applications in these environments enters into conflict with
system administration good practices, which require deploying new operating
system versions soon after they become available.
These two factors have lead to the re-emergence of two techniques from the past
which enable operating system virtualization: 76 hypervisors and virtual machines
(first deployed in the 1970s by IBM in its VM operating system 77 ), and containers
(also known as jails, partitions or zones, first deployed commercially in the early
2000s by Sun Microsystems 78 ).
Virtual machines are implemented by deploying over the hardware a special type
of operating system called a hypervisor. The hypervisor is designed to efficiently run
multiple copies of a special type of application called a virtual image. In addition,
newer versions of hardware implement special features to accelerate virtual image
execution. The virtual image contains one or more applications together with the
full operating system and library environment required by them. In this way, every
time the hypervisor starts running an image it effectively bootstraps a new virtual
computer, which is referred to as a virtual machine. Each image can have a different
operating system and different libraries. If properly deployed, virtual machines
allow to run older, less secure operating systems without compromising security,
as the hypervisor can limit access to hardware and file system resources.
Virtual machines allow the implementation of many interesting features. One
of the best known is live-migration, 79 which combines virtual machines with
checkpoint/restart and high performance multi-connection file servers to be able
76 For a short, rather technical overview, see “Virtualization and Containerization of Application
Infrastructure: A Comparison”, Thijs Scheepers, 21st Twente Student Conference on IT June 23rd,
2014, Enschede, The Netherlands. Available from the author at https://thijs.ai/papers/scheepersvirtualization-containerization.pdf
77 “The Origin of the VM/370 Time-Sharing System”, R. J. Creasy, IBM J. Res. Develop., Vol. 25,
No. 5 (September 1981).
78 Price, Daniel, and Andrew Tucker. “Solaris Zones: Operating System Support for Consolidating
Commercial Workloads.” LISA. Vol. 4. 2004.
79 Sapuntzakis, Constantine P., et al. “Optimizing the migration of virtual computers.” ACM
SIGOPS Operating Systems Review 36.SI (2002): 377–390.
Précédent

- 644/1083

Suivant