Monografía Procesamiento Distribuido, Cliente/Servidor y Clusters - 2do Parcial SO - 2024

Document Details

Universidad Nacional del Nordeste

Lezcano, Lautaro; Gon, Victoria; Cantero, Augusto; Escalante, Joaquín; Carbó, Bautista

Tags

procesamiento distribuido sistemas operativos computación distribuida arquitectura cliente-servidor

Summary

This document is a student's report on distributed processing, client-server architectures, and clusters, likely part of a systems analysis course for an undergraduate program. The title and initial text strongly suggests it to be a university assignment rather than an exam.

Full Transcript

Universidad Nacional del Nordeste Facultad de Ciencias Exactas y Naturales y Agrimensura Carrera: Licenciatura en Sistemas de Información Asignatura: Sistemas Operativos Grupo N°: 19...

Universidad Nacional del Nordeste Facultad de Ciencias Exactas y Naturales y Agrimensura Carrera: Licenciatura en Sistemas de Información Asignatura: Sistemas Operativos Grupo N°: 19 Integrantes Apellido y Nombre D.N.I. L.U. Lezcano, Lautaro 46.381.127 60.060 Gon, Victoria 46.776.550 57.990 Cantero, Augusto 46.773.711 60.082 Escalante, Joaquín 45.526.785 --- Carbó, Bautista 43.534.330 --- PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 2 de 28 Índice Introducción.................................................................................................................... 4 1. Procesamiento de datos distribuido........................................................................... 6 1.1. Sistemas Distribuidos.......................................................................................... 6 1.2. Procesamiento Distribuido y Paso de Mensajes................................................ 8 1.3. Tipos de Servicios de Mensajería....................................................................... 9 2. Cliente/Servidor........................................................................................................ 10 2.1. Orígenes del Modelo Cliente/Servidor.............................................................. 10 2.2. Estructura del Modelo Cliente/Servidor............................................................. 11 2.3. Funcionamiento del Modelo Cliente/Servidor................................................... 11 2.4. Tipos de Modelo Cliente/Servidor..................................................................... 12 2.5. Aplicaciones del Modelo Cliente/Servidor......................................................... 14 2.6. Ventajas del Modelo Cliente/Servidor............................................................... 14 2.7. Desafíos del Modelo Cliente/Servidor............................................................... 15 2.8. Evolución del Modelo Cliente/Servidor............................................................. 15 2.9. Un modelo especifico de los sistemas distribuidos: Las tres Capas............... 16 2.10. Middleware....................................................................................................... 16 3. Clusters..................................................................................................................... 17 3.1. Tipos de Clusters............................................................................................... 19 3.2. Gestión de Fallos............................................................................................... 20 3.3. Computación en paralelo................................................................................... 20 3.4. Clústeres vs SMP............................................................................................... 21 3.6. Algoritmos de los Clúster................................................................................... 22 3.6.1. K-Means....................................................................................................... 22 3.6.2. K-Medoids.................................................................................................... 22 3.6.3. Algoritmo de clasificación............................................................................ 23 3.6.4. Árbol de decisión......................................................................................... 23 3.6.5. K-Vecinos más cercanos (K-NN)................................................................ 24 3.6.6. Máquina de vectores de soporte (Support Vector Machine)..................... 24 3.6.8. Análisis discriminante lineal (LDA)................................................................. 24 Conclusión................................................................................................................. 25 Bibliografía.................................................................................................................... 27 Sistemas Operativos 2024 PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 3 de 28 Sistemas Operativos 2024 PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 4 de 28 Introducción En la actualidad, el procesamiento distribuido se ha convertido en una de las arquitecturas más relevantes y eficaces en el ámbito de los sistemas informáticos. Esta metodología permite distribuir tareas y recursos a través de múltiples nodos en una red, mejorando así la eficiencia, escalabilidad y disponibilidad de las aplicaciones. En este contexto, los sistemas operativos juegan un papel crucial, ya que son responsables de gestionar los recursos y facilitar la comunicación entre los diferentes componentes del sistema. La comprensión del procesamiento distribuido es esencial para desarrollar aplicaciones robustas y eficientes, especialmente en un mundo donde la demanda de procesamiento de datos está en constante crecimiento. El modelo cliente/servidor es uno de los enfoques más comunes en el procesamiento distribuido. En esta arquitectura, los clientes solicitan servicios o recursos a un servidor central, que a su vez procesa estas solicitudes y devuelve los resultados correspondientes. Este modelo permite una clara separación de responsabilidades, donde los clientes pueden centrarse en la interacción con el usuario y el servidor en la gestión de datos y procesamiento. La flexibilidad de esta arquitectura la ha llevado a ser ampliamente adoptada en diversas aplicaciones, desde sistemas web hasta servicios en la nube, donde múltiples clientes pueden acceder a un mismo servidor simultáneamente. Por otro lado, los clusters representan otra forma de abordar el procesamiento distribuido. Un clúster es un conjunto de computadoras interconectadas que trabajan juntas como si fueran un solo sistema. Esta configuración permite mejorar el rendimiento y la disponibilidad de los servicios, ya que, si uno de los nodos falla, los otros pueden continuar operando sin interrupciones. Además, los clusters son especialmente útiles para tareas que requieren un alto poder de cómputo, como el procesamiento de grandes volúmenes de datos o la ejecución de cálculos complejos en paralelo. Los sistemas operativos diseñados para gestionar clusters son capaces de coordinar eficientemente las tareas y equilibrar la carga entre los diferentes nodos, optimizando así el uso de los recursos disponibles. En resumen, el procesamiento distribuido, junto con los modelos cliente/servidor y los clusters, son conceptos fundamentales en la arquitectura de sistemas operativos modernos. Estos enfoques no solo mejoran la eficiencia y el rendimiento de las aplicaciones, sino que también proporcionan soluciones escalables y resilientes ante fallos. A medida que la tecnología continúa avanzando, la comprensión y aplicación de estas arquitecturas se volverán aún más cruciales para satisfacer las crecientes demandas del entorno digital. En Sistemas Operativos 2024 PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 5 de 28 las siguientes secciones, exploraremos en profundidad cada uno de estos componentes, analizando sus características, ventajas y desafíos en el contexto de los sistemas operativos actuales. Para ello tomaremos devuelta algunos conceptos que ya se mencionaron. Sistemas Operativos 2024 PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 6 de 28 1. Procesamiento de datos distribuido Figura 1. Arquitectura de red cliente-servidor Adaptado de Stallings, 2017, p. 621 1.1. Sistemas Distribuidos Antes de hablar de procesamiento de datos distribuidos, sería oportuno hablar de qué son los sistemas distribuidos. Un sistema distribuido es una red de computadoras independientes que parecen funcionar como una única entidad para los usuarios finales. Estas computadoras colaboran para resolver tareas, compartir recursos y coordinarse de manera eficiente, pero cada una tiene su propio procesador y memoria. Su principal diferencia con un sistema de un único procesador es la comunicación de procesos, ya que en un sistema con un solo procesador la comunicación supone implícitamente la existencia de memoria compartida, mientras que en los sistemas distribuidos no existe la memoria compartida, en este sistema para que se comuniquen los procesos tienen que apegarse a reglas conocidas como protocolos, donde estos toman formas de varias capas donde cada capa tiene sus propias metas y reglas. Este sistema se basa en la transferencia de mensajes, donde para pasarse mensajes tienen distintos acuerdos. La ISO (Organización Internacional de Estándares) desarrollo un modelo Sistemas Operativos 2024 PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 7 de 28 de referencia que identifica en forma clara los distintos niveles, estandariza los nombres de los niveles y señala cual nivel debe realizar cada trabajo. Este modelo se llama “modelo de referencia para interconexión de sistemas abiertos” también conocido como modelo OSI, y está diseñado para permitir la comunicación de los sistemas abiertos los cuales son aquellos preparados para comunicarse con cualquier otro sistema abierto mediante reglas estándar, que son acuerdos en la forma en que debe desarrollarse la comunicación. El modelo OSI distingue dos tipos de protocolos:  Orientados hacia conexiones: donde antes de intercambiar los datos, el emisor y el receptor:  Establecen en forma explícita una conexión.  Probablemente negocien el protocolo a utilizar.  Al finalizar, deben terminar la conexión.  El teléfono es un sistema de comunicación orientado hacia la conexión.  Sin conexión:  No es necesaria una configuración de antemano.  El emisor trasmite el primer mensaje cuando está listo.  El depósito de una carta en un buzón es una comunicación sin conexión. Cada capa se encarga de una tarea específica y solo necesita saber cómo comunicarse con la capa de abajo. La interfaz define qué servicios ofrece cada capa, haciendo que el sistema sea más organizado y fácil de mantener. Donde el protocolo de la capa “n” utiliza la información de la capa “n”, en donde cada protocolo se puede cambiar independientemente de los demás. Estos sistemas permiten gestionar no solo el procesamiento de datos, sino también otras tareas como almacenamiento, redes, seguridad, y más. La tarea en la cual nos vamos a centrar en profundidad es la de procesamiento de datos, la cual es una técnica específica dentro de los sistemas distribuidos. Se enfoca en dividir grandes conjuntos de datos o tareas complejas en partes más pequeñas que pueden ser procesadas simultáneamente en múltiples nodos, lo que maximiza el rendimiento y la capacidad de respuesta al aprovechar la potencia colectiva de múltiples máquinas. Esto permite que el sistema tenga:  Escalabilidad: Permite manejar cantidades masivas de datos que serían imposibles de procesar en una sola máquina.  Velocidad: Al dividir el trabajo en múltiples nodos, los cálculos se realizan mucho más rápido. Sistemas Operativos 2024 PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 8 de 28  Tolerancia a fallos: Si un nodo falla, otros pueden continuar con el procesamiento, evitando la pérdida de datos.  Costo-efectivo: Se pueden utilizar múltiples computadoras menos potentes en lugar de una supercomputadora. Pero, aunque sus ventajas son muchas, el procesamiento de datos distribuidos presenta desventajas significativas, para ello es importante evaluar cuidadosamente los pros y los contras antes de implementarlo. Las desventajas que ofrece el procesamiento de datos distribuidos son:  Coherencia de datos: Asegurar que todos los nodos tengan acceso a la versión más reciente de los datos es un desafío importante. Para solucionarlo, se pueden usar bases de datos distribuidas con modelos de coherencia sólida o coherencia eventual.  Latencia de red: La comunicación entre nodos puede verse afectada por la latencia, lo que puede impactar el rendimiento. Optimizar la red, el particionamiento de datos y utilizar mecanismos de caché puede mitigar estos efectos.  Complejidad del sistema: La gestión y coordinación de nodos, la tolerancia a fallos y la complejidad inherente de los sistemas distribuidos requieren herramientas de orquestación (como Kubernetes) y monitoreo constante.  Seguridad de datos: La distribución de datos en Múltiples nodos aumenta el riesgo de accesos no autorizados. El cifrado y los controles de acceso son esenciales para proteger la información sensible. 1.2. Procesamiento Distribuido y Paso de Mensajes En los sistemas de procesamiento distribuido, cada computadora opera de manera independiente y no comparte memoria principal, lo que significa que no se pueden utilizar técnicas de comunicación basadas en memoria compartida, como los semáforos. En su lugar, se emplean métodos de comunicación que se fundamentan en el paso de mensajes. Existen dos técnicas principales para este propósito: la primera se basa en el envío directo de mensajes, similar a lo que ocurre en sistemas monolíticos; la segunda son las llamadas a procedimiento remoto (RPC). Por ejemplo: en el modelo cliente/servidor, un proceso cliente solicita un servicio (por ejemplo, acceder a un archivo) y envía un mensaje a un proceso servidor. Este último procesa la solicitud y responde a través de otro mensaje. Para esto, se requieren dos Sistemas Operativos 2024 PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 9 de 28 funciones básicas: Send (enviar) y Receive (recibir). La función Send especifica el destinatario y el contenido del mensaje, mientras que Receive determina quién envía el mensaje y proporciona un buffer para almacenarlo. El paso de mensajes se implementa mediante un módulo que facilita las interacciones entre procesos. Las solicitudes de servicio se expresan utilizando primitivas y parámetros, donde una primitiva especifica la acción deseada y los parámetros transportan la información necesaria. La función Send se utiliza para enviar mensajes, construyendo una unidad de datos que incluye el identificador del proceso destinatario y el mensaje. Esta unidad se envía a la máquina que aloja al proceso receptor, utilizando protocolos de comunicación como TCP/IP. Al llegar, el mensaje es gestionado por el módulo de paso de mensajes, que lo almacena en el buffer correspondiente. El proceso receptor debe señalar su disponibilidad para recibir mensajes mediante la función Receive, que designa un buffer para el mensaje entrante. Alternativamente, el módulo puede notificar al proceso receptor cuando un mensaje ha llegado. 1.3. Tipos de Servicios de Mensajería Los servicios de paso de mensajes pueden ser fiables o no fiables. Un servicio fiable garantiza la entrega de los mensajes mediante protocolos que incluyen comprobaciones de error y acuses de recibo. En contraste, un servicio no fiable simplemente envía el mensaje sin confirmar su recepción, lo que puede reducir la complejidad del sistema a cambio de sacrificar seguridad en la entrega. Además, los servicios pueden ser bloqueantes o no bloqueantes. Con las primitivas no bloqueantes, el proceso no se suspende al realizar un Send o Receive, lo que permite una mayor eficiencia. Sin embargo, esto puede complicar la depuración de programas debido a posibles condiciones de carrera. Por otro lado, las primitivas bloqueantes garantizan que el proceso no continúe hasta que el mensaje haya sido transmitido o recibido. En el procesamiento de datos distribuidos, se utilizan diversas arquitecturas para implementar estos servicios de mensajería. En este trabajo nos centraremos en dos de las más comunes: la arquitectura cliente-servidor y la de clúster, donde ambos modelos utilizan Sistemas Operativos 2024 PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 10 de 28 diferentes enfoques para gestionar la distribución de tareas y la comunicación entre procesos, manteniendo el sistema eficiente y escalable. 2. Cliente/Servidor El concepto de Computación Cliente/Servidor está teniendo cada vez más importancia en el mundo de los sistemas tecnológicos. Este concepto hace referencia a un modelo de comunicación y arquitectura de software en el que se dividen las tareas y responsabilidades entre dos nodos en una red: clientes y servidores. ¿Qué es el modelo cliente/servidor? El modelo cliente/servidor es una de las arquitecturas más importantes en el ámbito de la computación y las redes. Su influencia se siente en casi todas las aplicaciones modernas, desde las más simples hasta las más complejas. Este modelo permite la comunicación eficiente entre dispositivos, facilitando el acceso a recursos y servicios de manera estructurada. Como el propio término sugiere, y como mencionamos anteriormente, un entorno cliente/servidor está formado por clientes y servidores. ¿Qué objetivo busca? La arquitectura cliente-servidor tiene como objetivo principal dividir las funciones y responsabilidades del software en diferentes capas. Esta separación de responsabilidades es fundamental para un buen diseño de software. Una de las divisiones más importantes y claras es precisamente la que ofrece esta arquitectura. Entre los beneficios de esta división se encuentran varios aspectos, como la facilidad para escalar o mantener las aplicaciones de manera independiente. Esto también permite la formación de equipos de trabajo especializados para cada parte, o incluso el uso de infraestructuras distintas y optimizadas para cada componente del sistema, como se mencionó previamente. 2.1. Orígenes del Modelo Cliente/Servidor. El modelo cliente/servidor se originó en la década de 1980, en un momento en que las computadoras personales y las redes de área local (LAN) comenzaron a popularizarse. Antes de la adopción de este modelo, la computación se centraba en máquinas individuales que realizaban todas las funciones de procesamiento y almacenamiento de datos en un solo Sistemas Operativos 2024 PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 11 de 28 dispositivo. Sin embargo, con la creciente necesidad de compartir recursos y la aparición de protocolos de comunicación, se hizo evidente la necesidad de un modelo que facilitara la interacción entre múltiples dispositivos. A medida que la tecnología avanzaba, el modelo cliente/servidor comenzó a ganar aceptación, permitiendo que una computadora (el servidor) proporcionara servicios a varias computadoras (los clientes). Esto sentó las bases para el desarrollo de aplicaciones distribuidas, que se convirtieron en la norma en la arquitectura de software moderna. 2.2. Estructura del Modelo Cliente/Servidor. La estructura del modelo cliente/servidor se compone de dos componentes principales: los clientes y los servidores. Cada uno desempeña un papel específico en la comunicación. 1. Clientes: Son dispositivos o aplicaciones que inician solicitudes de servicio hacia un servidor. Los clientes pueden ser computadoras de escritorio, laptops, dispositivos móviles o aplicaciones que operan en el entorno del usuario. Su principal función es gestionar la interfaz de usuario, lo que implica mostrar información y permitir la interacción. Además, son responsables de enviar solicitudes al servidor y procesar las respuestas recibidas, facilitando así la comunicación entre el usuario y el servidor. 2. Servidores: Son dispositivos o aplicaciones dedicados a proporcionar servicios, recursos o datos a los clientes. Pueden ser hardware especializado o instancias en la nube que ejecutan software de servidor. Los servidores están diseñados para ofrecer diversos servicios, como alojamiento web, gestión de bases de datos o aplicaciones, entre otros. Su función principal es recibir y procesar las solicitudes de los clientes, y devolver respuestas adecuadas, asegurando así una comunicación eficiente y continua. 3. Red: A su vez, hay un tercer elemento aparte del Cliente y el servidor que no hemos nombrado antes. La Red. La computación cliente/servidor normalmente es una computación distribuida. Los usuarios, las aplicaciones y los recursos se distribuyen en respuesta a los requisitos de trabajo y se unen a través de una LAN, WAN o Internet. Podríamos decir que es el entorno en el que se reúnen Cliente y Servidor. 2.3. Funcionamiento del Modelo Cliente/Servidor El modelo cliente/servidor opera a través de un proceso de comunicación estructurado que se puede dividir en varias etapas: Sistemas Operativos 2024 PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 12 de 28 1. Establecimiento de Conexión: Antes de que un cliente pueda comunicarse con un servidor, debe establecer una conexión. Esto generalmente implica la utilización de un protocolo de comunicación. Por ejemplo, en el contexto de la web, se utiliza HTTP/HTTPS para la comunicación entre navegadores (clientes) y servidores web. 2. Envío de Solicitudes: Una vez establecida la conexión, el cliente envía una solicitud al servidor. Esta solicitud puede ser de diversos tipos, dependiendo del servicio que se requiera. Por ejemplo, puede ser una solicitud de una página web, la consulta de datos en una base de datos o la subida de un archivo. Figura 2. Pasaje de mensajes en un modelo cliente/servidor. Tanenbaum & Renesse, 1985, p. 8 3. Procesamiento de Solicitudes: Al recibir una solicitud, el servidor procesa la información. Este procesamiento puede implicar acceder a bases de datos, ejecutar scripts o realizar cálculos. La capacidad del servidor para manejar múltiples solicitudes a la vez es crucial para su rendimiento. 4. Envío de Respuestas: Después de procesar la solicitud, el servidor envía una respuesta de vuelta al cliente. Esta respuesta puede incluir datos solicitados, confirmaciones de que una acción se ha llevado a cabo, o mensajes de error en caso de que algo haya salido mal. 5. Desconexión: Una vez que la comunicación ha finalizado, el cliente puede optar por desconectarse del servidor o mantener la conexión abierta para futuras interacciones. La gestión de la conexión puede variar dependiendo del protocolo utilizado. 2.4. Tipos de Modelo Cliente/Servidor Dentro del marco general cliente/servidor, hay una serie de implementaciones que dividen el trabajo entre el cliente y el servidor de diferente manera. Sistemas Operativos 2024 PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 13 de 28 En la Figura 2.1 se muestra, en términos generales, algunas de las principales opciones para aplicaciones de bases de datos. Figura 2.1. Tipos de procesamiento en arquitectura cliente-servidor Adaptado de Stallings, 2017, p. 625. 1. Procesamiento basado en el host: En este modelo, tanto el cliente como el servidor están en la misma máquina. Es típico de aplicaciones de escritorio simples, donde todas las funciones de procesamiento y presentación se realizan en un solo dispositivo. 2. Procesamiento basado en el servidor: Este modelo se compone de dos capas: la capa del cliente, que maneja la interfaz de usuario, y el servidor, que gestiona la lógica de negocios y la base de datos. Aquí, el cliente se comunica directamente con el servidor para realizar operaciones. Es común en aplicaciones de bases de datos. 3. Procesamiento cooperativo: Este enfoque introduce una capa intermedia, a menudo llamada capa de lógica de negocio. En este modelo, el cliente se comunica con un servidor de aplicaciones, que a su vez se comunica con el servidor de base de datos. Este enfoque mejora la modularidad y escalabilidad, permitiendo que diferentes partes del sistema se desarrollen y se mantengan de manera independiente. Sistemas Operativos 2024 PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 14 de 28 4. Modelo en la Nube: Con la adopción generalizada de la computación en la nube, muchos servicios ahora se despliegan en servidores en la nube. En este modelo, los clientes acceden a servicios a través de Internet, lo que elimina la necesidad de mantener infraestructura física en las instalaciones del usuario. 2.5. Aplicaciones del Modelo Cliente/Servidor El modelo cliente/servidor es ampliamente utilizado en diversas aplicaciones. Algunas de las aplicaciones más comunes incluyen:  Navegación Web: Cuando un usuario ingresa a un sitio web, su navegador actúa como cliente y se comunica con un servidor web que proporciona el contenido de la página.  Sistemas de Gestión de Bases de Datos: Muchas aplicaciones empresariales utilizan el modelo cliente/servidor para gestionar datos. Aquí, las aplicaciones clientes realizan consultas y el servidor de base de datos responde a esas consultas.  Juegos en Línea: En los videojuegos multijugador, los jugadores son clientes que se conectan a un servidor que gestiona el estado del juego, permitiendo interacciones en tiempo real.  Aplicaciones Empresariales: Muchas organizaciones utilizan aplicaciones empresariales que siguen el modelo cliente/servidor para gestionar recursos y datos de manera centralizada. 2.6. Ventajas del Modelo Cliente/Servidor El modelo cliente/servidor ofrece varias ventajas significativas: 1. Centralización: Permite la centralización de la gestión de recursos, lo que facilita el mantenimiento y la actualización de los sistemas. Las modificaciones en el servidor pueden reflejarse en todos los clientes sin necesidad de cambios individuales. 2. Escalabilidad: Es fácil añadir nuevos clientes o servidores a la infraestructura, lo que permite escalar el sistema según las necesidades. Esto es especialmente útil en entornos empresariales donde la demanda puede variar. 3. Seguridad: La centralización de datos y recursos en un servidor permite la implementación de medidas de seguridad más robustas, protegiendo la información crítica de accesos no autorizados. Sistemas Operativos 2024 PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 15 de 28 4. Manejo de Cargas: Los servidores están diseñados para gestionar múltiples solicitudes simultáneamente, optimizando el rendimiento y la utilización de recursos. 2.7. Desafíos del Modelo Cliente/Servidor A pesar de sus ventajas, el modelo cliente/servidor presenta varios desafíos: 1. Punto Único de Fallo: Si el servidor experimenta fallos, todos los clientes que dependen de él perderán acceso a los servicios. Esto puede llevar a interrupciones significativas en la operación de una organización. 2. Costos de Mantenimiento: La implementación y mantenimiento de servidores pueden ser costosos, especialmente si se requiere hardware potente o un equipo de soporte técnico especializado. 3. Rendimiento: A medida que aumenta el número de clientes, el servidor puede verse sobrecargado. Esto puede afectar el rendimiento, causando tiempos de respuesta más lentos y potencialmente llevando a fallos en el servidor. 4. Complejidad en la Gestión: La administración de múltiples servidores y clientes puede volverse compleja, especialmente en redes grandes. Esto requiere herramientas de gestión eficaces y un personal capacitado para manejar la infraestructura. 2.8. Evolución del Modelo Cliente/Servidor Con el avance de tecnologías emergentes, el modelo cliente/servidor sigue evolucionando. Algunos de los desarrollos más significativos incluyen:  Microservicios: Este enfoque divide las aplicaciones en pequeños servicios independientes que se comunican entre sí. Esto permite a las organizaciones desarrollar, implementar y escalar partes de sus aplicaciones de manera más ágil.  API y Servicios Web: La utilización de interfaces de programación de aplicaciones (API) permite que diferentes sistemas se comuniquen de manera más eficiente. Los servicios web permiten la integración de aplicaciones y servicios en línea, facilitando el intercambio de datos.  Computación en la Nube: La migración de servicios a la nube ha cambiado la forma en que se implementan y gestionan las aplicaciones. La nube permite a las organizaciones acceder a recursos bajo demanda, escalando rápidamente según Sistemas Operativos 2024 PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 16 de 28 sea necesario. 2.9. Un modelo especifico de los sistemas distribuidos: Las tres Capas En la arquitectura tradicional de cliente/servidor, se utilizaban dos capas o niveles principales: la capa del cliente y la capa del servidor. Sin embargo, con el tiempo, esta arquitectura evolucionó hacia un modelo de tres capas, donde el software de la aplicación quedó distribuido de la siguiente manera: un cliente ligero que es la máquina de usuario, un servidor en la capa central que actúa como pasarela entre los clientes ligeros y los servidores de base de datos, y un servidor en segundo plano (backend). En este modelo, el cliente ligero interactúa con la capa central, que actúa como un intermediario entre el cliente y los servidores de backend. Esta capa central se encarga de traducir protocolos, combinar resultados de diversas fuentes y conectar aplicaciones de escritorio con los servidores de backend. A su vez, la interacción entre la capa central y el backend sigue el cliente modelo/servidor, en el cual la capa central actúa simultáneamente como cliente del backend y como servidor para los clientes ligeros. Figura 2.3. Modelo de tres capas Adaptado de Stallings, 2017, p. 627. 2.10. Middleware Sistemas Operativos 2024 PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 17 de 28 Dado que el concepto de cliente y servidor ya es conocido, es importante destacar el papel de esta nueva capa, denominado servidor de la capa central o middleware. Esta definición nace debido a la saturación y utilización de los productos Cliente/Servidor y a la falla de estandarizar los aspectos de la computación distribuida, lo que hacía difícil implementar una configuración cliente/servidor integrada y multivendedor en toda la empresa. El Middleware es una interfaz de programación y protocolos estándares entre la aplicación y el software de comunicaciones y el sistema operativo. Es una capa de software que funciona como intermediaria entre las aplicaciones y los servidores, facilitando su comunicación y la gestión de diversos servicios o bases de datos. Su función principal es resolver problemas de interoperabilidad, permitiendo que las aplicaciones se ejecuten de manera consistente en diferentes plataformas y utilicen los mismos métodos para acceder a los datos, independientemente de su ubicación. De esta manera, el cliente puede acceder a los datos sin preocuparse por las diferencias en la infraestructura subyacente. Además, permite que se desarrollen aplicaciones que sean compatibles con múltiples servidores y estaciones de trabajo unificando el acceso a aplicaciones y recursos, y guiando as solicitudes hacia el servidor adecuado mediante interfaces uniformes (API). Los principales mecanismos que utilizan el middleware para realizar estas funciones son el paso de mensajes y las llamadas a procedimientos remotos (RPC). 3. Clusters Sistemas Operativos 2024 PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 18 de 28 Un clúster es un conjunto de computadoras completas, interconectadas y trabajando juntas como un recurso de computación unificado, lo que da la apariencia de ser una única máquina. El término "computadora completa" se refiere a un sistema que puede operar de manera independiente del clúster. Se consideran alternativa al Multiprocesamiento Simétrico. Se destacan cuatro ventajas de estas, también consideradas metas de diseño:  Escalabilidad Absoluta: Pueden ser expandidas a un punto que superen a las mayores máquinas del mercado, considerándose centenares de máquinas, ellas siendo equipadas con multiprocesadores respectivamente  Escalabilidad Incremental: Pueden expandirse gradualmente y conforme a las necesidades, ya que el mismo no requiere de actualizaciones pronunciadas para mejorarlo con el tiempo.  Alta Disponibilidad: Los nodos son considerados cada una de las maquinas que conforman el Clúster, que, si llegasen a sufrir errores o perder el servicio, no afecta al conjunto y puede seguir disponible con seguridad el software.  Precio/Servicios: Utilizando la escalabilidad incremental, es posible construir clusters de gran tamaño, con menor coste que una sola unidad pronunciada Para mencionar la forma de funcionamiento de los Clúster, en necesario entender que, son un conjunto de máquinas interconectadas, cada una de ellas poseen y manipulan sus propios dispositivos locales, dentro del sistema operativo. Empieza el funcionamiento desde un nodo maestro, quien controla/administra a todo lo referido al sistema. Para el resto de nodos (llamados nodos esclavos) procesan datos y realizan operaciones aritméticas. Se conectan entre sí por medio de LAN de alta velocidad o un conmutador hardware, para manipular la actividad y el intercambio de mensajes, además de conexiones a sistemas de clientes remotos. Hacia los discos, los medios de conexión para acceder a esos discos, son propiedad de un servidor a la vez, siendo gestionados por él. Sus elementos, servicios y funciones son los siguientes:  Un solo punto de entrada. El usuario se autentica en el clúster, no en una máquina específica.  Una única jerarquía de archivos. Los usuarios observan una única estructura de directorios bajo el mismo directorio raíz.  Un solo punto de control. Existe un nodo predeterminado que se encarga de gestionar y supervisar el clúster. Sistemas Operativos 2024 PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 19 de 28  Una única red virtual. Cualquier nodo puede conectarse a otro dentro del clúster, incluso si el clúster tiene varias redes interconectadas. Todo funciona sobre una red virtual unificada.  Un único espacio de memoria. La memoria compartida distribuida permite a los programas compartir variables entre sí.  Un solo sistema de control de trabajos. Con un planificador de tareas en el clúster, los usuarios pueden enviar sus trabajos sin especificar la máquina que los ejecutará.  Una única interfaz de usuario. Todos los usuarios cuentan con una interfaz gráfica común, sin importar la estación de trabajo que utilicen.  Un solo espacio de E/S. Cualquier nodo puede acceder de manera remota a cualquier dispositivo de E/S o disco, sin necesidad de conocer su ubicación física.  Un espacio único de procesos. Se emplea un esquema uniforme para la identificación de procesos. Un proceso en cualquier nodo puede crear o comunicarse con otros procesos en nodos remotos.  Puntos de control. Esta funcionalidad guarda periódicamente el estado del proceso y los resultados intermedios, lo que permite recuperar el trabajo tras un fallo.  Migración de procesos. Esta función permite distribuir la carga de manera equilibrada. Una alternativa a la conexión entre las maquinas se podría mencionar al uso de un disco compartido, denominado RAID (Redundant Array of Independent Disks). Este subsistema almacena data redundante, para no implicar el disco compartido entre maquinas, disminuyendo y concentrando en un solo punto los fallos. 3.1. Tipos de Clusters  Pasivo en Espera: Es el más común, siendo que recibe el control del sistema el servidor secundario, si el primero sufre daños. Esta técnica puede ser una complicación en el coste, aunque sea sencilla de aplicar, ya que este permanece prendido a la espera de fallos permanentemente, y no realiza otras actividades.  Secundario Activo: Aquí el servidor cumple dos roles, el de estar a la espera de fallos y realizar sus correspondientes tareas. Tiene un coste menos pronunciado, por su capacidad de satisfacer ambos objetivos, pero es más complejo de aplicar.  Diferentes Servidores: Los datos del servidor primario se repiten en el secundario, teniendo cada uno sus discos propios, produciéndose una continua disponibilidad, pero se realiza una considerable sobrecarga de red y de servidor por el proceso. Sistemas Operativos 2024 PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 20 de 28  Servidores Conectados a Discos: Los servidores conectados tienen discos, y a su vez, los servidores individuales también. Se reduce el riesgo de pérdida, ya que alguien puede cubrir el fallo con los datos necesarios, pero a su vez supone alta sobrecarga de red y de servidores, porque se deben eliminar las operaciones de copia. Se debe implementar el uso de los RAID para reducir el riesgo en los discos.  Servidores Comparten Discos: Mas de un servidor puede tener acceso a un disco, en forma simultánea. Resulta en una baja de sobrecarga de red y de servidores, y reduce la inactividad de fallos del disco, aunque requiere el empleo de RAID para la gestión de cerrojos. Cuando hablábamos del método RAID, poseemos un enfoque diferente denominado shared nothing, los discos comunes compartidos, se dividen en distintas porciones, y esas porciones pertenecen a cada computadora. Si surgiese un fallo, el clúster se haría cargo de la porción de esa computadora y dejársela a cargo a otra computadora. Se requieren determinadas mejoras en los sistemas operativos para el correcto y eficiente funcionamiento de los clusters. 3.2. Gestión de Fallos Aquí uno debe separase entre dos posibles opciones para la gestión de fallos en los clusters:  Alta Disponibilidad: Todos los recursos tienen grandes posibilidades de estar disponibles para el servicio en todo momento, al ocurrir los fallos (ya sean de volumen o de nodo), pierde las peticiones en progreso. Esas peticiones pueden ser tomadas por otras computadoras, pero el sistema operativo no garantiza el estado de los procesos medianamente realizados.  Tolerancia a Fallos: Tiene la seguridad de tener todos los recursos disponibles siempre, mediante RAID u otros métodos para eliminar transacciones a medias. Los Clúster tienen la habilidad de cambiar de aplicación y de datos de un sistema caído por una alternativa, llamándose este proceso como Recuperación de Fallos (failover). La restauración del sistema original (failback) sucede si se está seguro de que no tendrá más problemas, sino, esto podría contraer fallos sucesivos. 3.3. Computación en paralelo Sistemas Operativos 2024 PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 21 de 28 Para el correcto funcionamiento de los clusters, es necesario tener en marcha una sola aplicación en forma paralela. Podemos mencionar 3 enfoques diferentes:  Compilación paralela: Un compilador se encarga de detectar que partes de la aplicación pueden ejecutarse simultáneamente, enviándolas a diferentes maquinas. Esto depende del problema y de la calidad de operación del compilador.  Aplicaciones Paralelas: Aquí entran los programadores, quienes utilizan los mensajes de transferencia de datos entre nodos, para poder estructurar la aplicación de forma adecuada. Es un tema laborioso de completar, pero es uno de los mejores enfoques para aprovechar a los clústeres.  Computación Paramétrica: Este método resulta beneficioso cuando el algoritmo del núcleo se repite con diferentes condiciones o parámetros iniciales. Este enfoque requiere del uso de herramientas destinadas al procesamiento paramétrico, para la correcta administración de los trabajos. 3.4. Clústeres vs SMP Tanto los clústeres como el procesamiento simétrico de múltiples procesadores (SMP) ofrecen configuraciones con múltiples procesadores para soportar aplicaciones con grandes requerimientos. Ambas soluciones están disponibles en el mercado, aunque el SMP ha existido por más tiempo. La mayor ventaja del enfoque SMP es que es más sencillo de gestionar y configurar en comparación con un clúster. El SMP está mucho más cerca del modelo tradicional de un solo procesador, que es el estándar para el que han sido desarrolladas la mayoría de las aplicaciones. El principal ajuste necesario al pasar de un sistema uniprocesador a uno multiprocesador es la función de planificación. Otro beneficio del SMP es que generalmente ocupa menos espacio físico y consume menos energía que un clúster de capacidades equivalentes. Además, un factor clave es que los productos SMP están bien establecidos y son altamente fiables. A largo plazo, sin embargo, las ventajas de los clústeres probablemente les permitirán dominar el mercado de servidores de alto rendimiento. Los clústeres son mucho más superiores que el SMP en cuanto a escalabilidad, tanto incremental como absoluta. También superan al SMP en términos de disponibilidad, ya que todos los componentes del sistema pueden ser altamente redundantes. Sistemas Operativos 2024 PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 22 de 28 3.6. Algoritmos de los Clúster Muchas técnicas de minería de datos, como la segmentación de imágenes, la segmentación de clientes y el análisis de mercado, utilizan el método de agrupamiento. Este es un proceso que agrupa elementos de datos relacionados sin requerir mucho conocimiento previo sobre cómo se definen los grupos. El objetivo principal del agrupamiento es identificar grupos bien definidos, con una alta similitud dentro de cada uno. A través del agrupamiento, se forman conjuntos homogéneos que luego pueden ser usados para desarrollar modelos de clasificación supervisada. 3.6.1. K-Means En 1957, Stuart Lloyd propuso un método de agrupamiento basado en particiones llamado algoritmo K-Means. Se dividen N tuplas de entrada en K particiones, donde K debe ser menor que N. Deben cumplirse los siguientes criterios: (i) cada tupla debe pertenecer a al menos un grupo, y (ii) cada grupo debe tener al menos una tupla. El algoritmo K-Means sigue los siguientes pasos: 1. Primero se establece el valor de K, el cual debe ser menor que N. 2. A continuación, se seleccionan aleatoriamente K tuplas como puntos de inicio para los grupos. 3. Luego, se mide la distancia de cada tupla hasta el centro de todos los grupos. 4. El grupo cuyo centro esté a la menor distancia de una tupla será el grupo asignado para dicha tupla. 5. Una vez que se agregan las tuplas al grupo, se recalcula la media del grupo, que se tomará como su nuevo centro. 6. Estos pasos se repiten hasta que las tuplas ya no cambien de grupo y los valores medios de los grupos permanezcan estables. 3.6.2. K-Medoids En 1987, Kaufman y Rousseeuw propusieron una técnica de agrupamiento basada en particiones llamada algoritmo K-Medoids. Este método también divide N tuplas de entrada Sistemas Operativos 2024 PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 23 de 28 en K particiones, donde K debe ser menor o igual a N. Los pasos del algoritmo K-Medoids son los siguientes: 1. Inicialmente, se establece el valor de K, que debe ser menor que N. 2. Luego, se eligen aleatoriamente K tuplas como puntos iniciales para los grupos. 3. A continuación, se mide la distancia de cada tupla hasta el centro de los grupos seleccionados. 4. La tupla cuya distancia al centro del grupo sea la mínima será asignada a ese grupo. 5. Después de añadir las tuplas al grupo, se recalculan los centros de los grupos utilizando medoids conocidos, y se seleccionan aleatoriamente otros objetos no medoids del conjunto de datos. 6. Este proceso se repite hasta que todas las tuplas sean asignadas y la función de costo del agrupamiento no mejore en los pasos siguientes. 3.6.3. Algoritmo de clasificación La técnica de clasificación es un proceso que organiza elementos de datos en grupos predefinidos. El objetivo principal de la clasificación es asignar una etiqueta de clase a los datos no identificados, utilizando un modelo construido a partir de datos de entrenamiento. 3.6.4. Árbol de decisión En 1993, Quinlan introdujo una técnica de clasificación llamada árbol de decisión, basada en el principio de "dividir y conquistar". El algoritmo de clasificación de árboles de decisión sigue los pasos a continuación: 1. Calcular la ganancia de información para todos los atributos. 2. Iniciar la construcción de un árbol binario con el atributo que tenga mayor ganancia de información. 3. Detener la construcción del árbol cuando ya no queden atributos relevantes. 4. Una vez construido el árbol, se crean reglas de clasificación basadas en cada camino que va desde la raíz hasta las hojas. Sistemas Operativos 2024 PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 24 de 28 3.6.5. K-Vecinos más cercanos (K-NN) El algoritmo de K vecinos más cercanos es una de las técnicas más simples de clasificación en la minería de datos. Elproceso del K-NN sigue los siguientes pasos: 1. Definir el número de vecinos más cercanos (K). 2. Calcular la distancia entre cada caso de prueba desconocido y los casos de entrenamiento conocidos. 3. Predecir la etiqueta de clase de cada caso de prueba mediante una votación mayoritaria de sus K vecinos más cercanos. En este caso, se utiliza la distancia euclidiana para determinar la proximidad entre un punto de datos y su vecino más cercano, siendo K = 3. 3.6.6. Máquina de vectores de soporte (Support Vector Machine) En 1992, Boser, Guyon y Vapnik propusieron una SVM basada en funciones de núcleo de tipo gaussiano. Las SVM pueden manejar tanto datos lineales como no lineales. 3.6.7. Naive Bayes Naive Bayes es un clasificador estadístico sencillo que se basa en el teorema de Bayes. Este teorema se usa para calcular la probabilidad posterior P(H/X) a partir de la probabilidad previa P(H), la probabilidad condicional P(X/H) y la probabilidad marginal P(X) de X. En este trabajo, se ha empleado la estimación de densidad de núcleo para estimar la función de densidad de probabilidad, mejorando el proceso de suavizado de datos. 3.6.8. Análisis discriminante lineal (LDA) En 1936, R.A. Fisher desarrolló el análisis discriminante lineal (LDA), una técnica de clasificación que utiliza variables independientes continuas y variables dependientes categóricas, similar a la regresión logística. El LDA es útil en la resolución de problemas de Sistemas Operativos 2024 PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 25 de 28 clasificación binaria, como la predicción de abandono. Existen variantes de esta técnica, como el análisis discriminante de Fisher, el análisis discriminante multiclase y el análisis discriminante cuadrático (QDA). El LDA también se utiliza para problemas como el reconocimiento facial y la predicción de quiebras. En este trabajo, el análisis se ha basado en el análisis discriminante cuadrático. Conclusión A lo largo de esta monografía se puso en evidencia el impacto y la aplicabilidad del procesamiento distribuido, el modelo cliente/servidor y las arquitecturas de clusters en los sistemas operativos modernos. Estos enfoques han demostrado ser fundamentales en la construcción de sistemas informáticos más robustos, eficientes y escalables, adaptándose a Sistemas Operativos 2024 PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 26 de 28 los niveles de procesamiento de datos y de conectividad en redes amplias que hoy en día las tecnologías modernas demandan, y que seguirá creciendo de manera exponencial con el correr del tiempo. El procesamiento distribuido, como se abordó en este trabajo, permite dividir y asignar tareas complejas a múltiples nodos de manera simultánea, maximizando así la velocidad y eficiencia en el tratamiento de grandes volúmenes de datos. Este modelo, además, incrementa la tolerancia a fallos distribuyendo la carga de trabajo entre varias máquinas, de modo que el sistema puede continuar operando, aunque alguno de los nodos falle. Sin embargo, como se mencionó, este enfoque presenta grandes desafíos en términos de coherencia de datos y latencia de red, que requieren la implementación de protocolos avanzados y herramientas de administración sofisticadas para reducir al mínimo los riesgos de inconsistencias y demoras en la transmisión de mensajes. Es aquí donde cobran crucial importancia los Sistemas Operativos, siendo los encargados de gestionar los recursos y facilitar la comunicación efectiva entre los distintos nodos del sistema. En cuanto al modelo cliente/servidor, se exploraron sus fundamentos y beneficios en la estructuración de sistemas que separan claramente las funciones del cliente y del servidor. Esta división facilita el diseño modular de aplicaciones, donde el servidor maneja la gestión de datos y el cliente interactúa directamente con el usuario, ofreciendo una experiencia más fluida, y permitiendo a su vez que el sistema sea escalable y robusto al mismo tiempo. La centralización del servidor también permite mejoras en la seguridad y el control de acceso a los datos, aunque, como se analizó, un fallo en éste podría afectar la operatividad del sistema completo si no se implementan las medidas de seguridad que un sistema de tal naturaleza requiere. La flexibilidad del modelo cliente/servidor lo hace aplicable en múltiples contextos, desde simples aplicaciones locales hasta complejas infraestructuras en la nube. Hoy en día es uno de los modelos con los cuales estamos más en contacto en nuestro día a día, ya que se encuentra presente en muchas tecnologías de uso cotidiano al alcance de casi todas las personas. Por ejemplo: aplicaciones de mensajería instantánea, navegadores web, aplicaciones de correo electrónico, juegos multijugador, entre muchas otras. Por último, el análisis de las arquitecturas de clusters permitió entender cómo un conjunto de computadoras independientes puede funcionar como una única entidad de procesamiento, aumentando así la capacidad de cómputo y disponibilidad del sistema. Los clusters, en sus distintas configuraciones, ofrecen soluciones escalables y resistentes a fallos, lo cual es fundamental para aplicaciones que requieren alta disponibilidad y gran capacidad de procesamiento, y que en la actualidad están cobrando cada vez más importancia, tales Sistemas Operativos 2024 PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 27 de 28 como la minería de datos y la simulación científica. Sin embargo, la implementación de clusters exige un complejo manejo del sistema operativo para gestionar la migración de procesos, la memoria distribuida y el manejo de nodos, maximizando el rendimiento sin sacrificar la seguridad y confiabilidad del sistema. En conclusión, el procesamiento distribuido, los modelos cliente/servidor y las arquitecturas de clusters se complementan para abordar las diversas necesidades de procesamiento, comunicación y almacenamiento que los sistemas informáticos demandan hoy en día. Estas tecnologías, junto a las mejoras continuas en el desarrollo de sistemas operativos, seguirán siendo esenciales para la evolución de la informática, permitiendo la creación de soluciones cada vez más adaptables, rápidas y seguras en un entorno digital que demanda cada vez más eficiencia y capacidad de respuesta. La comprensión y aplicación de estos conceptos por parte de los profesionales informáticos serán determinantes para el éxito de futuras implementaciones en sistemas cada vez más interconectados y con mayores exigencias de rendimiento. Bibliografía W. Stalling, “Capítulo 7: Procesamiento distribuido, cliente/servidor y clusters”, en “Sistemas Operativos”, Editorial Pearson Education, S.A: Madrid, 2005, pp. 619-653. Sistemas Operativos 2024 PROCESAMIENTO DISTRIBUIDO, CLIENTE / SERVIDOR Y CLUSTERS 28 de 28 D.V. La Red Martinez, “Capitulo 8: Comunicación en los Sistemas Distribuidos”, en “Sistemas Operativos”, Editorial Estudio sigma SRL, Buenos Aires, 2004, pp. 243-289. Mishra, D. K., Nayak, M. K., & Joshi, A. (Eds.). (2016). Information and communication technology for sustainable development: Proceedings of ICT4SD, 2016, pp. 489-492. Springer. Tanenbaum, A. y Renesse, R. «Distributed Operating Systems.» Computing Surveys, Diciembre 1985. Sistemas Operativos 2024 Carrera: Licenciatura en Sistemas de Información Asignatura: Sistemas Operativos Grupo Nº: 6 Integrantes: Apellido y Nombre: Bys, Paz Apellido y Nombre: Riveros, Lautaro D.N.I: 46.242.480 Ezequiel D.N.I: 45.903.006 Apellido y Nombre: Cardozo, Micaela D.N.I: 46.461.620 Apellido y Nombre: Turtola, Sabrina D.N.I: 44.000.850 Apellido y Nombre: Coronel, Antonio D.N.I: 44.198.175 Apellido y Nombre: Zini, Samuel D.N.I: 44.196.064 Tema N.º 16: PLANIFICACIÓN MULTIPROCESADOR Y DE TIEMPO REAL - CAP. 10 - SISTEMAS OPERATIVOS – 5ª. EDIC. STALLINGS. ÍNDICE INTRODUCCIÓN.............................................................................................................1 Planificación multiprocesador..................................................................................... 2 Granularidad:............................................................................................................. 2 Aspectos de diseño:.................................................................................................. 4 Planificación de procesos:......................................................................................... 6 Planificación de hilos:................................................................................................ 8 Planificación a nivel usuario y kernel:........................................................................9 Planificación de tiempo real....................................................................................... 10 Características de los sistemas operativos de tiempo real:.....................................10 Planificación de Tiempo Real:................................................................................. 12 Planificación por plazos:.......................................................................................... 14 Planificación de tasa monótona:..............................................................................15 Inversión de prioridad:............................................................................................. 17 Planificación en Linux.................................................................................................19 Planificación de tiempo real:....................................................................................19 Planificación no de tiempo real:...............................................................................20 Planificación en UNIX SVR4....................................................................................... 22 Características Clave del Algoritmo:........................................................................22 Modificaciones Introducidas en SVR4:.................................................................... 23 Inserción de Puntos de Expulsión:.......................................................................... 24 Los 160 Niveles de Prioridad en SVR4:.................................................................. 24 Colas de Activación en SVR4:.................................................................................25 Planificación en Windows...........................................................................................26 CONCLUSIONES..........................................................................................................29 REFERENCIAS BIBLIOGRÁFICAS............................................................................. 30 1 Tablas y Figuras Tabla 1. Resumen de Granularidad de sincronización y procesos………………………3 Figura 1. Comparación de rendimiento de planificación para uno y dos procesadores.………………………………………………………………………………….7 Figura 2. Planificación de procesos de tiempo real………………………………………14 Figura 3. Un conjunto de tareas con RMS [WARR91]..................................................16 Figura 4. Ejemplo de la planificación de tiempo real de Linux…………………………..20 Figura 5. Clases de prioridad de SVR4……………………………………………………23 Figura 6. Colas de activación de SVR4……………………………………………………25 Figura 7. Prioridades de activación de hilos en Windows……………………………….26 Figura 8. Ejemplo de relación entre las prioridades de Windows………………………27 2 INTRODUCCIÓN En el marco del cursado de la asignatura Sistemas Operativos nos disponemos a realizar un proyecto de monografía sobre el tema que nos compete el cual es “Planificación Multiprocesador y de Tiempo Real”, principalmente de la bibliografía “SISTEMAS OPERATIVOS – 5ª. EDIC. STALLINGS” - Capítulo 10 -. El mismo trata sobre los tipos de sistema multiprocesador y la forma en que se organizan en distintos sistemas operativos, también como planificar las tareas para lograr computación a tiempo real para obtener los resultados prioritarios en el menor tiempo posible. 1 DESARROLLO Planificación multiprocesador En todo sistema de cómputo de alto rendimiento se desea un alto grado de paralelismo para un incremento sustancial del rendimiento, para esto existen sistemas multiprocesadores, sin embargo surge el problema de cómo se debe repartir los recursos y procesos, los sistemas multiprocesador se pueden clasificar de la siguiente forma: Débilmente acoplado o cluster: Colección de sistemas relativamente autónomos, cada procesador tiene su propia memoria principal y canales de E/S. Procesadores de funcionalidad especializada: hay un procesador de propósito general maestro y procesadores especializados que son controlados por el procesador maestro y que le proporcionan servicios. Procesamiento fuertemente acoplado: Consiste en un conjunto de procesadores que comparten la memoria principal y están bajo el control integrado de un único sistema operativo. Granularidad: Una manera de caracterizar los multiprocesadores y de compararlos respecto de otras arquitecturas, es considerar la granularidad de sincronización, o frecuencia de sincronización entre los procesos del sistema. Podemos distinguir cinco categorías de paralelismo que difieren en el grado de granularidad: Paralelismo Independiente: No hay sincronización entre procesos, cada uno representa un trabajo o aplicación independiente y separada. El multiprocesador proporciona el mismo servicio que un monoprocesador multiprogramado. Dado que hay más de un procesador disponible, el tiempo de respuesta medio de los usuarios será menor. Paralelismo de grano grueso y muy grueso: Hay sincronización entre procesos, pero a un nivel muy burdo. Se trata sencillamente como un conjunto de procesos concurrentes ejecutando en un monoprocesador multiprogramado y puede 2 proporcionarse en un multiprocesador con poco o ningún cambio en el software de usuario. Paralelismo de grano medio: Se refiere a la especificación explícita del paralelismo potencial dentro de una sola aplicación, implementada como una colección de hilos. En este caso, existe un nivel considerable de coordinación e interacción entre los hilos de la aplicación, lo que da como resultado un grado de sincronización que no es ni de grano fino ni de grano grueso. Paralelismo de grano fino: Representa un uso mucho más complejo del paralelismo del que se encuentra en el uso de hilos. Tamaño del Descripción Intervalo de Grano sincronización (Instrucciones) Fino Paralelismo inherente en un único flujo de

Use Quizgecko on...
Browser
Browser