Exclusión Mutua: enfoque por SO

Anuncio
PLANIFICACION
La Planificación es el conjunto de políticas y mecanismos incorporados al S.O. que gobiernan el orden
en que serán ejecutados los trabajos, cuyo objetivo principal es el máximo aprovechamiento del
Sistema.
Entre varios procesos en condiciones de ser ejecutados, el sistema operativo debe decidir cual
conviene despachar primero y qué orden de ejecución debe seguirse.
El módulo del sistema operativo encargado de esta tarea se denomina planificador (scheduler) o
administrador del procesador y el algoritmo particular utilizado se denomina algoritmo de
planificación.
Niveles de Planificación
Planificación a Extra Largo Plazo
Por ser en la escala de tiempo del ser humano. Depende de la organización del centro de cómputos y
para regularlo se deben crear Procedimientos escritos que fijen claramente las Reglas de uso,
seguridad, accesos, prioridades, etc.
Planificación a Largo Plazo (job scehduler)
Long Term Scheduler (Planificador de Trabajos): decide cual será el próximo trabajo que se
ejecutará, para lo cual carga el Programa y sus datos y crea los procesos. Es importante en
Sistemas Batch donde decide sobre la base de las necesidades de los recursos que requieren los
procesos, cuál de ellos logrará mantener el procesador.
Planificación a Medio Plazo (SWAPPER)
Middle Term Scheduler (también Medium term scheduler o Planificador de Swapping): es el que
decide sacar de memoria central y llevar al disco (swap-out) a aquellos procesos inactivos o a los
activos cuyos estados sean bloqueado momentáneamente o temporalmente o los suspendidos y
luego, cuando desaparezcan las causas de su bloqueos, traerlos nuevamente a Memoria (swap-in)
para continuar su ejecución
Planificación a Corto Plazo (dispacher)
Planificador de Procesos (Short Term Scheduler): Es el responsable de decidir quién, cuándo,
cómo y por
cuánto tiempo recibe procesador un proceso que esta preparado en la Ready Queue para ejecutar,
además en S.O.
con esquemas expropiativos se ocupa de quitar el recurso procesador al proceso que esta
ejecutando. También
verifica las interrupciones y las trata.
Proceso NuLL: El proceso NULO nunca termina, no tiene E/S (Ej.: ciclo while,
True do nada) y tiene la prioridad más baja en el sistema. En consecuencia la cola de listos nunca está
vacía,
El planificador a corto plazo es invocado cada vez que un suceso (interno o externo) hace que se
modifique el estado global del sistema. Por ejemplo:
Tics de reloj (interrupciones basadas en el tiempo).
Interrupciones por comienzo y terminaciones de Entrada / Salida.
La mayoría de las llamadas al S.O..
El envió y recepción de señales.
La activación de programas interactivos.
Políticas de Planificación Alternativas
Non-Preemptive: cuando un proceso esta ejecutando, continúa corriendo hasta que termina o se
bloquea esperando por E/S o un servicio del sistema operativo.
Preemptive: el proceso que actualmente esta ejecutando puede ser interrumpido y enviado a la
cola de Listos por el sistema operativo.
Non-Preemptive: (FCFS- PRIORIDAD – SPN/F – HRRN)
First Come First Served
En FCFS el proceso que a permanecido por más tiempo en la cola de listos es el elegido
para correr. Esta política suele desaprovechar al procesador y a los dispositivos de E/S. Para
mejorar el desempeño muchas veces se lo combina con un esquema de prioridades.
Prioridades
Pueden ser
internas o dinamicas // externas o estáticas.
Shortest Process Next (SPN)
Es una política en la que no se usa la substitución. El proceso cuyo tiempo de ejecución predicho
es el menor, es el elegido por el planificador. La complicación que presenta es la necesidad de
saber o estimar el tiempo de ejecución de los procesos.
Para un trabajo batch, el tiempo es estimado por el programador. Para procesos interactivos, el
sistema operativo mantiene un promedio de cada ráfaga de cada proceso. (Formulas Pag. 394)
También hay riesgo de starvation para los procesos largos.
Highest Response Ratio Next (HRRN)
Se define RR como: S:
w s
RR 
s
Tiempo de servicio esperado.
W: Tiempo que espera por el procesador.
El planificador siempre elige el proceso con mayor RR. Lo bueno es que los procesos con mayor RR
serán los más chicos y los más viejos.
Preemptive: (RR – VRR – SRT)
Round Robin o torneo
Un proceso puede salir del estado de ejecución por tres motivos:
a) que termine su ejecución,
b) se proceda al llamado a una entrada – salida y el proceso se quede bloqueado y
c) que se supere el quantum de ejecución del proceso, se dispare la interrupción del reloj y sea
automáticamente retirado del estado de ejecución.
El algoritmo de planificación round-robin (RR) fue especialmente diseñado para sistemas de
tiempo compartido. Se define una pequeña unidad de tiempo común llamada quantum de tiempo o
time slice (QT)
VRR (Virtual Round Robin), el cual funciona de manera similar al RR, aunque los procesos que son
desbloqueados se colocan en una cola FIFO auxiliar, la cual tiene prioridad por sobre la cola principal,
SRT
Es la versión SPN/F no apropiativa.
Características de un sistema operativo de
tiempo real
Determinismo
Sensibilidad
Control del Usuario
Confiabilidad
Tolerancia a fallas
Planificación de hilos
Compartir carga (Load sharing):
Planificación por grupos (gang scheduling):
Asignación dedicada de procesadores:
Planificación dinámica:
SINCRONIZACION Y COMUNICACIÓN ENTRE PROCESOS
El acceso a estos recursos compartidos o la localización de áreas compartidas en la memoria
generan problemas de uso y de comunicación entre los procesos. Para resolver estos problemas
de competencia entre procesos, se utilizan dos mecanismos : la sincronización y la
comunicación.
los problemas de concurrencia parten del hecho de que la velocidad relativa de ejecución de los
procesos no puede predecirse, ya que depende de la actividad de otros procesos, del tratamiento
de las interrupciones y de las políticas de planificación. Así surgen las siguientes dificultades:
1. Compartir entre procesos los recursos globales está llena de riesgos.
2. Para el S.O. resulta difícil asignar los recursos de forma óptima.
3. Resulta difícil localizar un error de programación porque los resultados no son normalmente
reproducibles.
La mutua exclusión es uno de los problemas más importantes que presenta la ejecución de los
procesos concurrentes debido al hecho de ser la abstracción de muchos problemas de
sincronización.
Interacción entre Procesos
Influencia que un Proceso
tiene sobre otro
Grado de
Relación
Conocimiento

