INTRODUCCIÓN

Programación concurrente, introducción conceptos

Comienza Ya. Es Gratis
ó regístrate con tu dirección de correo electrónico
INTRODUCCIÓN por Mind Map: INTRODUCCIÓN

1. PROPIEDADES

1.1. VIVACIDAD Y ESTANCAMIENTO

1.1.1. Secuencia de disparo INFINITA O FINITA

1.1.1.1. (termina la secuencia? )

1.1.2. LIMITADA

1.1.2.1. cada lugar tiene un MAX finito de tokens. Es "estrucuralmente marcada" si para todo marcado inicial la RDP es limitada

1.1.3. SEGURA

1.1.3.1. Cada lugar tiene 0 o 1 toquen

1.1.4. SEUDO VIVA

1.1.4.1. PARTE DE LA RED ESTA VIVA Y OTRA MUERTA Existen transiciones que quedan vivas, y otras que se disparan o una unas veces y luego mueren

1.1.5. QUASI VIVA

1.1.5.1. Todas las transiciones de disparan al menos una vez.

1.1.6. LIBRE DEADLOCK

1.1.6.1. DEADLOCK: para una MARCA en la cual no se puede ejecutar ninguna transicion (el token no evoluciona)

1.1.7. LIVENESS

1.1.7.1. Todas las transiciones en todo momento existe una secuencia que pueden dispararse .

1.1.8. REVERSIBLE

1.1.8.1. Tiene un HOME STATE, es decir siempre puede volver al marcado inicial

1.2. CONFLICTO

1.2.1. ESTRUCTURAL

1.2.1.1. DOS TRANSICIONES con una PLAZA en comun

1.2.2. EFECTIVO

1.2.2.1. conflicto estructural donde el numero de tokens es menor al numero de transiciones del conflicto

1.2.3. MULTIPLE DISPARO

1.2.3.1. conflicto donde el numero de tokens abastece todas las transiciones (se pueden disparar paralelamente)

1.2.4. GENERAL

1.2.4.1. Cuando las transiciones de un conflicto se PUEDEN disparar simultáneamente, pero no todas en su grado de habilitación

1.3. CONCURRENTE

1.3.1. Transicion concurrente: es cuando dos transiciones independientes entre si, o unidas a un conflicto, PUEDEN dispararse simultaneamnte, o antes y despues

1.4. PERSISTENTE

1.4.1. Si por cada par de transiciones habilitadas, el disparo de una no me desactiva la otra, es decir pueden ejecutarse UNA TRANSICION HABILITADA SOLO SE DESACTIVA POR SU PORPIO DISPARO

1.5. GRADO DE HABILITACIÓN

1.5.1. Numero de disparos que se PUEDE disparar UNA transición concurrentemente

1.6. INVARIANTES

1.6.1. COMPONENTE CONSERVATIVO

1.6.1.1. INVARIANTE DE PLAZA: La suma de tokens en un conjunto de lugares (circuito) siempre es constante

1.6.1.2. RDP CONSERVADORA

1.6.1.2.1. estructuralmente acotada : invariante de plaza que abarca toda la red

1.6.2. COMPONENTE REPETITIVO

1.6.2.1. INVARIANTE DE TRANSICIÓN: existe una o mas secuencias que se ejecutan infinitamente, (un CICLO)

1.6.2.2. RDP CONSISTENTE

1.6.2.2.1. estructuralmente repetititvo: Cuando la secuencia de disparo de la red entera siempre es la misma, siempre reacciona igual infinitamente

1.7. DIAGRAMAS: buscar propiedades

1.7.1. grafo de marcado

1.7.1.1. arcos: disparos nodos/vertices: marcado

1.7.1.2. no se puede dibujar cuando el numero de marcas alcanzables es infinito

1.7.2. raiz del arbol de cobertura

1.7.2.1. sirve cuando el marcado alcanzable es infinito

1.7.2.2. remplaza a la marca mi por W (macro marca) cuando esta AUMENTA , y simboliza el conjunto de marcas posibles que puede o no ser infinito

