Please enable JavaScript.
Coggle requires JavaScript to display documents.
Principios generales de concurrencia - Coggle Diagram
Principios generales de concurrencia
Bloqueos
Estado de un proceso en el que este deja de recibir atención de la CPU.
Barreras de sincronizacion
Cuando nuestro procesamiento de datos requiere verificar que un conjunto de hilos o procesos ha concluido, existe un patrón, conocido
como barrera (barrier), que impide continuar hasta que todos los hilos hayan alcanzado el mismo punto de la ejecución
Deadlock o interbloqueo
Condición de un conjunto de procesos en la que
todos estos están bloqueados, en espera de un evento o una condición que solo otro
proceso del conjunto puede generar.
No apropiación
prevencion y formas de evitar interbloqueos
Cuando un proceso se encuentra en espera de un recurso que le falta, el cual tiene una prioridad mayor, o lo dicta así su algoritmo,se revocan todas las asignaciones previas de los recursos.
Asignación y espera
prevencion y formas de evitar interbloqueos
Podemos controlar el orden en el que se les asignan los recursos
Exclusión mutua
prevencion y formas de evitar interbloqueos
Podemos reemplazar los recursos non-preemptive por otros que
ofrezcan una funcionalidad equiparable, pero que además sean preemptive es decir que puedan atender diversas peticiones de forma concurrente
Espera circular.
prevencion y formas de evitar interbloqueos
Se asigna
un número ordinal a cada recurso y se obliga a todas las tareas a solicitar dichos recursos en el mismo orden.
Deteccion
Mecanismos al sistema operativo con
objeto de detectar las ocasiones en que ha ocurrido un interbloqueo y luego proceder a tomar las medidas correspondientes.
Detección
por tiempo de espera
Ignorar el interbloqueo
Prediccion
El sistema operativo puede utilizar diversos algoritmos para analizar la asignación de los recursos e impedir las secuencias de asignaciones que llevarían a interbloqueos
Region critica
Parte del codigo en la que se hace uso del recurso non-preemptive y se comparte por dos o mas procesos sobre el que se desea evitar la condicion de carrera
Condiciones de carrera
Uso de recursos que no están preparados para atender peticiones distintas
de forma concurrente.
non-threadsafe
non-preemptive
Semaforos
Es una variable o tipo de dato abstracto usado para controlar el acceso, para múltiples procesos o hilos, a un recurso compartido en ambientes
de multiproceso o multiusuario.
sem_wait
Prueba el valor del semáforo con el fin de comprobar si este tiene un valor mayor a 0. De ser así, lo decrementa y termina la operación, permitiendo progresar a la tarea que hizo la llamada. Por el contrario, si el semáforo tiene un valor de 0, bloquea la tarea que lo invocó como un sleep.
sem_post
Incrementa el valor del semáforo. Esto es, si el valor del semáforo termina con un valor mayor a 0, alguna de las tareas bloqueadas por invocar sem_wait puede despertar y proceder a decrementar el valor del semáforo y proseguir.
Mutex
pthread_mutex_unlock.
pthread_mutex_lock
Sincronizacion de procesos
Se requieren mecanismos de sincronización que permitan
detener las tareas en espera de algún elemento o condición externa.
wakeup
Se
utilizan posteriormente para reactivar un proceso bloqueado
sleep
Se usan en un inicio
para que los procesos o hilos puedan solicitar que se les bloquee