\section{Hypervisors}

\begin{frame}
   {Types of Virtualization Hypervisors}

   \begin{itemize}
      \item
      The layer that runs underneath the virtual machines and
      manages them
      \item
      Also called \textbf{Virtual Machine Monitor}
      (\textbf{VMM})
      \item
      Enables multiple VMs to share hardware resources
      transparently
      \item
      Two basic types:
      \begin{itemize}

         \item
         \textbf{Hardware Virtualization}

         Guest system is unaware it is running as a VM.  Also
         called \textbf{Full Virtualization}

         \item
         \textbf{Paravirtualization}

         Guest system knows it is running as a VM and has been
         modified to run better

      \end{itemize}

      \item
      Most modern hardware has hardware virtualization
      abilities (must be turned on in BIOS)

   \end{itemize}


\end{frame}

\cprotect\note{

   The host system, besides functioning normally with respect
   to software that it runs, also acts as the
   \textbf{hypervisor} that initiates, terminates and manages
   guests.
   There are two basic methods of virtualization:

   \begin{itemize}
      \item

      \textbf{Hardware virtualization:} the guest system runs
      without being aware it is running as a virtualized guest
      and does not require modification to be run in this
      fashion.

      \item
      \index{para-virtualization}

      \textbf{Para-virtualization:}: the guest system is aware
      it is running in a virtualized environment and has been
      modified specifically to work with it.

   \end{itemize}

   Widely-used CPUs from \textbf{Intel} and \textbf{AMD}
   incorporate virtualization extensions to the \textbf{x86}
   architecture that allow the hypervisor to run fully
   virtualized (i.e., unmodified) guest operating systems
   with only minor performance penalties.

   The \textbf{Intel} extension (\textbf{I}ntel
   \textbf{V}irtualization \textbf{T}echnology), usually
   abbreviated as \textbf{VT, IVT, VT-32} or \textbf{VT-64},
   is also known under the development code name
   \textbf{Vanderpool}. It has been available since the
   spring of 2005.
   The \textbf{AMD} extension is usually called
   \textbf{AMD-V} and is still sometimes referred to by the
   development code name \textbf{Pacifica}.
   For a detailed explanation and comparison of how these two
   extensions work see \url{https://lwn.net/Articles/182080/}.

   You can check directly if your CPU supports hardware
   virtualization extensions by looking at
   \filelink{/proc/cpuinfo}; if you have an
   \textbf{IVT}-capable chip you will see \verb?vmx? in the
   flags field, and if you have an \textbf{AMD-V} capable
   chip, you will see \verb?svm? in the same field. You may
   also have to ensure the virtualization capability is
   turned on in your \textbf{CMOS}.

   While the choice of operating systems tends to be more
   limited for para-virtualized guests, originally they
   tended to run more efficiently than fully virtualized
   guests. Advances in virtualization techniques have
   narrowed or eliminated such advantages, and the wider
   availability of the hardware support needed for full
   virtualization has made para-virtualization less
   advantageous and less popular.

}
\begin{frame}
   {External and in-Kernel Hypervisors}

   \begin{itemize}
      \item
      The hypervisor can be external to the host operating system kernel:

      \textbf{VMWare}

      \item

      The hypervisor can be internal to the host operating system kernel:

      \textbf{KVM}

      \item
      In this course we will concentrate on \textbf{KVM} as it is all open
      source and requires no external third party hypervisor program.

   \end{itemize}

\end{frame}

\cprotect\note{

}

\begin{frame}
   {Dedicated Hypervisor}
   \begin{figure}[H]
      \includegraphics[height=3.3in]{IMAGES/virt-hyper}
      \caption{Dedicated Hypervisor}
   \end{figure}
\end{frame}

\cprotect\note{

   Going past Emulation, merging of the hypervisor program
   into a specially designed light weight kernel was the
   next step in Virtualization deployment.

   \textbf{VMware ESX} (and related friends) is an
   example of a hypervisor embedded into an operating
   system.

}

\begin{frame}
   {Hypervisor in the Kernel}
   \begin{figure}[H]
      \includegraphics[height=3.3in]{IMAGES/virt-kvm}
      \caption   {Hypervisor in the Kernel}
   \end{figure}
\end{frame}

\cprotect\note{

   The \textbf{KVM} project added hypervisor capabilities
   into the \textbf{Linux} kernel. This leveraged the
   facilities of the kernel and enabled the kernel to be a
   hypervisor.

   As we have discussed, specific CPU chip functions and
   facilities were required and deployed for this type of
   virtualization.

}