1.7.2.3. No se puede conocer con exactitud todas las marcas alcanzables ya que están enmascaradas con W

2. GRAMATICAS Y LENGUAJE

3. DIFERENCIAS

3.1. Es mas simpley rápido cambiar de un hilo a otro dentro del mismo proceso, que cambiar de un proceso a otro

3.2. •Los procesos son –generalmente– independientes, VS •Los hilos generalmente comparten otros recursos de forma directa.

3.3. • Al cambiar de un proceso a otro, el sistema operativo, (mediante el dispatcher) genera lo que se conoce como overhead, que es tiempo desperdiciado por el procesador para realizar un cambio de contexto (context switch), VS •El tiempo de espera del cambio de hilos es despreciable

3.4. Si bien los hilos son generados a partir de la creación de un proceso, podemos decir que un proceso LIVIANO es un hilo de ejecución, conocido como Monohilo. O un proceso puede tener multiples hilos en ejecución que pueden ser cooperativas o no entre sí

3.5. La comunicación entre procesos debe intervenir el núcleo para ofrecer protección de los recursos y realizar la comunicación misma, la comunicación entre hilos no requiere nucleo.

4. PROCESO

4.1. "Una unidad de actividad que se caracteriza por la ejecución de una secuencia de instrucciones, un estado actual, y un conjunto de recursos del sistema asociados“

4.2. Un proceso es un programa en ejecución

4.3. Un proceso simple TIENE un hilo de ejecución (concepto de hilo)

4.3.1. El proceso sigue en ejecución mientras al menos uno de sus hilos de ejecución siga activo.

4.4. un proceso es una ACTIVIDAD de cierto tipo que contiene: un PROGRAMA, ENTRADAS Y SALIDAS Y ESTADOS

4.5. ESTADO

4.5.1. Inactivo(memoria secundaria)

4.5.1.1. Suspendido bloqueado:

4.5.1.1.1. Es el proceso que fue suspendido en espera de un evento, sin que hayan desaparecido las causas de su bloqueo.

4.5.1.2. Suspendido programado:

4.5.1.2.1. Es el proceso que han sido suspendido, pero no tiene causa parta estar bloqueado.

4.5.2. Activo (memoria principal)

4.5.2.1. Ejecución/Running

4.5.2.1.1. Estado en el que se encuentra un proceso cuando tiene el control del procesador. En un sistema monoprocesador este estado sólo lo puede tener un proceso.

4.5.2.2. Preparado/Ready

4.5.2.2.1. Aquellos procesos que están dispuestos para ser ejecutados, pero no están en ejecución por alguna causa (Interrupción, haber entrado en cola estando otro proceso en ejecución, etc.).

4.5.2.3. Bloqueado/waiting:

4.5.2.3.1. Son los procesos que no pueden ejecutarse de momento por necesitar algún recurso no disponible (generalmente recursos de entrada/salida BLOCKING, o esperando un recuso en una cola WATING, o durmiendo SLEEPING).

4.5.3. new

4.5.3.1. el proceso esta siendo creado, no se termino de cargar en la memoria primncipal pero existe

4.5.4. Terminated

4.5.4.1. el proceso terminó, y es ZOMBIE si todavia no fue limpiado de la memoria

4.6. CONTROL

4.6.1. Es un registro especial BCP (bloque de control de procesos)donde el sistema operativo agrupa toda la información que necesita conocer respecto a un proceso particular

4.6.2. Identificador del proceso (Process Identificator -PID-, de sus siglas en Inglés).

4.6.3. Estado del proceso. Por ej. listo, en espera, bloqueado.

4.6.4. Contador de Programa: Dirección de la próxima instrucción a ejecutar.

4.6.5. Valores de registro de CPU. Se utilizan también en el cambio de contexto.

4.6.6. Espacio de direcciones de memoria.

4.6.7. Prioridad en caso de utilizarse dicho algoritmo para planificación de CPU.

4.6.8. Lista de recursos asignados (incluyendo descriptores de archivos y sockets abiertos).