Los procesos no
se conocen
Competencia


Los procesos se
conocen
indirectamente
Cooperación
por compartir


Los procesos se
conocen
directamente
Cooperación
por comunicación

Los resultados de un
proceso son independientes
de la acción.
La duración del proceso
puede ser afectada
Los resultados de un
proceso pueden depender
de la información obtenida
de otro.
La duración del proceso
puede ser afectada
Los resultados de un
proceso pueden depender
de la información obtenida
de otro.
La duración del proceso
puede ser afectada
Potenciales Problemas de
Control


Mutua exclusión.
Deadlock (recursos
reusables).
 Starvation.


Mutua exclusión.
Deadlock (recursos
reusables).
 Starvation.
 Coherencia de datos

Deadlock (recursos
consumibles).
 Starvation.
Estas condiciones no son siempre tan terminantes, muchas veces los procesos compiten y
cooperan al mismo tiempo.
Recurso Crítico: es aquel que puede ser compartido (no se accede simultáneamente).
Region o Sección crítica: es una parte de un código que no puede estar siendo ejecutado por más de
un proceso simultáneamente porque, por ejemplo, hace uso de un recurso crítico.
Exclusión Mutua: enfoque por Software
Cuenta con que hay algún mecanismo que obliga a que dos operaciones simultaneas sobre una
locación de en MP, se hagan serialmente. Más allá de esto, no espera soporte alguno de hardware,
sistema operativo o de lenguaje de programación.
El algoritmo de Dekker
Busy Waiting: Ejecución repetida de un loop de código mientras se espera la ocurrencia de un
evento.
Es un algoritmo para la mutua exclusión de 2 procesos.
La idea de este algoritmo, son dos variables booleanas, una para c/proceso, que indican la
voluntad de acceder a la sección critica y una variable extra que indica que proceso tiene derecho
(de quien es el turno) a tratar de entrar (las tres variables son compartidas).
Un proceso que quiere entrar a la sección critica pone su bandera en TRUE y se fija en la bandera
del otro, si esta en FALSE, quiere decir que puede ejecutar su sección critica. Si no, se fija en la 3°
variable y si dice que es su turno volverá a revisar la bandera del otro. Si no fuese su turno queda
atrapado en un ciclo hasta que lo sea. (Algoritmo en Pag 203)
El algoritmo de Peterson
Logro lo mismo que con el algoritmo de Dekker y también usa las mismas 3 variables, pero es
mucho mas claro y es fácil llevarlo de los 2 procesos que maneja a n procesos. La idea que
implementa el algoritmo es: entras en la sección crítica si no quedas trabado en busy waiting, y
quedas trabado cuando la bandera del otro es TRUE y es su turno.
(Algoritmo en Pag
204)
Exclusión Mutua: enfoque por Hardware
Deshabilitar interrupciones
Primitiva: Son procedimientos o funciones estándar del sistema operativo (System Calls) que se
ejecutan atómicamente como si fuesen una sola instrucción y su mutua exclusión no
aparece explícitamente en la ejecución. (Notas Sobre Sistemas Operativos – Tomo 1 –
Pag. 273)
En un uniprocesador, para que ningún otro proceso entre en la sección critica, además del que ya
esta en ella, bastara con que no se soliciten servicios al sistema operativo y se deshabiliten las
interrupciones. Esto se hace mediante una primitiva que deshabilite justo antes de la sección
critica y una que habilite justo después.
Instrucciones de maquina especiales
Esta técnica se puede aplicar a multiprocesadores. Se basa en ciertas instrucciones que llevan a
cabo 2 acciones atómicamente, acciones como: leer, escribir o testear. Dos ejemplos de estas
instrucciones son test and set y exchange. Sus ventajas son:



Se aplica tanto a uno como a varios procesadores.
Es más fácil de verificar.
Soporta fácilmente varias secciones críticas, basta con usar una variable para c/u.
Sus desventajas son:



También usa busy waiting.
Es posible que haya Starvation.
Es posible que haya Deadlock. Cuando un proceso esta en la sección crítica y es
substituido por otro proceso que quiere acceder a ella.
T & SET
Exchange
Exclusión Mutua: enfoque por SO
Semaforos
Un semáforo es una herramienta genérica de sincronización de procesos, o sea, permite el
ordenamiento de las operaciones que realizan los procesos en el tiempo. Es una especie de
bandera (señal o flag) que indica la posibilidad de acceder o no a un recurso.
La primitiva ‘Wait’ decrementa el valor del semáforo. Si queda negativo, el
proceso es bloqueado y queda en la cola del semáforo.
2°
La primitiva ‘Signal’ incrementa el valor del semáforo. Si había un valor no
positivo, entonces un por bloqueado por ‘wait’ se desbloquea.
1°
Disciplinas en el manejo de las colas de procesos bloqueados
FIFO: cuando se ejecuta un signal, se desbloquea el primer proceso de la cola (el más antiguo).
RANDOM: Se desbloqueará cualquier proceso que esté en la cola de bloqueados,
independientemente
de su antigüedad.
Con la disciplina FIFO, se sabe que, independientemente de la longitud de la cola de procesos en
espera, le legará su turno. En cambio, con la disciplina RANDOM, no se sabe cuándo llegará su
turno.
Monitores
Paso de mensajes
Hay varios diseños para el paso de mensajes, y todos ellos dependen de estas 2 primitivas:


send ( destino , mensaje )
recieve ( fuente , mensaje )
Las características que determinan el diseño del paso de mensajes son: sincronización,
direccionamiento, formato de mensaje y disciplina de la cola.
Sincronización
Tanto send como recieve pueden ser bloqueantes o no bloqueantes. De las 4 combinaciones
posibles, 3 son las más comunes:

