Sistemas Concurrentes - LDC Noticias - Universidad …yudith/docencia/Telematica/Sistemas... ·...

27
Sistemas Concurrentes Sistemas Concurrentes Prof. Yudith Cardinale

Transcript of Sistemas Concurrentes - LDC Noticias - Universidad …yudith/docencia/Telematica/Sistemas... ·...

Sistemas ConcurrentesSistemas ConcurrentesProf. Yudith Cardinale

ConcurrenciaConcurrenciaEjecución simultánea de

procesos aparece inicialmente como una necesidad de los sistemas de operación.

Inicio

Fin

Inicio

Fin

P1

P2

Conceptos bConceptos básicosásicos

RequerimientosRequerimientos Soportar actividades separadas.

◦ Actividades de monitoreo y control en un sistema de control de procesos

◦ Ejecutar programas de usuarios por un sistema de operación

◦ El manejo de dispositivos por parte de un sistema de operación

◦ Transacciones de clientes de un sistema bancario◦ Cálculos concurrentes de una aplicación

Soporte para la administración de las actividades separadas, en particular la habilidad para crear, ejecutar, parar y eleminar tales actividades, y posiblemente indicar sus prioridades relativas.

Soporte para que actividades relacionadas puedan trabajar juntas. Necesidad de sincronizar

Habilidad para satisfacer requerimientos de tiempos

Soporte de tareas compuestas. Ejemplo: threads

Modelos de procesosModelos de procesosEs un modelo necesario que deben

implantar los sistemas de operación para proveer concurrencia. Este modelo considera los siguientes aspectos.◦Definición de Proceso◦Estado de los procesos◦Transiciones entre los estado de los

procesos ◦Jerarquía de procesos◦Implementación del modelo

ProcesosProcesosPrograma cuya ejecución ha

comenzado pero aún no ha terminado.Es una unidad de despacho: un

proceso es una entidad activa que puede ser ejecutada

Programa en ejecución incluyendo valores actuales del pc, registros y variables.

Es la unidad de asignación de recursos: el sistema de operación asigna los recursos necesarios a los procesos

Un programa no es un proceso. Un programa es el algoritmo, un proceso es un ente de ejecución reconocido por el sistema de operación.

Estado de los procesosEstado de los procesosEstados activos:

◦ running: un proceso está usando CPU.◦ ready: un proceso está listo para

ejecución y espera por CPU◦blocked: esperando porque ocurra un

evento. Al ocurrir el evento el proceso pasa a estado ready.

Estados pasivos:◦suspended ready: proceso suspendido

desde el estado ready. La suspención puede ser por parte de otro proceso o por parte del sistema de operación.

◦suspended blocked: proceso suspendido desde el estado blocked.

Transiciones entre los Transiciones entre los estadosestados

Steady ready Steady blocked

Ready Blocked

Running

wakeup

resume

suspend

resume

suspend

blockdispatch

timerunoutACTIVOS

PASIVOS

Jerarquía de ProcesosJerarquía de ProcesosPosibilidad de que los procesos

puedan crear procesos hijos formando un árbol de relación de procesos padre-hijos.

Implementación del Implementación del modelomodeloProcess Control Block (PCB)Tabla de procesosVector de interrupcionesCambio de ContextoOperaciones sobre los procesos

◦Crear – Suspender – Cambiar prioridad – Despertar – Terminar – Reanudar – Despachar – Bloquear

Uso de ConcurrenciasUso de ConcurrenciasPara compartir recursos lógicosPara compartir recursos físicosVelocidad de cómputoModularidadConvenienciaLa ejecución concurrente que

requiere cooperación entre los procesos requiere mecanismos que permitan COMUNICARSE entre si y SINCRONIZAR sus acciones.

Velocidad de cómputoVelocidad de cómputoAlgoritmo de ordenamiento (Sort)

Este algoritmo realiza aproximadamente n*(n-1)/2 comparaciones

Si se divide el trabajo entre dos procesadores (cada uno ordena la mitad del vector y luego un merge), el número de comparaciones se reduce a: n/2*(n/2-1) + n-1

ModularidadModularidadUn sistema que lea un archivo texto,

compacta los caracteres y los imprime.◦Proceso 1: Lee el conjunto de caracteres

del archivo y los coloca en memoria◦Proceso 2: Lee de esta área de memoria

y revisa los caracteres iguales y los escribe en forma compactada en otra área de memoria.

◦Proceso 3: Lee de la primera área de memoria y los imprime.

Conveniencia: Concurrencia Conveniencia: Concurrencia en los sistemas de operaciónen los sistemas de operación

El sistema de operación maneja interrupciones para proveer concurrencia

A nivel de hardware, existen varios procesadores especializados que ejecutan operaciones en paralelo al CPU