4.6.9. Estadísticas del proceso.

4.6.10. Datos del propietario (owner).

4.6.11. Permisos asignados.

4.6.12. Signals pendientes de ser servidos. (Almacenados en un mapa de bits)

5. Dijikstra

5.1. "No hay que apresurarse a codificar, eso lo vuelve muy costoso, primero hay que pensar"

5.2. Software= Producto abstracto

5.3. (ALGOL60), escribió el primer compilador

5.4. 1965 introdujo el "problema de la exclusión mutua" Y "La sección crítica"

5.5. diseñaron e implementaron el sistema operativo THE, que estaba organizado en capas claramente identificadas.

5.6. 1968 Dijkstra publicó su famoso artículo "Procesos secuenciales de cooperación"

5.7. Propuso el semáforo

5.8. • Identificó el "problema del dead-lock" y propuso un elegante "algoritmo de Banker"

5.9. Ilustro el problema del dead-lock con el problema de los filósofos que Condujo al concepto del monitor

5.10. • Dio origen a uno de los principales enfoques de la computación tolerante a las fallas "Sistemas autoestabilizadores a pesar del control distribuido

5.11. En 1976 publicó A Discipline of Programming (Una disciplina de programación), que presentaba su método de desarrollo sistemático de programas junto con sus pruebas de corrección

6. SISTEMAS

6.1. TIPOS

6.1.1. SISTEMAS REACTIVOS

6.1.1.1. Interactúan con el ambiente en el tiempo

6.1.1.2. En muchos casos, éstos no computan resultados, y suele no requerirse que terminen. O Ejemplos de sistemas reactivos son: sistemas operativos, software de control, hardware, etc.

6.1.2. SISTEMAS FUNCIONALES O TRANSORMACIONALES

6.1.2.1. no interactúan con el ambiente

6.2. MODELOS

6.2.1. MAQUINA DE ESTADOS

6.2.1.1. • Hay que notar que la representación gráfica de las máquinas de estado, limita seriamente la complejidad de los problemas que se pueden abordar.

6.2.2. REDES DE PETRI

6.3. Testing y Simulación

6.3.1. “El testing puede confirmar la presencia de errores pero nunca garantizar su ausencia”

6.3.2. VERIFICACIÓN SEMI AUTOMÁTICA

6.3.2.1. Existen serias limitaciones en lo que respecta a la verificación automática de software.

6.3.2.1.1. Por ejemplo, el problema de decidir si un programa dado termina o no o no es computable.

6.3.2.2. Sin embargo, si imponemos algunas restricciones sobre las propiedades que queremos verificar, algunas tareas podrán verificarse automáticamente sobre el sistema

6.3.2.2.1. eJ: MODELCHEKING

6.4. Semantica

6.4.1. sistemas de transición de estados

6.4.1.1. Un sistema de transición de estados es un grafo dirigido (S,S0,->)

6.4.1.2. 𝑆 𝑒𝑠 𝑒𝑙 𝑐𝑜𝑛𝑗𝑢𝑛𝑡𝑜 𝑑𝑒 𝑒𝑠𝑡𝑎𝑑𝑜𝑠/nodos • 𝑠0 𝑒𝑠 𝑒𝑙 𝑒𝑠𝑡𝑎𝑑𝑜/nodo 𝑖𝑛𝑖𝑐𝑖𝑎𝑙 • 𝑅𝑒𝑙𝑎𝑐𝑖𝑜𝑛 𝑑𝑒 𝑇𝑟𝑎𝑛𝑠𝑖𝑐𝑖ó/ aristas

6.5. SISTEMAS CRÍTICOS

6.5.1. Son sistemas, cuyas fallas pueden ocasionar daños de gran importancia, incluyendo pérdida de vidas humanas, catástrofes ecológicas, grandes pérdidas financieras, etc.

7. PROGRAMAS CONCURRENTES

7.1. Los programas concurrentes deben, en general, colaborar para llegar a un objetivo común, para lo cual la sincronización entre procesos es crucial.

7.2. problemas comunes

