\documentclass[12pt,a4paper]{article}
\usepackage[spanish]{babel}

\title{Ejercicio II: Ventajas de la Virtualización}
\author{Nicolás A. Ortega Froysa}

\begin{document}
\maketitle
\pagebreak
\tableofcontents
\pagebreak
\section{Hoja De Control Del Documento}
\begin{table}[h!]
	\begin{center}
		\caption{Documento/Archivo}
		\label{tab:document}
		\begin{tabular}{|l|c|l|c|}
			\hline
			{\bf Fecha Última Modificación} & \the\day/\the\month/\the\year &
			{\bf Versión/Revisión} & v01r01 \\ \hline
			{\bf Fecha Creación} & 16/11/2021 & \hfill & \hfill \\ \hline
			{\bf Fecha Finalización} & \the\day/\the\month/\the\year & \hfill &
			\hfill \\ \hline
		\end{tabular}
	\end{center}
\end{table}

\begin{table}[h!]
	\begin{center}
		\caption{Registro De Cambios}
		\label{tab:registro-cambios}
		\begin{tabular}{|c|c|c|}
			\hline
			{\bf Versión/Revisión} & {\bf Página(s)} & {\bf Descripción} \\
			\hline
			v01r01 & Todas & Creación y elaboración del documento. \\ \hline
		\end{tabular}
	\end{center}
\end{table}

\begin{table}[h!]
	\begin{center}
		\caption{Autores Del Documento}
		\label{tab:autores}
		\begin{tabular}{|c|c|}
			\hline
			{\bf Apellidos, Nombre} & {\bf Curso} \\ \hline
			Ortega Froysa, Nicolás Andrés & 1 \\ \hline
		\end{tabular}
	\end{center}
\end{table}

\begin{table}[h!]
	\begin{center}
		\begin{tabular}{|p{4cm}|p{4cm}|p{4cm}|}
			\hline
			{\bf Preparado} & {\bf Revisado} & {\bf Aprobado} \\ \hline
			Ortega Froysa, Nicolás Andrés & \hfill & \hfill \\ \hline
		\end{tabular}
	\end{center}
\end{table}

\pagebreak

\section{¿Qué es la Virtualización?}
La {\em virtualización} es una técnica que se usa para crear una máquina o
sistema virtual sobre el sistema real. Esto contribuye a uno de los objetivos de
los sistemas operativos que es la abstracción. Estas virtualizaciones se pueden
hacer de varias maneras:

\begin{itemize}
	\item Creando toda una máquina virtual entera, simulando todo el {\em
		hardware} de una máquina para poder correr un sistema por encima. Como
		generalmente se usa para la virtualización {\em no-nativa}, referiremos
		a esto como tal.
	\item Un sistema que funciona a base del {\em hardware} real de la máquina,
		pero corriendo un sistema operativo distinto. Lo que nosotros llamaremos
		la virtualización {\em nativa}.
	\item Hay algunos casos donde lo único que se hace es crear un ambiente
		virtual para poder correr un único programa, que lo denominaremos
		virtualización {\em de programa}.
	\item Existen unas virtualizaciones que son algo entre los dos anteriores,
		que serían los contenedores. Éstos Pueden correr varios servicios, pero
		son mínimos, y corren, en cierto modo, sobre el hardware real de la
		máquina, no un hardware virtual.
\end{itemize}

Todos éstos tienen sus ventajas y desventajas, y se han de aplicar dependiendo
de cuáles son los objetivos o las tareas a mano; y por supuesto, tienen sus
ventajas y desventajas sobre la {\em no-virtualización} (que es decir correr de
forma nativa).

\section{Virtualización No-Nativa}
Al crear hasta un {\em hardware} virtual, este tipo de virtualización simula
todo lo que sería un ordenador. Esto nos provee varias ventajas y también
desventajas:

\begin{itemize}
	\item Ventajas:
		\begin{itemize}
			\item Se pueden correr programas compiladas para arquitecturas
				distintas a la de la máquina anfitrión.
			\item Se pueden correr programas con seguridad de que no afectará ni
				infectará el {\em hardware} de la máquina.
			\item En algunos casos se pueden simular otros tipos de dispositivos
				periféricos.
		\end{itemize}
	\item Desventajas:
		\begin{itemize}
			\item Al simular toda una máquina, es más lento que otros tipos de
				virtualización.
			\item No puede aprovecharse del {\em hardware} real para
				virtualizar, salvo si la CPU provee interfaces para esta tarea.
		\end{itemize}
\end{itemize}

\section{Virtualización Nativa}
Al ser nativa, este tipo de virtualización permite aprovecharse más de la
máquina física anfitrión, ya que la máquina huésped usa el mismo {\em hardware}
que el anfitrión, o al menos la misma arquitectura. Esto aporta lo siguiente:

\begin{itemize}
	\item Ventajas:
		\begin{itemize}
			\item Se puede aprovechar del hardware de la máquina sin necesidad
				de virtualizarlo.
			\item Permite probar otros sistemas operativos en una misma máquina
				con más rendimiento.
		\end{itemize}
	\item Desventajas:
		\begin{itemize}
			\item Está más limitado al {\em hardware} de la máquina (en cuanto a
				su arquitectura).
		\end{itemize}
\end{itemize}

\section{Virtualización de Programa}
Para este tipo de virtualización podemos pensar en la máquina virtual de Java.
Consta de una máquina virtual que corre un solo programa. Tienen las siguientes
ventajas:

\begin{itemize}
	\item Ventajas:
		\begin{itemize}
			\item Un mismo binario se puede correr cualquier máquina que tenga
				la máquina virtual.
			\item Al no tener que virtualizar todo un sistema operativo, rinde
				mejor que las virtualizaciones nativas y no-nativas.
		\end{itemize}
	\item Desventajas:
		\begin{itemize}
			\item Es más lento que correr una aplicación nativa (en binario para
				esa arquitectura).
		\end{itemize}
\end{itemize}

\section{Contenedores}
Los contenedores son algo raro entre la virtualización de tipo 2 y la
virtualización de programa. Crea su propio sistema aislado para correr las
aplicaciones, pero se basa en el sistema anfitrión. Es algo que es muy útil para
correr servicios en servidores y crear ambientes limpios. Aporta lo siguiente:

\begin{itemize}
	\item Ventajas:
		\begin{itemize}
			\item Crea un ambiente limpio de desarrollo y trabajo.
			\item Facilita adelantar puertos para proveer servicios red.
		\end{itemize}
	\item Desventajas:
		\begin{itemize}
			\item Por lo visto no puedes usarlo para aplicaciones gráficas.
			\item Está limitado a la misma arquitectura que la máquina
				anfitrión.
		\end{itemize}
\end{itemize}

\section{Conclusión}
La virtualización en general es útil para casos donde queremos trabajar en un
sistema aislado o probar un sistema/arquitectura distinta. Siempre habrá un
coste en cuanto a rendimiento (de más o menos dependiendo del tipo de
virtualización).

\pagebreak

\section{Derechos de Autor y Licencia}
Copyright \copyright\ \the\year\ Nicolás A. Ortega Froysa <nicolas@ortegas.org>
\\
Este documento se distribuye bajo los términos y condiciones de la licencia
Creative Commons Attribution No Derivatives 4.0 International.

\end{document}
