sistemas concurrentes - ldc noticias - universidad …yudith/docencia/telematica/sistemas... ·...
Post on 29-Sep-2018
225 Views
Preview:
TRANSCRIPT
ConcurrenciaConcurrenciaEjecución simultánea de
procesos aparece inicialmente como una necesidad de los sistemas de operación.
Inicio
Fin
Inicio
Fin
P1
P2
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
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
top related