7.2.1. Violación de propiedades universales (invariantes)

7.2.2. Starvation (inanición): Uno o más procesos quedan esperando por mas tiempo del debido por un mensaje o la liberación de un recurso

7.2.3. Deadlock: dos o más procesos esperan mutuamente el avance del otro

7.2.4. Problemas de uso no exclusivo de recursos compartidos

7.2.5. Livelock: Dos o más procesos no pueden avanzar en su ejecución porque continuamente responden a los cambios en el estado de otros procesos

7.3. INTERLEAVING

7.3.1. ¿COMO SE EJECUTAN LOS PROCESOS CONCURRENTES? Los procesos concurrentes se ejecutan intercalando las acciones atómicas que los componen.

7.3.1.1. (A,1)-> (A,2) ó (B,1) -> (B,2)

7.3.1.2. El orden en que se ejecutan las acciones atómicas no puede decidirse en general, y un mismo par de procesos puede tener diferentes ejecuciones

7.3.1.3. Por cada sentencia atómica tenemos una transición.

7.3.1.4. El espacio de estados crece exponencialmente con el número de componentes y variables.

7.3.2. El número de interleavings posibles, por su parte, es en general muy grande POR LO QUE ES AVECES ES IMPOSIBLE DE TEATEAR Y LLEGAR AL OVERFLOW

8. HILOS

8.1. COMPARTEN

8.1.1. Si un mismo proceso compartan los recursos hace que cualquiera de sus hilos pueda modificarlos

8.1.2. Los hilos de ejecución que comparten los mismos recursos, y estos recursos, son en conjunto conocidos como un proceso

8.1.2.1. El proceso sigue en ejecución mientras al menos uno de sus hilos de ejecución siga activo.

8.2. Permite a una aplicación realizar varias tareas a la vez(concurrentemente).

8.3. PROPIO

8.3.1. contador de programa

8.3.2. la pila de ejecución

8.3.3. el estado de la CPU ->

8.3.4. -> (incluyendo el valor de los registros) Espacio de almacenamiento estático donde almacenará las variables

8.4. ESTADOS

8.4.1. Creación

8.4.1.1. Cuando se crea un proceso se crea un hilo para ese proceso.

8.4.1.2. Luego, este hilo puede crear otros hilos dentro del mismo proceso.

8.4.1.3. El hilo tendrá su propio contador, registros, espacio de pila, y pasara a la cola de listos.

8.4.2. Bloqueo

8.4.2.1. Cuando un hilo necesita esperar por un suceso, se bloquea (salvando sus registros de usuario, contador de programa y punteros de pila).

8.4.2.2. Ahora el procesador podrá pasar a ejecutar otro hilo que esté en la cola de Listos mientras el anterior permanece bloqueado.

8.4.3. Desbloqueo

8.4.3.1. Cuando el suceso por el que el hilo se bloqueó se produce, el mismo pasa a la cola de Listos.

8.4.4. Terminación

8.4.4.1. Cuando un hilo finaliza se liberan tanto su contexto como sus pilas.

9. Programas: Paralelismo y Concurrencia

10. redes de pretri

10.1. Es un modelo eficaz para visualizar los comoportamientos de l paralelismo y concurrecia

10.2. COMPONENTES

10.2.1. plazas

10.2.2. transiciones

10.2.3. arcos (pre T y pos T)

10.2.4. tokens (forman el marcado)

10.3. MARCADO: es el conjunto de tokens asociados a una una plaza en un momento dado

10.4. DISPARO: es la transicion de un estado a otro, este es ATOMICO, es decir o esta completo o no se ejecuta

10.5. CONCEPTOS MODELADOS

10.5.1. CONFLICTO

10.5.1.1. SIMPLE

10.5.1.2. SIMETRICO

10.5.1.3. ASIMETRICO (potencial)

10.5.2. CONCURRENCIA

10.5.3. SINCRIONIZACIÓN (->1T)

10.5.4. FUSION (->1P)

10.5.5. LECTOR Y ESCRITOR EN EXCLUSIÓN MUTUA

