Please enable JavaScript.
Coggle requires JavaScript to display documents.
Sistemas operativos(Comunicación entre procesos), (evita esperas activas…
Sistemas operativos(Comunicación entre procesos)
Señales
Uso
Notificar los procesos los eventos que ocurren en el sistema
Identificación con enteros y/o constantes simbólicos
Mecanismos de comunicación y sincronización entre procesos
Tratamiento de señales
Finaliza procesos
ignora la señal
suspender el proceso
reanudar el proceso
Para algunas señales se define una acción diferente con un manejador con una señal capturada
generación
Excepciones
otros procesos(kill)
Interrupciones de terminal
Control de tareas
Gestión de cuotas
Notificación de E/S
Alarmas
recepción de señales
La acción la realiza el proceso receptor
Necesita ser planificado para ejecutar la acción correspondiente
Interrupciones
Vienen desde afuera o de la propia CPU
El manejador (ISR) puede estar en el SO
La CPU interrumpe el proceso, lanza el manejador
Las usa la CPU para comunicarse con SO
Las inicia el SO(núcleo) o el proceso(kill)
Enmascaradas por Proceso
La maneja el SO la envía al proceso, el manejador está en el proceso
Definir el comportamiento de la señal
resultado=signal(signal,acción)
Dirección del manejador
SiG_DFL
acción por defecto
SiG_IGN
ignorar la señal
Llamada al sistema sigation
Permite especificar otros parámetros y banderas de gestión de la señal
Información sobre la señal el proceso que la envió
Región crítica
No puede haber dos procesos simultáneos en la región crítica
No se pueden hacer suposiciones sobre velocidades o números CPUs
Ningún proceso no puede bloquear a otro sin estar en la región crítica
Variables candados
Intento de solución software
Candado 0(no hay proceso en RC)
candado 1 (hay algún proceso RC)
!= no funciona
Instrucción TLS
Es una instrucción atómico(bloquea el bus de memoria)
Evitar a esperar activa
sleep
wake up
Productor-consumidor
productor
El productor duerme para esperar a que se llene
Consumidor
El consumidor duerme esperando a que haya algo
carrera
El consumidor ve un 0 en cuenta
Planificador duerme al consumidor para terminar su quantum
Productor se ejecuta mete algo en el buffer,despierta al consumidor
El consumidor no sabe que pasó lee la cuenta y se duerme
Semáforo
Los semáforos permiten al programador asistir al planificador del sispema operativo en su toma de desiciones permitiendo sincronizar varios procesos a la vez
operaciones
down>0 disminuye si es 0 se bloquea
up incrementa el semáforo si hay bloqueados para ejecutar down
SO
Inabilita interrupciones
No hace cambios de contexto
Con varias CPU hay que garantizar que solo se usa una
Semáforo productor-consumidor
2 semáforos para sincroniza
1 llena
0 ranuras al principio
1 vacía
tamaño del buffer
Garantizar el orden
productor
deja de ejecutarse cuando el buffer está lleno
consumidor
deja de ejecutarse cuando el buffer está vacío
1 semáforo mutex
llena al principio
Semáforo binario
Solo un proceso puede entrar a la vez
Mutex
look pechar
unlook
Se usa para bloquear hilos hasta que se cumpla
Mutex recursivo
XSemaphoneTakeRecursive()
Toma look por su dueño
pone unlook tantas veces como look hubo
XSemaphoneGiveRecursive()
Interbloqueo
Dos o más procesos quedan bloqueados indefinidamente al entrar en conflicto las diferentes necesidades
Apropiativos
No apropiativas
Los problemáticos son los no apropiativos
Colax(Posix)
Paso de mensajes entre procesos en Linux
Implementado como ficheros
Funciones
mq-send()
Se mete un mensaje por prioridad
mq-recive()
mensaje más arriba
Bloqueados si la cola está vacio o llena
Una sola puede recibir varias tareas y mensajes diferentes
Direct To Task
Alternativa más rápida
Mandan notificaciones directamente a la tarea
Tienen dos valores
estado
valor
Se puede mandar una notificación a cualquier posición
(evita esperas activas que pueden dar lugar al problema de inversión de prioridades)