280 likes | 625 Vues
Sistemas Operativos I. Unidad 2: Comunicación entre Procesos (1 ra parte). Contenidos. Conceptos de proceso. Estados de un proceso. Modelo de cinco estados de procesos. Control de procesos. Modos de ejecución. Creación de procesos. Administración de procesos en Unix/Linux.
E N D
Sistemas Operativos I Unidad 2: Comunicación entre Procesos (1ra parte)
Contenidos • Conceptos de proceso. Estados de un proceso. Modelo de cinco estados de procesos. • Control de procesos. Modos de ejecución. Creación de procesos. • Administración de procesos en Unix/Linux. • Procesos e hilos. • Creación y ejecución de procesos. Propuesta de proyecto anual. Control 1. • Comunicación entre procesos: • Concurrencia. • Exclusión mutua. • Semáforos. • Mensajes. • Taller 2: Comunicación entre procesos.Control 2. • Clase de recapitulación. • Clase de recapitulación. • Prueba de Cátedra 1.
Objetivos y Metodología • Estudiar y comprender los procesos, sus estados, la comunicación y administración de éstos. • Metodología: • Clases expositivas mezclando teoría y ejercicios. Se realizarán talleres en los que el estudiante deberá programar algoritmos básicos en los que se utilicen procesos, estados y su comunicación.
Concurrencia • Los temas fundamentales de diseño de sistemas operativos están relacionados con la gestión de procesos: • Multiprogramación: Es la gestión de varios procesos dentro de un sistema monoprocesador. La mayoría de los computadores personales, estaciones de trabajo, sistemas monoprocesador y sistemas operativos actuales de estas máquinas, tales como Windows y Linux dan soporte a la multiprogramación, incorporándola para obtener sistemas monoprocesador compartidos. • Multiproceso: Es la gestión de varios procesos dentro de un sistema multiprocesador. Recientemente, el multiproceso ha empezado a ganar espacio en los servidores y las estaciones de trabajo que demandan altas prestaciones. Windows NT es un ejemplo de un sistema operativo diseñado para estos entornos. • Proceso distribuido: Es la gestión de varios procesos que se ejecutan en sistemas de computadores múltiples y remotas.
Concurrencia (2) • La concurrencia es el punto clave de los tres campos anteriores y fundamentales para el diseño de sistemas operativos. • La concurrencia comprende un gran número de cuestiones de diseño, incluyendo la comunicación entre procesos, cómo se comparten y cómo se realiza la competencia por los recursos, sincronización de la ejecución de varios procesos y asignación del tiempo de procesador a los procesos. • Estas cuestiones no solo surgen en entornos de multiprocesadores y proceso distribuido, sino incluso en sistemas multiprogramados con un solo procesador.
Contextos para la concurrencia • La concurrencia puede presentarse en tres contextos diferentes: • Varias aplicaciones: La multiprogramación se creó para permitir que el tiempo de procesador de la máquina fuese compartido dinámicamente entre varios trabajos o aplicaciones activas. • Aplicaciones estructuradas: Como ampliación de los principios del diseño modular y la programación estructurada, algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos concurrentes. • Estructura del sistema operativo: Las mismas ventajas de estructuración son aplicables a los programadores de sistemas y se ha comprobado que algunos sistemas operativos están implementados como un conjunto de procesos.
Comunicación entre procesos • Los procesos necesitan comunicarse con otros para compartir espacio de memoria, variables, etc. • Por ejemplo: En una tubería (pipeline), la salida del primer proceso debe pasar como entrada al segundo proceso. • Es necesario que la comunicación sea, preferentemente, de una manera bien estructurada, sin usar interrupciones. • Aparecen tres aspectos: • ¿Cómo puede un proceso pasar información a otro? • ¿Cómo se asegura que dos ó mas procesos no se interfieren mutuamente cuando realizan actividades críticas? • Secuencia apropiada de acciones cuando existen dependencias: Si el proceso A produce datos que el proceso B utiliza, B debe esperar hasta que A haya producido algún dato antes de comenzar a emplearlos.
Comunicación …(2) • Es importante mencionar que dos de los aspectos anteriores son válidos también para los hilos: • Pasar información es fácil para los hilos, ya que ellos comparten el mismo espacio de direcciones. • Para comunicar hilos ubicados en espacios de direcciones diferentes se tienen que aplicar los conceptos de comunicación entre procesos. • Sin embargo, el mantener su individualidad y secuencia propia aplica a los hilos por igual que a los procesos. • Existen los mismos problemas y se aplican las mismas soluciones. • La discusión de estos problemas se realizará en el contexto de los procesos, pero debe mantenerse la idea de que las mismas soluciones se aplican también a los hilos.
Condiciones de competencia(Race Conditions) • En algunos SO, los procesos que cooperan para resolver tareas tienen que competir (ó concursar ó correr) por los recursos, lo que crea el concepto de Condiciones de Competencia (Race Conditions). • La figura muestra a dos procesos, A y B, que necesitan imprimir sus respectivos archivos y acceden a la carpeta compartida del demonio (daemon) que la hace: spooler.
Secciones y Regiones Críticas ¿Cómo evitar las condiciones de carrera? Hay cuatro condiciones que permiten suministrar exclusión mutua: • No debe haber dos procesos que se encuentren simultáneamente en una región crítica. • No se debe asumir ningún criterio respecto a las velocidades de ejecución de los procesos ni respecto al número de CPUs. • Ningún proceso ejecutándose en su región crítica puede bloquear a algún otro proceso. • Ningún proceso puede realizar una espera indefinida dentro de su región crítica.
Exclusión mutua mediante regiones críticas • La figura muestra como manejar la exclusión mutua utilizando regiones críticas:
Exclusión mutua con espera ocupada • Se propone como solución al problema de la región crítica. • Consiste en emplear una variable que actúe como bandera ó indicador para permitir el acceso de un proceso a su región crítica. • Proceso 0. (b) Proceso 1.
Exclusión mutua con espera ocupada: Solución de Peterson Peterson ofreció esta solución para obtener exclusión mutua:
Instrucción TSL • Los computadores Intel x86 poseen una instrucción privilegiada llamada TSL (Test and Set Lock) que solamente puede ejecutarse en modo núcleo, la cual permite entrar y salir de regiones críticas.
Dormir y despertar • El problema del Productor - Consumidor puede alcanzar condiciones de concurso fatales:
Semáforos • Una solución simple al problema del Productor – Consumidor es utilizar semáforos:
Mutexes Implementación de mutex_lock y mutex_unlock
Monitores (1) Ejemplo de un monitor
Monitores (2) • El problema del productor - consumidor bosquejado con monitores: • Sólo un procedimiento monitor activo en un instante de tiempo. • El búfer posee N zonas de memoria (slots)
Solución en Java (1) Solución al problema del producer-consumer en Java (parte 1)
Solución en Java (2) Solution to producer-consumer problem in Java (part 2)
Pasando Mensajes The producer-consumer problem with N messages
Fuentes de información • Tanenbaum A., “Sistemas Operativos Modernos”, Prentice Hall, 1994 • Tanenbaum A., “Sistemas Operativos: diseño e implementación” Prentice-Hall, 1998 • Tanenbaum A., “Sistemas Operativos Distribuidos”, Prentice Hall, 2003 • Carretero, J. García, F. Pérez, F. “Sistemas Operativos: Una visión aplicada” Mc Graw Hill. 2001. • Stallings W., “Sistemas Operativos”, 5ta. Edición. Prentice-Hall. 2004
Referencias en Internet • Comunicación entre procesos (IPC) • Wiki - Comunicación entre procesos • Administración de procesos • Comunicación entre procesos – PIPES • Comunicación entre procesos • David Luis la Red Martínez “SISTEMAS OPERATIVOS” • Domingo Mery “Sistemas Operativos” • Jorge Alfonso Briones García “Sistemas Operativos Distribuidos (material adicional)” • Sistemas operativos(SIMULACIONES Y ANIMACIONES)
Textos en Internet (inglés) • Andrew S. Tanenbaum “Modern Operating Systems” • Andrew S. Tanenbaum “Distributed Systems: Principles and Paradigms” • George Coulouris, Jean Dollimore and Tim Kindberg “Distributed Systems: Concepts and Design”, 3ra edición (4ta edición 2005) • Avi Silberschatz, Peter Baer Galvin & Greg Gagne “Operating System Concepts” • Minix 3 Operating System