Fundamentos de Virtualización, Contenedores Docker y Gestión de Concurrencia
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 4,56 KB
Monitores y Conceptos de Virtualización
Monitor: Es una clase que asegura la corrección de las operaciones frente al acceso de múltiples hilos.
Virtualización
La virtualización es una capa abstracta que separa el hardware físico del sistema operativo (SO), con el fin de brindar una mayor flexibilidad y utilización de los recursos informáticos. Esta tecnología permite que múltiples máquinas virtuales (VM) con sistemas operativos heterogéneos puedan ejecutarse individualmente en la misma máquina física.
Conceptos Clave
- Host: El sistema anfitrión.
- Guest: El sistema invitado.
- Hipervisor: El software que gestiona las máquinas virtuales.
- Imagen: El archivo que contiene el sistema y las aplicaciones.
- Snapshot: Captura del estado de la VM en un momento determinado.
Ventajas de la Virtualización
- Eficiencia y flexibilidad.
- Reducción de costos.
- Mayor seguridad.
- Mayor disponibilidad y recuperación ante desastres.
- Facilidad de mantenimiento.
Máquinas Virtuales (VM)
Una VM es una computadora que se ejecuta sobre hardware emulado por un hipervisor.
Docker y Contenedores
Docker: Es una plataforma de código abierto que permite la creación, despliegue y ejecución de aplicaciones dentro de un contenedor. Posee un motor, una API y un cliente que pueden ejecutarse en la misma máquina o de forma separada.
Contenedor: Son entornos livianos y portátiles que guardan el código, las herramientas y la configuración del sistema para que una aplicación funcione correctamente. Los contenedores comparten el sistema operativo del host, son altamente escalables y eficientes, permitiendo el escalado horizontal.
Comparativa: Docker vs. Máquinas Virtuales
- Eficiencia: Docker no precisa emular hardware, por lo que es más eficiente en el uso de recursos, además de ser más liviano y sencillo.
- Seguridad: Docker comparte bibliotecas, por lo que si una se infecta, el riesgo se extiende a varios contenedores. En este sentido, la VM es más segura debido a su aislamiento total.
Namespaces
Los Namespaces permiten encapsular recursos globales del sistema de forma aislada, evitando que estén fuera de su entorno sin tener que recurrir a una VM. Su función principal es limitar la visibilidad que un grupo de procesos tiene del resto del sistema.
Configuración y Comandos de Docker
Ejemplo de Dockerfile
FROM node:14
WORKDIR /app
COPY package.json .
RUN npm install
COPY ./src .
EXPOSE 8080
CMD ["npm", "start"]Comandos Esenciales
- Crear imagen:
docker build -t app . - Ejecutar contenedor:
docker run -p 80:8080 -v /ruta:/ruta_contenedor app
Gestión de Concurrencia y Exclusión Mutua
Las Regiones Críticas y las Regiones Críticas Condicionales (RCC) garantizan la exclusión mutua de forma automática. En el caso de las RCC, permiten que un proceso espere hasta que se cumpla una condición específica.
Por otro lado, los Semáforos son mecanismos de bajo nivel que requieren un manejo manual mediante las operaciones wait y signal. Aunque son más flexibles, también son más propensos a errores de programación.
Implementación del Problema de la Panadería en Ada
procedure Panaderia is
task Bandeja is
entry Poner;
entry Sacar;
end Bandeja;
task body Bandeja is
Cantidad : Integer := 0;
begin
loop
select
when Cantidad < 5 =>
accept Poner do
Cantidad := Cantidad + 1;
end Poner;
or
when Cantidad > 0 =>
accept Sacar do
Cantidad := Cantidad - 1;
end Sacar;
end select;
end loop;
end Bandeja;
task type Panadero;
task body Panadero is
begin
loop
Bandeja.Poner;
end loop;
end Panadero;
task type Repartidor;
task body Repartidor is
begin
loop
Bandeja.Sacar;
end loop;
end Repartidor;
P1, P2, P3 : Panadero;
R1, R2 : Repartidor;
begin
null;
end Panaderia;