Concurrencia o paralelismoConcurrencia o paralelismo

Con estos ejemplos se concluye que la concurrencia implica que:◦Un número de actividades están en

progreso simultáneamente dentro del sistema

◦Componentes de un algoritmo concurrente han comenzado en paralelo

◦Un número de usuarios puede simultáneamente hacer demandas sobre el sistema

Dónde se implementa la Dónde se implementa la concurrencia o paralelismoconcurrencia o paralelismo

A nivel de Hardware◦Replicando componentes de la

arquitectura (varias ALUs, computadores vectoriales, pipeline, etc.)

◦Se logra paralelismo a nivel de instrucciones

A nivel intra-proceso◦Secuencia de instrucciones, operaciones

sobre vectores◦USO DE HILOS (Threads)

A nivel inter-procesos (sistemas distribuidos, redes, etc.)

Conceptos de HilosConceptos de Hilosun hilo es un único flujo de ejecución

dentro de un proceso (hilo, es la unidad de ejecución).

un proceso es un programa ejecutándose dentro de su propio espacio de direcciones (proceso, unidad de asignación de recursos del SO).

Un hilo comparte con otros hilos de un mismo proceso su sección de código, sección de datos y recursos del sistema de operación tales como archivos abiertos y señales.

HilosHilosUn hilo es una secuencia de

código en ejecución dentro del contexto de un proceso.

Los hilos no pueden ejecutarse ellos solos; requieren la supervisión de un proceso padre para ejecutarse.

Dentro de cada proceso hay varios hilos ejecutándose

Los hilos están siempre asociados con un proceso en particular

HilosHilos

Problemas de concurrenciaProblemas de concurrenciaEstán relacionados con las

instrucciones atómicasExclusión mutua

◦Proveer acceso exclusivo a las secciones críticas (parte del código donde los procesos acceden a datos compartidos modificables)

◦Evitar condiciones de carreraSincronización

◦Generalización de la exclusión mutua◦Un proceso/hilo debe esperar por un

evento que realiza otro proceso/hilo

Problemas de concurrenciaProblemas de concurrenciaExclusión mutua: los procesos

controlas las secciones críticasControl de entrada

Sección criticaControl de salida

Sincronización: los procesos verifican y avisan la ejecución de los eventos Proceso A Proceso BEspera por evento de B Evento de B ………….. Avisa a AContinúa ejecución

Herramientas para controlar Herramientas para controlar concurrenciaconcurrenciaSoluciones por software (ya no se usan)Soluciones por hardware

◦test-and-set, swap, instrucciones de máquina

◦Usadas por los sistemas de operaciónSoluciones de bajo nivel

◦Provistas por los sistemas de operación◦Semáforos

Soluciones de alto nivel◦Provistas por los lenguajes de

programación◦Monitores (java)

Problemas ClásicosProblemas ClásicosProductor/ConsumidorLectores/EscritoresFilósofosBarbero dormilón

Creación de un hilo: la Creación de un hilo: la clase Threadclase Threadclass Repeticion extends Thread {

prívate int repeticiones; private String mensaje;

Repeticion (String msg, int n) { mensaje = msg; repeticiones = n;

} public void run () {

for (int i = 1; i <= repeticiones; i++) System.out.println (mensaje + " " + i); }

public static void main (String args[]) { Repeticion r1 = new Repeticion ("Rojo", 5); Repeticion r2 = new Repeticion ("Azul", 80); rl.start ();

r2.start (); }

Creación de un hilo: Interfaz Creación de un hilo: Interfaz RunnableRunnableclass Repeticion2 implements Runnable { private int repeticiones;

private String mensaje;

Repeticion2 (String msg, int n) { mensaje = msg; repeticiones = n;

} public void run () {

for (int i = 1; i <= repeticiones; i++) System.out.println (mensaje + " " + i);

} } public static void main (String args[]) {

Repeticion rl = new Repeticion ("Rojo", 5); Thread r2 = new Thread (new Repeticion2 ("Azul", 80)); r1. start (); r2. start ();

}

Estados y control de hilosEstados y control de hilosNew

◦ Inicializados, hasta recibir la señal de startRunnable

◦ Se invoca al método run de un hilo (running - prioridades)

Blocked ◦ El método suspend ha sido llamado (resume)◦ El método sleep ha sido llamado

(milisegundos)◦ El método wait ha sido llamado (notify o

notifyAll)◦ El hilo esta bloqueado por YO

Dead◦ run termina◦ stop se ejecuta

BibliografiaBibliografiahttp://www.ldc.usb.ve/~yudith/do

cencia/Telematica/organizacionherramientas.html

http://www.dlsi.ua.es/~abia/PC/material/programacion-concurrente-java.htm#P_2_