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;

Entradas relacionadas: