Sebastián Sánchez Prieto

Slides:



Advertisements
Presentaciones similares
GESTION DE PROCESOS Procesos y tareas
Advertisements

Administración de procesos Lic. Orlando Zamora Rdz.
También conocido como Diseño Lógico Rodrigo Salvatierra Alberú.
I11 A y i 11 B Séptimo semestre.
III - Gestión de memoria
Búsqueda con retroceso
I.T.E.S.R.C. Romina Tamez Andrea Martínez Ma. De Lourdes Solís
TEMA 8: DIAGRAMAS EN UML.
LÓGICA DE PROGRAMACIÓN
MATRIZ DE CHEQUEO DE PARIDAD
Unidad 6 Interbloqueos (Dead Lock)
Si usted no conoce desde que punto en la ciudad un cliente solicita sus servicios ni en que momento, no puede generar a priori las rutas para sus vehículos,
KRIGING.
Contenido Introducción Tipos de recursos Modelo del sistema
Representación en espacio de estado
Inter bloqueo DeadLock.
Ecuaciones diferenciales de 1er orden :
Johanna Lizeth Rodríguez Lorena Fda. Chávarro Ramos
MODELOS DE ECUACIONES SIMULTÁNEAS
Desarrollo Orientado a Objetos con UML
Deadlocks Caracterización de deadlock Métodos para manejar deadlock Prevenir, Predecir, detección Recuperación de deadlock Emely Arráiz Ene-Mar 08.
2- SIMPLEX.
Introducción a los SSOO Sebastián Sánchez Prieto.
HILOS Y COMUNICACIÓN ENTRE PROCESOS
Concurrencia: interbloqueo e inanición
Tema 10: Gestión de Memoria
Teoria de grafos.-clase 4
Deadlocks Abrazo Mortal Bloqueos mutuos
Unidad 4 Interbloqueos (Dead Lock)
Conceptos generales: Concurrencia: Existencia simultánea de varios procesos en ejecución. IMPORTANTE: EXISTENCIA SIMULTÁNEA NO IMPLICA EJECUCIÓN SIMULTÁNEA.
Una Carencia de Punto muerto de Causas de Sincronización de Proceso El punto muerto (" terriblemente el abrazo ") - un enredo por todo el sistema de recurso.
UNIDAD 3 Conceptos de Sistemas Operativos.
Unidad III Administración de procesos
Actividad 6. Requisitos del software, referente a la estructura y base de datos. M.C. Juan Carlos Olivares Rojas Syllabus May,
INSTITUTO TECNOLOGICO SUPERIOR DE TAMAZUNCHALE INTEGRANTES: MAXIMO HERNANDEZ BAUTISTA CLAUDIA JIMENEZ PROCOPIO ANA LUZ RODRIGUEZ JONGUITUD LEONEL AQUINO.
Asignación de Espacio No Contiguo
PROGRAMACIÓN DE RECURSOS.
Material de apoyo Unidad 4 Estructura de datos
EL SISTEMA OPERATIVO.
Planificación de Procesos
Planificación y Gestión de procesos
 El acceso concurrente a datos compartidos puede dar pie a inconsistencia de datos  Mantener la consistencia de los datos requiere mecanismos para asegurar.
Gestión de Procesos Gestión de Procesos Procesos Planificación CPU
Capítulo 7 Gestión de memoria.
Gestión de procesos Sistemas Operativos Edwin Morales
El interbloqueo Situación en la que se encuentran un conjunto de procesos, (al menos dos), tal que cada proceso del conjunto espera la ocurrencia de un.
Teoría de Sistemas Operativos Sincronización Procesos Departamento de Electrónica 2º Semestre, 2003 Gabriel Astudillo Muñoz
Modelos Cuantitativos
Administrador de procesos
Sabemos reconocerlas, y calcularlas como soluciones de sistemas de ecuaciones, o de desigualdades Buscamos métodos de cálculo generales y eficientes Problemas.
Teoría de Sistemas Operativos Departamento de Electrónica 2º Semestre, 2002 Gabriel Astudillo Muñoz
SISTEMAS OPERATIVOS DEADLOCK ABRAZO MORTAL BLOQUEO MUTUO.
ABRAZO MORTAL - DEADLOCK - INTERBLOQUEO
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
Estructura de los Sistemas Operativos
Teoría de Sistemas Operativos Sincronización Procesos
UNIDAD 3 C ONCEPTOS DE S ISTEMAS O PERATIVOS. El ordenador es un sistema programable formado por un conjunto de elementos hardware que necesitan instrucciones.
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
NORMAS INTERNACIONALES DE AUDITORIA (200)
La estrategia de prevención del interbloqueo consiste, a grandes rasgos, en diseñar un sistema de manera que esté excluida, a priori, la posibilidad de.
Proceso para proveer mantenimiento preventivo al hardware
INTERRUPCIONES – ABRAZO MORTAL
Preocupaciones del Analista Programador & Usuarios
MEMORIA DINÁMICA.
Planificación de uso del procesador Rina Arauz. Planificación de CPU 2 UNAN-Leon La ejecución de un trabajo se compone de secuencias de procesador y de.
SOFTWARE DE COMPUTADORAS
Gestión de Memoria – Parte 2
Planificación de CPU Conceptos Básicos Criterios de Planificación Algoritmos de Planificación Planificación con Múltiples Procesadores Planificación Real-Time.
Bloqueos Mutuos Modelo del Sistema Caracterización de Deadlock Métodos de manejo de Deadlocks Prevención de Deadlocks Evitación de Deadlocks Detección.
Sistemas Operativos Tema 9: Interbloqueo.
Transcripción de la presentación:

Sebastián Sánchez Prieto Abrazo mortal Sebastián Sánchez Prieto

Planteamiento del problema Deriva del hecho de que en un sistema multiprogramado los procesos compiten por un conjunto limitado de recursos Se puede, en estas condiciones, producir la situación siguiente: P0 espera por un recurso asignado a P1, el cual espera por un recurso asignado a P2 que espera por un recurso asignado a P0 Como consecuencia, ningún proceso evoluciona Se dice que están en abrazo mortal o interbloqueados

Forma de utilizar un recurso Se pide open, malloc, P, etc. Se usa Se devuelve close, free, V, etc.

Tipos de recursos Recursos apropiables (memoria): se pueden tomar del proceso que los posee sin producir daños Recursos no apropiables (impresora): sólo pueden ser utilizados por un proceso a la vez Los abrazos mortales pueden darse tanto con recursos hardware (impresora) como software (semáforos) Cada recurso puede tener varios ejemplares Un conjunto de procesos se bloquea si cada proceso del conjunto espera un evento que sólo puede ser provocado por otro proceso del conjunto

Condiciones Exclusión mutua: los recursos implicados deben ser no compartibles Posesión y espera: deben existir procesos que tienen asignados recursos y están esperando por otros recursos asignados a otros procesos No apropiación: los recursos son liberados voluntariamente. No hay requisa Espera circular: P0 espera por P1, P1 por P2, P2 por P3, ..., Pn-1 por Pn y Pn por P0 Si no se producen las cuatro condiciones de forma simultánea, no existe el abrazo mortal

Grafo de asignación de recursos Sirven para describir el abrazo mortal Consta de un conjunto de vértices (V) y un conjunto de flechas (F) Dos tipos de vértices: Procesos P = {P1, P2, ... Pn} y Recursos R = {R1, R2, ..., Rm} Dos tipos de flechas: De asignación Rj  Pi De petición Pi  Rj

Ejemplo P1 R3 R1 R2 P2 P3

Ejemplo P1 R1 R2 P2 Si en el grafo no existen ciclos se puede demostrar que no existe abrazo mortal, pero si existen ciclos, éste puede aparecer

Cómo prevenir el abrazo mortal Solución: eliminar una cualesquiera de las cuatro condiciones necesarias para que éste se produzca Exclusión mutua En general no podremos modificar este aspecto Razón: existen recursos intrínsecamente no compartibles

Cómo prevenir el abrazo mortal Posesión y espera Métodos: Los procesos al comienzo de su ejecución solicitan todos los recursos que van a necesitar Conceder recursos sólo a los procesos que no poseen ninguno. Antes de pedir un recurso tiene que liberar los que en este momento posee Problemas: baja utilización de los recursos y posible inanición

Cómo prevenir el abrazo mortal No apropiación Método: si un proceso solicita un recurso, y éste no está disponible, nos apropiamos de todos los recursos que posee Problema: existen recursos que no pueden ser asignados y retirados cuando nos de la gana

Cómo prevenir el abrazo mortal Espera circular Método: asignamos a cada recurso un número natural N que lo diferencie del resto Si obligamos a que los procesos soliciten los recursos en orden creciente acorde a sus números, nunca puede producirse el abrazo mortal

Métodos alternativos Los métodos que describiremos van a ser más efectivos, a costa de mantener mayor información En función de esa información, podremos proponer diversos algoritmos para evitar el bloqueo Los algoritmos más sencillos y efectivos se basan en conocer la cantidad máxima de recursos que va a necesitar cada proceso En función de esa cantidad máxima de recursos y del estado actual de asignación, el algoritmo determinará si las nuevas solicitudes son satisfechas o no, con objeto de evitar los estados inseguros

Manejo de abrazo mortal ¿Qué se puede hacer con el abrazo mortal? Preasignación de recursos Asignación con restricciones Detección y recuperación Ignorarlo La última alternativa es la más simple y la menos efectiva, pero quizás sea la más ampliamente utilizada

Preasignación de recursos Cuando un proceso comienza determina los recursos que va a usar Cuando todos estén disponibles, comienza Utilizado en el sistema OS/360 Inconvenientes: Es necesario conocer a priori los recursos que se van a emplear Puede que algún recurso solicitado no se emplee Se obtiene una baja utilización de los mismos

Asignación con restricciones El usuario está obligado a establecer a priori qué recursos va a utilizar Al contrario que en el caso anterior, el proceso comienza su ejecución y se le van asignando recursos dinámicamente Antes de asignar los recursos se comprueba que el sistema permanece en un estado seguro ¿Qué es un estado seguro?

Estado seguro Se dice que un estado es seguro si el sistema puede asignar, en algún orden, recursos a los procesos evitando el abrazo mortal Proceso Necesidad máxima Asignados P1 9 3 P2 7 4 P3 3 1 Si inicialmente tenemos 8 ejemplares del recurso la secuencia <P3, P2, P1> permite la finalización de los tres procesos

Ejemplos Caso 1: 1 recurso libre. ¿Estado seguro? Proceso Necesidad máxima Asignados P1 10 3 P2 9 4 P3 5 2 P4 3 2 Caso 2: 2 recursos libres. ¿Estado seguro? Proceso Necesidad máxima Asignados P1 10 3 P2 9 4 P3 4 2 P4 7 2

Estados seguro e inseguro Los estados inseguros no siempre conducen a un abrazo mortal Un estado con un abrazo mortal es un estado inseguro Si los estados son seguros el sistema operativo evita los abrazos mortales Estado seguro Estado inseguro Abrazo mortal

Algoritmo del banquero Se denomina así porque puede utilizarse en un banco para asegurar que el banco siempre disponga del suficiente dinero efectivo para satisfacer la necesidad de todos sus clientes Cuando un proceso inicia su sesión, debe declarar la máxima cantidad de recursos que va a necesitar Si esta cantidad es mayor que la cantidad disponible, el proceso no se puede ejecutar A partir de este punto, el sistema asignará los recursos, manteniéndose siempre en un estado seguro

Estructuras de datos necesarias Disponibles: es un vector de longitud m que indica el número de recursos disponibles de cada tipo Si Disponible[i]=k, quiere decir que hay k ejemplares del recurso Ri disponibles Máximo: es una matriz de n x m elementos que define la máxima demanda de recursos de cada proceso Si Máximo[i,j]=k, Entonces el proceso Pi puede requerir hasta un máximo de k ejemplares del recurso Rj

Estructuras de datos necesarias Asignados: es una matriz de n x m elementos que define el número de ejemplares de cada recurso que están asignadas en ese momento Si Asignados[i,j]=k quiere decir que el proceso Pi tiene asignados k ejemplares del recurso Rj Necesitados: es una matriz de n x m elementos que indica el número de ejemplares necesitados por cada uno de los procesos en un instante determinado Si Necesitados[i,j]=k, entonces el proceso Pi necesita k ejemplares más del recurso Rj

Notación Obsérvese que: Necesitados[i,j] = Max[i,j] - Asignados[i,j] Si X e Y son dos vectores de longitud n, entonces X<=Y si y sólo si X[i]<=Y[i] para todo i Cada columna de las matrices Necesitados y Asignados representa la situación de cada uno de los procesos Así Necesitadosi indica todas las instancias de cada recurso necesitadas por el proceso Pi

Algoritmo del banquero 1. Si Pedidosi <= Necesitadosi ir al paso 2 si no error 2. Si Pedidosi <= Disponiblesi ir al paso 3 si no el proceso debe esperar hasta que los recursos estén disponibles 3. Disponibles = Disponibles - Pedidosi Asignadosi = Disponiblesi + Pedidosi Necesitadosi = Necesitadosi - Pedidosi 4. Si el estado resultante es seguro al proceso se le asignan los recursos, si no es seguro el proceso debe esperar y se restaura el estado de los recursos

Algoritmo de seguridad Sean DisponiblesAux y Terminado dos vectores de longitudes m y n respectivamente 1. Inicialmente DisponiblesAux=Disponible y Terminado[i]=FALSE para todo i 2. Encontrar un i que cumpla las condiciones: a. Terminado[i]=FALSE b. Necesitadosi<=DisponiblesAux Si no existe tal i, pasar al paso 4. 3. DisponiblesAux=DisponiblesAux+Asignadosi Terminado[i]=TRUE Ir al paso 2 4. Si Terminado[i]=TRUE para todo i, entonces el sistema está en estado seguro

Algoritmo de petición de recursos Sea Peticioni el vector de peticiones asignado a Pi Si Peticioni[j]=k, entonces Pi quiere k ejemplares de Rj Cuando llega una nueva petición de recursos por parte de Pi: 1. Si Peticioni <= Necesitadosi, ir al paso 2. Si no, error, superado el máximo de peticiones de Pi. 2. Si Peticioni <= Disponible, ir al paso 3. Si no, Pi debe esperar hasta que se liberen recursos. 3. Realizar lo siguiente: Disponible=Disponible-Peticioni Asignados=Asignados+Peticioni Necesitados=Necesitados-Peticioni Si el estado es seguro, se asignan recursos a Pi, si no Pi espera

Ejemplo El recurso A tiene 10 ej., B tiene 5 y C tiene 7 ¿Estado seguro? Proceso Asignados Máximo Disponible Necesitados A B C A B C A B C A B C P0 0 1 0 7 5 3 3 3 2 7 4 3 P1 2 0 0 3 2 2 1 2 2 P2 3 0 2 9 0 2 6 0 0 P3 2 1 1 2 2 2 0 1 1 P4 0 0 2 4 3 3 4 3 1 SÍ: La secuencia <P1, P3, P4, P2, P0> satisface el criterio o algoritmo de seguridad

Ejemplo Consideremos la petición: Peticion1=(1, 0, 2) con ello tenemos el siguiente nuevo estado: Proceso Asignados Máximo Disponible Necesitados A B C A B C A B C A B C P0 0 1 0 7 5 3 2 3 0 7 4 3 P1 3 0 2 3 2 2 0 2 0 P2 3 0 2 9 0 2 6 0 0 P3 2 1 1 2 2 2 0 1 1 P4 0 0 2 4 3 3 4 3 1 ¿Estado seguro? SÍ: Secuencia <P1, P3, P4, P0, P2> ¿Qué ocurriría si ahora Peticion4=(3,3,0)? ¿Y con Peticion0=(0,2,0)?

Detección del abrazo mortal Si un sistema no emplea una prevención de los abrazos mortales puede ocurrir un abrazo. Entonces el sistema debe proporcionar: Un algoritmo para examinar cada estado del sistema Un algoritmo para recuperarse de los abrazos Un algoritmo de detección y recuperación necesita mantener cierta información Además existen ciertas pérdidas cuando nos recuperamos de un abrazo (i. e. tiempo que los procesos no se ejecutan)

Detección mediante grafo de espera Sólo válido cuando el # de ejemplares x recurso = 1 Generación del grafo de espera R3 P4 P1 P4 P1 R2 R1 R4 P2 P2 P3 P3 Si en el grafo de espera no hay bucles -> no hay interbloqueo

Detección general Como algoritmo de detección se puede emplear una variante del algoritmo de seguridad visto anteriormente Estructuras de datos: Disponibles: es un vector de longitud m que indica el número de recursos disponibles Asignados: es una matriz de n x m elementos que define el número de ejemplares de cada recurso que están asignadas en ese momento Solicitados: es una matriz de n x m elementos que indica el número de ejemplares solicitados por cada proceso

Algoritmo 1. Inicialmente DisponiblesAux=Disponible. 2. Para cada proceso si Asignadosi!=0 Terminado[i]=FALSE, en otro caso Terminado[i]=TRUE 3. Encontrar un i que cumpla las condiciones: a. Terminado[i]=FALSE b. Solicitadosi<=DisponiblesAux Si no existe tal i, pasar al paso 5 4. DisponiblesAux=DisponiblesAux+Asignadosi Terminado[i]=TRUE Ir al paso 3 5. Si al terminar tenemos algún proceso con Terminado[i]=FALSE, estos procesos se encontrarán en abrazo mortal

Recuperación del abrazo mortal Avisar al operador y dejar que decida Terminación de procesos Abortar todos los proceso implicados Ir abortando procesos uno a uno hasta que eliminemos el abrazo mortal Se abortan aquellos procesos cuya terminación conlleva menor coste Abortar un proceso no es fácil ->p.e. se pueden producir errores si se está guardando un fichero Apropiación de recursos

Criterios para elegir víctimas Prioridad de los procesos Cuánto tiempo se ha ejecutado y cuánto le queda para terminar Cuántos y qué tipo de recursos ha usado Cuántos recursos necesita para terminar Cuántos procesos deben ser terminados Tipo de proceso: interactivo o bach