10.5.6. PRIORIDAD (con arco inhibidor)

10.5.7. RECURSO COMPARTIDO Y EXCLUSIÓN MUTUA

10.5.8. BUFFER O MEMORIA DE DISPARO

10.5.9. PRECENCIA

10.5.10. CAPACIDAD LIMITADA

10.6. EXTENSIONES

10.6.1. con capacidad finita de plaza

10.6.2. con prioridad en transiciones de conflictos

10.6.3. extensión de arcos

10.6.3.1. inhibidor

10.6.3.1.1. se sensibiliza si NO hay tokens

10.6.3.2. lector

10.6.3.2.1. se sensibiliza si hay tokens pero no se consumen

10.6.3.3. reset

10.6.3.3.1. consume todos los tokens al disparar

10.6.4. No automatas

10.6.4.1. es decir que la condición de sensibilizado de la transición puede estar ligada a un evento externo como el tiempo

10.6.4.1.1. GUARDAS

10.6.4.1.2. EVENTO

10.6.4.1.3. TIEMPO

10.6.5. continuas

10.6.5.1. en vez de tener un numero entero positivo en la cantidad de tokens tenemos un FLUJO, es decir va a ser un numero REAL positivo

10.6.6. HIBRIDAS

10.6.6.1. combinación de continuas y discretas en una misma red

10.7. TIPOS-CARACTERÍSTICAS

10.7.1. ORDINARIA

10.7.1.1. es la red original sin nada extra, los pesos de los arcos es 1, es automata , discreta, sin prioridad ni nada.

10.7.2. ESPECIALES

10.7.2.1. SIMPLE

10.7.2.1.1. cada TRANSICIÓN puede verse afectada para UN ÚNICO CONFLICTO

10.7.2.2. LIBRE ELECCIÓN

10.7.2.2.1. Para todas las transiciones de un conflicto poceen unicamente 1/+ lugar de entrada que es el mismo.

10.7.2.3. MAQUINA DE ESTADO

10.7.2.3.1. por CADA TRANSICION tiene una unico Lugar entrada y salida (equivalente a un automata) (no hay concurrencia, si puede haber conflicto)

10.7.2.4. LIBRE DE CONFLICTO

10.7.2.4.1. Para cara plaza puede haber una sola transicion de salida

10.7.2.5. GRAFO DE EVENTO

10.7.2.5.1. por cada LUGAR/PLAZA tiene una unica Transicion de entrada y salida (NO HAY CONFLICTO pero puede haber concurrencia)

10.7.2.6. PURA

10.7.2.6.1. si no tiene un AUTO LOOP

10.8. ALGEBRA

10.8.1. Matriz de Incidencia

10.8.1.1. W= (W+) - (W-)

10.8.1.1.1. Matriz de pesos de entrada a Transiciones menos pesos de salida de Transiciones

10.8.2. ECUACIÓN fundamental

10.8.2.1. mo = mi+W*s

10.8.2.1.1. mi=marcado en instante i s=vector de disparos W=Matriz de incidencia mo=marcado despues de "s"

10.8.3. Invariante de Plaza

10.8.3.1. Xt*W=0

