Programacion concurrente

Programacion concurrente gysantillanmarqucz 110R5pR 17, 2011 2 pagcs PROGRAMACIÓN CONCURRENTE Diseño basado en varias actividades independientes Conceptualmente se ejecutan en paralelo, en un nodo, multiplexa el tiempo de procesador entre las tareas. En un sistema distribuido, paralelismo real las actividades deben cooperar entre – Comunicación – Sincronización Actividades – procesos o threads (hilos) Utilidad de la programación Concurrente Mejora las características de: – Flexibilidad – Interactividad

Facilita el diseño de sistemas – Eficiencia – Reactivos (respond ora – Con actividades lóg me stintos niveles to View de prioridad – Con actividades pe Ej. atención a vario Dificultades a resolver Puede darse cualquier intercalado de Ejecución, los programas deben ser correctos bajo cualquier intercalado posible – Ejemplo. acceso a cuenta bancarla Posibles interferencias entre tareas – Resultado incorrecto bajo ciertos intercalados (no determinismo) Vivacidad, interbloqueos Proceso Abstracción proporcionada por el SO (ej Unix) El SO planifica y ejecu Swlpe to vlew nexr page ejecuta varios procesos Algoritmo de planificación – Cooperativo (cada proceso se autolimita) – Expulsivo (el sistema limita el tiempo dedicado a cada proceso) – Cada proceso mantiene su propio estado pila Áreas de datos Ficheros abiertos, etc. Existe una jerarquía de objetos (relación padre-hijo) Padre e hijo comparten información – Ficheros abiertos – Pipes y streams – Sockets Pueden comunicarse/sincronizarse Thread ligero) Hilos = Actividades concurrentes dentro de un proceso omparten el contexto del proceso padre – Variables compartidas Pero cada hilo mantiene una parte local – Pila local – Vanables locales, etc Creación/destrucción/comunicación/cambio estado mucho más eficiente que con procesos La memoria compartida facilita la comunicación y sincronización Pero aparecen posibles interferencias Nos centramos en hilos (Threads) – Asumimos acceso a variables comunes Interferencias Muchas operaciones suponen tanto lecturas como escrituras Ej – i++ consiste a bajo nivel en vanas operaciones primitivas