send bloqueante, recieve bloqueante: Emisor y receptor son bloqueados hasta
que el mensaje es entregado. Esto suele llamarse Rendez – vous.
 send no bloqueante, recieve bloqueante: Esta es la combinación más usada. Es
la que usa un proceso server.
 send no bloqueante, recieve no bloqueante: Nadie espera.
Direccionamiento
Directo
Los procesos envían y reciben los mensajes entre sí. Dependen de las velocidades relativas entre
sí (si son distintas requieren un buffer de mensajes para su sincronización).
Propiedades:
1. Se establece un vínculo automáticamente entre los procesos. Sólo deben conocerse
mutuamente.
2. El vínculo se establece con 2 procesos exactamente.
3. El vínculo es bidireccional.
Indirecto
El mensaje pasa por una estructura se datos compartida compuesta de colas, dedicada a
almacenar mensajes temporalmente. Estas estructuras son los ‘mailbox’, y cuando exhiben una
relación de muchos emisores y un receptor, se los llama ‘ports’. Los procesos pueden asociarse a
estos dinámica o estáticamente.
Formato de msg
Disciplina de cola
Deadlocks (interbloqueo, bloqueo mutuo o abrazo
mortal)
Entonces se podría hablar de Deadlock como el estado permanente de bloqueo de un conjunto
de procesos que están compitiendo por recursos del sistema o se comunican entre ellos bajo dos
situaciones:
Ante la petición de recursos: si un proceso solicita un recurso que no está disponible éste queda
esperando. Si todos los procesos quedan esperando por un recurso que tiene asignado otro
proceso
del conjunto y que también esta a la espera de otro recurso, se produce Deadlock.
Ante la comunicación entre procesos: cuando cada proceso de un conjunto espera por un
mensaje de otro miembro del grupo, y no existe un mensaje en tránsito, entonces ocurre un
Deadlock.
Recursos reutilizables
Un recurso reutilizable es aquel que puede ser usado por un proceso y no se agota con el uso.
Recursos consumibles
Un recurso consumible es aquel que puede ser creado (producido) y destruido (consumido).
Las condiciones para el Deadlock


Exclusión Mutua
Hold and wait: un proceso retiene los recursos que se le asignaron mientras
espera por los que le faltan asignar
 No – expropiación: a un proceso no se le quitan sus recursos, se debe esperara a
que los libere.
 Espera circular: existe una cadena cerrada de procesos, donde c/u tiene al menos
un recurso y espera por al menos un recurso del siguiente proceso en la cadena.
(esta última condición es una potencial consecuencia de las otras tres)
Estrategias para tratar DEADLOCK
Ignorarlo
Prevención del Deadlock
Consiste en evitar alguna de las cuatro condiciones para el deadlock.

Exclusión Mutua: esta condición es una característica proveída por el sistema
operativo, que rara vez se elige deshabilitar.
 Hold and wait: se exige al proceso que pida todos sus recursos de una sola vez y
no comenzara a correr hasta que se le puedan asignar todos simultáneamente. Esta
técnica es muy ineficiente.
 No – expropiación: se puede prevenir de varias maneras. Una es hacer que un
proceso al que se le niega un recurso, libera todos los que ya tiene, y más adelante
vuelve a pedirlos. Otra es que si un proceso pide un recurso que es de otro, es este
ultimo el que libera sus recursos.
 Espera circular: se previene imponiendo un orden lineal para pedir
recursos(según los que ya se tienen asignados). Ejemplo: supongamos que se
decide que no se puede pedir cinta hasta que se tenga disco(sí se necesita).
Entonces tenemos un proceso que tiene disco y pide cinta, y otro que tiene cinta y
pide disco, provocando una espera circular. El caso del ultimo es imposible
porque el disco debe pedirse antes que la cinta
Detectar y recuperar
Evitación del Deadlock
A diferencia de la prevención, permite las primeras tres condiciones necesarias para el deadlock, y
se realizan juiciosas decisiones para evitar llegar al punto del deadlock.
Estas decisiones se toman en tiempo de ejecución y es necesario saber las peticiones de recursos
futuras de los procesos.
Descargar