10.8.3.1.1. Xt= vector traspuesto donde vale 1 en las plazas del invariate. (Se puede obtener reducinedo la matriz W -> I*W

10.8.4. Invariante de Transicion

10.8.4.1. W*s=0

10.8.4.1.1. s= invariante de transicion

10.8.5. T. SENSIBILIZADA

10.8.5.1. Mi+Wn >=0

10.8.5.1.1. arco normal

10.8.5.2. C*Wi>0

10.8.5.2.1. arco inhibidor

10.8.5.3. U*Wl>0

10.8.5.3.1. arco lector

10.8.5.4. G*Wg>0

10.8.5.4.1. guarda

10.8.5.5. E*We>0

10.8.5.5.1. eventos

10.8.5.6. T*Wt>0

10.8.5.6.1. tiempo

10.8.5.7. R*Wr>0

10.8.5.7.1. reset

10.8.6. MARCADO

10.8.6.1. Mi+1=Mi+W*(disp*Ex)#A,

10.8.6.1.1. con # multiplicacion elemento a elemento

10.8.6.1.2. Ex = multiplicacion de todas las opciones de sencibilizado (indicadas arriba)

10.8.6.1.3. A=numero de disparos por el reset= Marca(Wr*Mi)

10.9. RDP TEMPORAL

10.9.1. Tipos

10.9.1.1. RDP con delay

10.9.1.2. RDP con tiempo

10.9.2. SEMANTICA DE TIEMPO

10.9.2.1. DÉBIL

10.9.2.1.1. Una transición PUEDE o no dispararse, y si se dispara deberá ser en un [INTERVALO] de tiempo dado

10.9.2.2. FUERTE

10.9.2.2.1. (ininterrumpible) Cuando la transicion se secibiliza por tokens, estos son absorvidos y luego de pasar "X tiempo " se disparan

10.9.3. tipos de transiciones

10.9.3.1. CODE

10.9.3.1.1. ejecuta un codigo al sencibilizarce, [alfa,beta]

10.9.3.2. TIME

10.9.3.2.1. transicion asociada a una actividad temporal, (timeOut, act periodica, etc) [alfa, beta]

10.9.3.3. SYCO

10.9.3.3.1. disparo inmediato [0,0]

10.9.4. Sub Clases

10.9.4.1. Time Environmet Relationship nets

10.9.4.1.1. los tokens guardan valores, como la de CHRONOS: que funcona como "time stamp". El disparo de la transicion esta condicionado al valor de chronos

10.9.4.2. Time basic nets

10.9.4.2.1. Caso aprticular de los TER, donde la unca variable que puede almacenar los tokes es la de chronos

11. INDEPENDIENTE

12. DEPENDIENTE

13. MONITORES

13.1. Es un mecanismo de software (instancia de una clase) que permite el acceso seguro a múltiples thread de recursos compartidos

13.2. CLASIFICACIÓN

13.2.1. SEÑALES (signal/resume)

13.2.1.1. IMPLICITA

13.2.1.1.1. Es un monitor de señal automática, que no tiene ninguna declaración: NO HAY COLAS DE CONDICIÓN, es una sola cola de espera ademas de la cola de entrada, la cual se chequea, cuando un proceso sale del monitor. pero LAS AFIRMACIONES SON CODIFICADAS DE FORMA EXPLICITA

13.2.1.2. EXPLICITA

13.2.1.2.1. Es un monitor con una declaración explícita de la variable señal

13.2.2. PRIORIDAD

13.2.2.1. prioridad a la cola de cortesía

13.2.2.2. prioridad a la cola de condición

13.2.2.3. prioridad a la cola de entrada

13.3. ELEMENTOS

13.3.1. VARIABLES LOCALES

13.3.1.1. variables que almacenan el estado interno del recurso

13.3.1.2. variables de condición(colas)

13.3.1.2.1. operaciones

13.3.2. CONSTRUCTOR

13.3.2.1. código de inicialización

13.3.3. MÉTODOS

13.3.3.1. deben ejecutarse en exclusión mutua

13.4. política

13.4.1. Resume-and-Exit (RE)

13.4.1.1. el proceso reactivador sale del monitor y entra el reactivado (RESUME se ejecuta antes de salir, al último)

13.4.2. Resume-and-Wait (RW)

13.4.2.1. El proceso reactivador ejecuta la funcion resume al principio y si hay hilos esperando, me voy a la cola de ENTRDA, y doy prioridad al proceso despertado

13.4.3. Resume-and-Urgent-Wait (RUW)

13.4.3.1. El proceso reactivador ejecuta el RESUME cuando entra y le da prioridad a al proceso despertado y me voy a una cola ESPECIAL (con mayor prioridad que la cola de entrada)

13.4.4. Resume-and-Continue (RC)

13.4.4.1. El proceso reactivador ejecuta el RESUME al principio y sigue ejecutando el monitor y el despertado se va a la cola de entrada