hilos y procesos

20
Universidad Nacional Experimental de Guayana Vicerrectorado Académico Proyecto de Carrera: Ingeniería Informática Asignatura: Sistema de Operación Sección 1 Profesor: Integrantes: Caniumilla Andrés Luces Miguel C.I: 19.419.235 Ciudad Guayana, Octubre 2014

Upload: miguel-luces

Post on 28-Sep-2015

238 views

Category:

Documents


1 download

DESCRIPTION

teoria y practica de hilos

TRANSCRIPT

  • Universidad Nacional Experimental de Guayana

    Vicerrectorado Acadmico

    Proyecto de Carrera: Ingeniera Informtica

    Asignatura: Sistema de Operacin

    Seccin 1

    Profesor: Integrantes:

    Caniumilla Andrs Luces Miguel C.I: 19.419.235

    Ciudad Guayana, Octubre 2014

  • 2

    INDICE

    HILOS ......................................................................................................................................................................3

    Definicin ...................................................................................................................................................3

    Caractersticas .........................................................................................................................................3

    Diferencia entre Hilos y Procesos .......................................................................................................3

    Estados de un Hilo ..................................................................................................................................4

    Ventajas ......................................................................................................................................................4

    Desventajas ...............................................................................................................................................5

    Sincronizacin de Hilos .........................................................................................................................5

    Multi Hilos ..................................................................................................................................................6

    Ejemplo a nivel de cdigo .....................................................................................................................7

    INANICIN O INTERBLOQUEO ........................................................................................................................9

    Interbloqueo ..............................................................................................................................................9

    Recursos Reutilizables ..........................................................................................................................9

    Recursos Consumibles ..........................................................................................................................9

    Ejemplos Grficos ...................................................................................................................................9

    Grafos de Asignacin de Recursos ................................................................................................. 10

    Condiciones para el Interbloqueo .................................................................................................... 10

    Posibilidad de Interbloqueo ............................................................................................................... 11

    Existencia de Interbloqueo ................................................................................................................ 11

    Prevencin del Interbloqueo ............................................................................................................. 12

    Prediccin del Interbloqueo ............................................................................................................... 13

    Algoritmo del Banquero ..................................................................................................................... 13

    Ejemplos ............................................................................................................................................... 14

    Recuperacin del Interbloqueo ......................................................................................................... 16

    Mecanismos para evitar el Interbloqueo ........................................................................................ 17

    Estados Seguros e Inseguros ........................................................................................................... 17

    Ejemplo ................................................................................................................................................. 18

    Ventajas y Desventajas de las diferentes estrategias ................................................................ 19

  • 3

    HILOS

    Definicin

    Un hilo o proceso ligero es una unidad bsica de ejecucin, con su propio contador de

    programa, registros de CPU y pila (stack). Es importante resaltar que los hilos

    comparten dentro de una misma aplicacin todo lo que se refiere a cdigo y datos

    adems de los recursos del Sistema Operativo como por ejemplo ficheros, E/S, entre

    otros.

    Tambin puede ser definido desde el punto de vista de programacin como una

    funcin cuya ejecucin se puede lanzar en paralelo con otras.

    Caractersticas

    No existe forma de predecir el orden de ejecucin o el orden de culminacin de

    varios hilos.

    Los hilos son invisibles fuera de los lmites del programa o proceso que los

    contiene.

    Los hilos tienen su propia identidad, pila, PC, registros, prioridad.

    Cada hilo es independiente de otro hilo.

    No obstante, ciertas acciones que un hilo ejecuta afectaran a otros hilos dentro del

    mismo proceso. Por ejemplo:

    Si un hilo abre un archivo, el archivo estar abierto para el resto de los threads

    dentro del mismo proceso.

    Si un hilo termina usando la llamada al sistema exit(), esto provocara que todos

    los threads dentro del mismo proceso terminen.

    Diferencia entre Hilos y Procesos

    Los hilos operan, en muchos sentidos, igual que los procesos:

    Pueden estar en uno o varios estados: listo, bloqueado, en ejecucin o terminado.

    Tambin comparten la CPU.

    Solo hay un hilo activo (en ejecucin) en un instante dado.

    Un hilo dentro de un proceso se ejecuta secuencialmente.

    Cada hilo tiene su propia pila y contador de programa.

    Pueden crear sus propios hilos hijos.

  • 4

    Diferencia con los procesos:

    Los hilos se distinguen de los tradicionales procesos en que los procesos son

    generalmente independientes, llevan bastante informacin de estados, e interactan

    slo a travs de mecanismos de comunicacin dados por el sistema. Por otra parte,

    muchos hilos generalmente comparten otros recursos de forma directa. En muchos de

    los sistemas operativos que dan facilidades a los hilos, es ms rpido cambiar de un

    hilo a otro dentro del mismo proceso, que cambiar de un proceso a otro. Este

    fenmeno se debe a que los hilos comparten datos y espacios de direcciones,

    mientras que los procesos, al ser independientes, no lo hacen. 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), en este caso pasar del estado de ejecucin

    (running) al estado de espera (waiting) y colocar el nuevo proceso en ejecucin. En los

    hilos, como pertenecen a un mismo proceso, al realizar un cambio de hilo el tiempo

    perdido es casi despreciable.

    Estados de un Hilo

    Los principales estados de un hilo son: ejecucin, preparado y bloqueado y hay cuatro

    operaciones bsicas relacionadas con el cambio de estado delos hilos;

    Creacin: En general, cuando se crea un nuevo proceso se crea tambin un hilo

    para ese proceso. Posteriormente, ese hilo puede crear nuevos hilos dndoles un

    puntero de instruccin y algunos argumentos. Ese hilo se colocara en la cola de

    preparados.

    Bloqueo: Cuando un hilo debe esperar por un suceso, se le bloquea guardando sus

    registros. As el procesador pasara a ejecutar otro hilo preparado.

    Desbloqueo: Cuando se produce el suceso por el que un hilo se bloque pasa a la

    cola de listos.

    Terminacin: Cuando un hilo finaliza, se liberan su contexto y sus pilas.

    Nota: Un punto importante es la posibilidad de que el bloqueo de un hilo lleve al

    bloqueo de todo el proceso. Es decir, que el bloqueo de un hilo lleve al bloqueo de

    todos los hilos que lo componen, aun cuando el proceso esta preparado.

    Ventajas

    Los mayores beneficios de los hilos provienen de las consecuencias del rendimiento:

  • 5

    Lleva mucho menos tiempo crear un hilo en un proceso existente, que crear un

    proceso totalmente nuevo. La creacin de un hilo puede ser hasta diez veces ms

    rpida que la creacin de un proceso en Unix (Linux).

    Lleva menos tiempo finalizar un hilo que un proceso.

    Lleva menos tiempo el cambio de hilo que el cambio de proceso.

    Debido a que los threads son parte del mismo proceso, el compartir datos entre

    ellos es muy fcil; todos los hilos tienen acceso a los datos globales. No se

    necesitan llamadas al sistema para su comunicacin.

    Mayor eficiencia si se tiene un multiprocesador (y se soportan hilos a nivel del

    kernel). Paralelismo.

    Mayor concurrencia aun si se desconocen los hilos a nivel del kernel (si se logra, a

    travs de la librera, que al bloquearse un hilo, pueda ejecutarse otro dentro del

    mismo proceso).

    Los programas que realizan diversas tareas o que tienen varias fuentes y destinos

    de E/S (servidor) se pueden disear e implementar fcilmente usando hilos.

    Desventajas

    No existe proteccin entre hilos: un error en un hilo puede estropear la pila de otro.

    El hecho de que varios hilos compartan el mismo espacio de memoria puede

    causar dos problemas;

    Interferencias

    Inconsistencias

    Los hilos se bloquean ms fcilmente que un proceso.

    No todos los sistemas reconocen la existencia de hilos.

    Se requiere de mayor espacio en el ncleo para las tablas y la pila de los hilos

    Todas las llamadas al sistema las maneja el ncleo y por lo tanto tiene un mayor

    costo para l.

    Sincronizacin de Hilos

    Imaginemos un determinado proceso que manipule una zona de datos (para escritura

    y/o lectura), y que dicho proceso lo podemos dividir en pequeas tareas o hilos de tal

    manera que conservamos la misma zona de datos para todos los hilos; esta divisin

    del proceso, muy probablemente acelerara la ejecucin de nuestro proceso original.

    El compartir datos de la memoria permite eliminar la comunicacin, que en ocasiones

    puede resultar muy costosa en tiempo; sin embargo, aparecen otros problemas tales

    como la sincronizacin de acceso a los datos en memoria.

  • 6

    El permitir que los hilos accedan a modificar datos en memoria sin ninguna restriccin,

    puede dar lugar a resultados no consistentes o incoherencia, por lo que se obtienen

    resultados no deseados. Por lo tanto, es necesario implementar mecanismos de

    sincronizacin con ayuda de candados y semforos.

    Candados y semforos

    Como se ha mencionado, en ocasiones los hilos (o procesos) comparten informacin

    al acceder a bloques de memoria compartidos. Cuando el acceso se realiza para

    lectura, cada uno de los procesos podr ir a la memoria y recuperar el dato sin el

    peligro de que pueda encontrar inconsistencias, pero si uno o ms procesos acceden

    a la memoria para modificar un determinado dato, entonces se pueden generar

    problemas de inconsistencia e incoherencia.

    La solucin a este problema es implementar mecanismos de sincronizacin, el

    mecanismo ms sencillo se conoce como semforo binario o simplemente como

    candado. La idea del candado es la siguiente: cuando un proceso o hilo intenta

    modificar un dato compartido, esta accin la deber realizar en modo exclusivo, de tal

    manera que ningn otro proceso pueda modificar o leer el mismo dato. Las lecturas

    pueden hacerse de forma simultnea, pero no as las escrituras, las cuales debern

    hacerse en modo exclusivo; esto ltimo se conoce como exclusin mutua. A la seccin

    de cdigo que cada uno de los procesos posee para modificar ese dato compartido, se

    le conoce como seccin critica.

    Multi Hilos

    Se define como la capacidad de un Sistema Operativo para mantener varios hilos de

    ejecucin dentro de un mismo proceso. Cada hilo dentro del programa es como un

    mini-programa con exactamente las mismas propiedades que se mencionaron

    previamente.

    Ejemplo Visual de Un hilo frente a Multihilos

  • 7

    Ejemplo a nivel de cdigo

    /* Programa de ejemplo de threads.

    *

    * Un nico contador y dos threads para modificarlo. Uno lo incrementa y pone

    * su valor en pantalla precedido de la palabra "Padre". El otro lo

    * decrementa y ponse su valor en pantalla precedido de la palabra "Hilo".

    * Vemos en pantalla como el contador se incrementa y se decrementa

    * rpidamente.

    */

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    #include

    /* Prototipo de la funcin que va a ejecutar el thread hijo */

    void *funcionThread (void *parametro);

    /* Contador, global para que sea visible desde el main y desde funcionThread */

    int contador = 0;

    /*

    * Principal

    * Lanza un thread para la funcin funcionThread.

    * Despus de comprobar el posible error, se mete en un bucle infinito

    * incrementando y mostrando el contador.

    */

    int main()

    {

    /* Identificador del thread hijo */

    pthread_t idHilo;

    /* error devuelto por la funcin de creacin del thread */

    int error;

    /* Creamos el thread.

    * En idHilo nos devuelve un identificador para el nuevo thread,

    * Pasamos atributos del nuevo thread NULL para que los coja por defecto

    * Pasamos la funcin que se ejecutar en el nuevo hilo

    * Pasamos NULL como parmetro para esa funcin. */

    error = pthread_create (&idHilo, NULL, funcionThread, NULL);

    /* Comprobamos el error al arrancar el thread */

    if (error != 0)

    {

    perror ("No puedo crear thread");

    exit (-1);

    }

    /* Bucle infinito para incrementar el contador y mostrarlo en pantalla */

    while (1)

    {

    contador++;

    printf ("Padre : %d\n", contador);

    sleep(1);

    }

    return 0;

    }

    /* Funcion que se ejecuta en el thread hijo.*/

    void *funcionThread (void *parametro)

    {

    /* Bucle infinito para decrementar contador y mostrarlo en pantalla. */

    while (1)

    {

    contador--;

    printf ("Hilo : %d\n", contador);

    sleep(1);

    }

    }

  • 8

    Pantallazo del cdigo Ejecutado

  • 9

    INANICIN O INTERBLOQUEO

    Interbloqueo

    El interbloqueo es el bloqueo de un conjunto de procesos que compiten por los

    recursos del sistema o bien se comunican unos con otros. El bloqueo es permanente

    hasta que el sistema operativo realice alguna operacin extraordinaria, como puede

    ser matar uno o ms procesos u obligar a uno o ms procesos a retroceder en la

    ejecucin.

    Recursos Reutilizables

    Un recurso reutilizable es aqul que puede ser usado con seguridad por un proceso y

    no se agota con el uso. Los procesos obtienen unidades de recursos que liberan

    posteriormente para que otros procesos las reutilicen. Como ejemplos de recursos

    reutilizables se tienen los procesadores, canales de E/S, memoria principal y

    secundaria, dispositivos y estructuras de datos tales como archivos, bases de datos y

    semforos.

    Recursos Consumibles

    Un recurso consumible es aqul que puede ser creado (producido) y destruido

    (consumido). Normalmente, no hay lmite en el nmero de recursos consumibles de un

    tipo en particular. Un proceso productor que no est bloqueado puede liberar cualquier

    nmero de recursos consumibles. Cuando un proceso adquiere un recurso, ste deja

    de existir. Como ejemplos de recursos consumibles estn las interrupciones, seales,

    mensajes, e informacin en buffers de E/S.

    Ejemplos Grficos

    Ilustracin del Interbloqueo

  • 10

    Grafos de Asignacin de Recursos

    Sirve para representar el estado de un sistema de asignacin de recursos. Muestra

    esta informacin:

    Cuantos ejemplares hay de cada tipo de recurso

    Los procesos activos en el sistema

    Que recursos estn asignados y a que proceso

    Que procesos estn bloqueados y por cuales recursos

    Grafo dirigido que representa el estado del sistema en lo que se refiere a recursos y

    procesos.

    Condiciones para el Interbloqueo

    Deben darse tres condiciones para que pueda producirse un interbloqueo:

    1. Exclusin Mutua: Solo un proceso puede usar un recurso simultneamente.

    Ejemplos de grafos de asignacin de recursos

  • 11

    2. Retencin y Esperar: Un proceso puede tener unos recursos asignados

    mientras espera que se le asignen otros.

    3. No Apropiacin: Ningn proceso puede ser forzado a abandonar un recurso

    que retenga. En la mayora de los casos, estas condiciones son bastante

    necesarias. Por ejemplo la exclusin mutua hace falta para asegurar la

    consistencia de resultados y la integridad de la base de datos. De forma similar,

    la expulsin o apropiacin no se puede aplicar arbitrariamente y, cuando se

    encuentran involucrados recursos de datos especialmente, debe estar

    acompaado de un mecanismo de recuperacin y reanudacin, que devuelve a

    un proceso y a sus recursos a un estado previo adecuado, desde el que el

    proceso pueda finalmente repetir sus acciones.

    Puede existir interbloqueo con estas tres condiciones, pero puede no existir con

    solo estas tres condiciones. Para que se produzca interbloqueo, se necesita una

    cuarta condicin:

    4. Circulo vicioso de espera: Existe una cadena cerrada de procesos, cada uno de

    los cuales retiene, al menos, un recurso que necesita el siguiente proceso de la

    cadena.

    Las tres primeras condiciones son necesarias, pero no suficientes, para que exista

    interbloqueo. La cuarta condicin es, en realidad, una consecuencia potencial de

    las tres primeras. Es decir, dado que se produces las tres primeras condiciones,

    puede ocurrir una secuencia de eventos que desemboque en un crculo vicioso de

    espera irresoluble. Un crculo de espera irresoluble es, de hecho, la definicin de

    interbloqueo. El crculo de espera de la condicin 4 es irresoluble porque se

    mantienen las tres primeras condiciones. Es decir, las cuatro condiciones en

    conjunto constituyen una condicin necesaria y suficiente para el interbloqueo.

    Posibilidad de Interbloqueo

    Exclusin mutua

    Sin expropiacin

    Retencin y espera

    Existencia de Interbloqueo

    Exclusin Mutua

    Sin expropiacin

    Retencin y espera

    Espera circular

  • 12

    Prevencin del Interbloqueo

    La estrategia de prevencin del interbloqueo consiste, a grandes rasgos, en disear

    un sistema de manera que est excluida, a priori, la posibilidad de interbloqueo. Los

    mtodos para prevenir el interbloqueo son de dos tipos. Los mtodos indirectos

    consisten en impedir la aparicin de alguna de las tres condiciones necesarias, antes

    mencionadas (condiciones 1 a 3). Los mtodos directos consisten en evitar la

    aparicin del crculo vicioso de espera (condicin 4). Se examinarn a continuacin las

    tcnicas relacionadas con cada una de las cuatro condiciones.

    Exclusin Mutua

    En general, la primera de las cuatro condiciones no puede anularse. Si el acceso a un

    recurso necesita exclusin mutua, el sistema operativo debe soportar la exclusin

    mutua. Algunos recursos, como los archivos, pueden permitir varios accesos para

    lectura, pero slo accesos exclusivos para escritura. Incluso en este caso, se puede

    producir interbloqueo si ms de un proceso necesita permiso de escritura.

    Retencin y Espera

    La condicin de retencin y espera puede prevenirse exigiendo que todos los

    procesos soliciten todos los recursos que necesiten a un mismo tiempo y bloqueando

    el proceso hasta que todos los recursos puedan concederse simultneamente. Esta

    solucin resulta ineficiente por dos factores. En primer lugar, un proceso puede estar

    suspendido durante mucho tiempo, esperando que se concedan todas sus solicitudes

    de recursos, cuando de hecho podra haber avanzado con slo algunos de los

    recursos. Y en segundo lugar, los recursos asignados a un proceso pueden

    permanecer sin usarse durante periodos considerables, tiempo durante el cual se

    priva del acceso a otros procesos.

    No apropiacin

    La condicin de no apropiacin puede prevenirse de varias formas. Primero, si a un

    proceso que retiene ciertos recursos se le deniega una nueva solicitud, dicho proceso

    deber liberar sus recursos anteriores y solicitarlos de nuevo, cuando sea necesario,

    junto con el recurso adicional. Por otra parte, si un proceso solicita un recurso que

    actualmente est retenido por otro proceso, el sistema operativo puede expulsar al

    segundo proceso y exigirle que libere sus recursos. Este ltimo esquema evitar el

    interbloqueo slo si no hay dos procesos que posean la misma prioridad.

    Esta tcnica es prctica slo cuando se aplica a recursos cuyo estado puede salvarse

    y restaurarse ms tarde de una forma fcil, como es el caso de un procesador.

  • 13

    Circulo Vicioso de Espera

    La condicin del crculo vicioso de espera puede prevenirse definiendo una

    ordenacin lineal de los tipos de recursos. Si a un proceso se le han asignado

    recursos de tipo R, entonces slo podr realizar peticiones posteriores sobre los

    recursos de los tipos siguientes a R en la ordenacin.

    Para comprobar el funcionamiento de esta estrategia, se asocia un ndice a cada tipo

    de recurso. En tal caso, el recurso R, antecede a R, en la ordenacin si i < j. Entonces,

    supngase que dos procesos A y B se interbloquean, porque A ha adquirido R, y

    solicitado R y, mientras que B ha adquirido R; y solicitado R. Esta situacin es

    imposible porque implica que < j y j < i.

    Como en la retencin y espera, la prevencin del crculo vicioso de espera puede ser

    ineficiente, retardando procesos y denegando accesos a recursos innecesariamente.

    Prediccin del Interbloqueo

    Otra forma de resolver el problema del interbloqueo, que se diferencia sutilmente de la

    prevencin, es la prediccin de interbloqueo. En la prevencin de interbloqueo, se

    obligaba a las solicitudes de recursos a impedir que sucediera, por lo menos, alguna

    de las cuatro condiciones de interbloqueo. Esto se hace indirectamente, impidiendo la

    aparicin de una de las tres condiciones necesarias (exclusin mutua, retencin y

    espera, no apropiacin) o directamente, impidiendo la aparicin de un crculo vicioso

    de espera. Se llega as a un uso ineficiente de los recursos y una ejecucin ineficiente

    de los procesos. Con prediccin del interbloqueo, por otro lado, se pueden alcanzar

    las tres condiciones necesarias, pero se realizan elecciones acertadas para asegurar

    que nunca se llega al punto de interbloqueo. La prediccin, por tanto, permite ms

    concurrencia que la prevencin. Con prediccin del interbloqueo, se decide

    dinmicamente si la peticin actual de asignacin de un recurso podra, de

    concederse, llevar potencialmente a un interbloqueo. La prediccin del interbloqueo

    necesita, por tanto, conocer las peticiones futuras de recursos.

    Algoritmo del Banquero

    Llamado tambin negativa de asignacin de recursos, el algoritmo resuelve un

    problema planteado por Edsger Dijkstra.

    Existe un banco que tiene una reserva limitada de dinero a prestar y clientes con

    lnea de crdito. Un cliente pide dinero y no hay garanta de que haga reposiciones

    hasta que saque la cantidad mxima. El banco puede rechazar el prstamo si hay

    riesgo de que no tenga fondos para prestar a otros clientes.

  • 14

    Vindolo como Sistema Operativo, los clientes seran los procesos, el dinero a

    prestar los recursos y el banquero el Sistema Operativo

    Para este algoritmo es importante considerar los siguientes puntos:

    Estado: Es la asignacin actual de los recursos a los procesos.

    Matriz Demanda (o mximo necesario): Son las exigencias mximas de

    recursos para cada proceso.

    Matriz Asignacin: Son las asignaciones actuales de recursos para cada

    proceso.

    Vector disponible: Cantidad total de recursos sin asignar a los procesos.

    Estado seguro: Es un estado en el que existe al menos un orden en el que

    todos los procesos pueden ejecutar hasta el final sin generar interbloqueo.

    Cuando un proceso realiza una solicitud de recursos, se supone que se concede,

    se actualiza el estado y se toma una decisin. Si se llega a un estado seguro, se

    concede la peticin. Si se llega a uno inseguro, se rechaza y el proceso es

    bloqueado.

    Ejemplos

    A continuacin se presenta un ejemplo:

    Utilizando el algoritmo del banquero resuelva el siguiente problema, indicando el orden

    en que los procesos pasan a ser estados seguros evitando el problema del

    interbloqueo.

    Lista de procesos: P1-P3-P4-P0 P2

    A la derecha se tienen cinco procesos, cada uno tiene recursos de tipo A, B y C. En la

    primera columna de asignados est la cantidad de recursos que el proceso ha

    obtenido a lo largo de un tiempo; en la segunda columna de Mximo Necesario, estn

    los recursos que tiene que obtener de cada tipo para comenzar a ser ejecutado. Por

  • 15

    ejemplo, el P0 no ha obtenido ningn recurso del tipo A, slo 1 del tipo B y ninguno del

    tipo C, y necesita para ejecutarse haber conseguido 7 del A, 5 del B y 3 del C.

    En la ltima columna se tienen los recursos disponibles que da el sistema, los que se

    pueden utilizar con todos los procesos. Hay 3 del A, 3 del B y 2 del C.

    El algoritmo del banquero trata de asegurar qu proceso tiene un estado seguro es

    decir, se requiere alcanzar el mximo requerido entre los que estn en Asignados y

    los que se encuentren en Disponibles.

    Ejemplo: El proceso 0 no est en estado seguro. Si se suman Asignados +

    Disponibles para cada uno de los recursos A, B y C, realmente no se alcanzan los

    Mximos Requeridos.

    Entonces se va al proceso 1 y se trata de hacer lo mismo, sumar Asignados +

    Disponibles. All s se tiene un ESTADO SEGURO, A con 5, B con 3 y C con 2, y como

    se alcanza a llenar los Mximos, ese proceso se ejecuta.

    Una vez que el proceso se ejecut, entonces se procede a SUMAR los recursos

    asignados del proceso anterior a los disponibles. Hay que recordar que el proceso al

    terminar de ejecutarse libera todos sus recursos, por lo tanto pasan tanto los de tipo A,

    B y C a sumarse con los disponibles 3-3-2 y se tendrn nuevos DISPONIBLES que

    repartir, siendo ahora stos 5-3-2.

    Con estos se pasa al proceso P2 y as sucesivamente.

    Y el algoritmo es como sigue:

    (El algoritmo principal es el de asignacin de recursos)

  • 16

    Recuperacin del Interbloqueo

    Una vez detectado el interbloqueo, hace falta alguna estrategia de recuperacin. Las

    tcnicas siguientes son posibles enfoques, enumeradas en orden creciente de

    sofisticacin:

    1. Abandonar todos los procesos bloqueados. Esta es, se crea o no, una de las

    soluciones ms comunes, si no la ms comn, de las adoptadas en un sistema

    operativo.

    2. Retroceder cada proceso interbloqueado hasta algn punto de control definido

    previamente y volver a ejecutar todos los procesos. Es necesario que haya

    disponibles unos mecanismos de retroceso y reinicio en el sistema. El riesgo de

    esta solucin radica en que puede repetirse el interbloqueo original. Sin

    embargo, el no determinismo del procesamiento concurrente asegura, en

    general, que esto no va a pasar.

    3. Abandonar sucesivamente los procesos bloqueados hasta que deje de haber

    interbloqueo. El orden en el que se seleccionan los procesos a abandonar

    seguir un criterio de mnimo coste. Despus de abandonar cada proceso, se

    debe ejecutar de nuevo el algoritmo de deteccin para ver si todava existe

    interbloqueo.

    4. Apropiarse de recursos sucesivamente hasta que deje de haber interbloqueo.

    Como en el punto 3, se debe emplear una seleccin basada en coste y hay que

    ejecutar de nuevo el algoritmo de deteccin despus de cada apropiacin. Un

    proceso que pierde un recurso por apropiacin debe retroceder hasta un

    momento anterior a la adquisicin de ese recurso.

  • 17

    Para los puntos 3 y 4, el criterio de seleccin podra ser uno de los siguientes,

    consistentes en escoger el proceso con:

    La menor cantidad de tiempo de procesador consumido hasta ahora

    El menor nmero de lneas de salida producidas hasta ahora

    El mayor tiempo restante estimado

    El menor nmero total de recursos asignados hasta ahora

    La prioridad ms baja

    Mecanismos para evitar el Interbloqueo

    En vez de restringir la forma o el orden en que los procesos deben solicitar recursos,

    antes se debe conocer si es seguro otorgar dichos recursos. Es decir, si se presentan

    las condiciones suficientes para un interbloqueo, todava es posible evitarlos por

    medio de una restriccin en la asignacin de los procesos para tratar de buscar

    estados seguros. Estas restricciones aseguran que al menos una de las condiciones

    necesarias para el interbloqueo no pueda presentarse y por lo tanto, tampoco el

    interbloqueo.

    Otro mtodo para evitar los interbloqueo consiste en requerir informacin adicional

    sobre cmo se solicitar los recursos. Esta informacin puede ser:

    La necesidad mxima de recursos de los procesos que se est ejecutando

    La asignacin actual de recursos a procesos

    La cantidad actual de instancias libres de cada recurso

    En base al orden en que se solicitarn los recursos, se puede tomar la decisin de

    ejecutar el proceso o si debe esperar. Por lo tanto, la evitacin del interbloqueo solo

    anticipa la posibilidad de interbloqueo y asegura que no exista nunca tal posibilidad.

    En los mecanismos para evitar interbloqueos viene relacionado los estados seguros e

    inseguros de los procesos en los sistemas operativos.

    Estados Seguros e Inseguros

    Se considera que un determinado estado es seguro si, suponiendo que todos los

    procesos solicitan en ese momento sus necesidades mximas, existe al menos un

    orden secuencial de ejecucin de los procesos tal que cada proceso pueda obtener

    sus necesidades mximas. As, para que un estado sea seguro tiene que haber, en

    primer lugar, un proceso cuyas necesidades mximas puedan satisfacerse. Cuando,

    hipotticamente, este proceso terminase de ejecutar devolvera todos sus recursos (o

    sea, sus necesidades mximas). Los recursos disponibles en ese instante podran

  • 18

    permitir que se satisficieran las necesidades mximas de al menos un proceso que

    terminara liberando sus recursos, lo que a su vez podra hacer que otro proceso

    obtuviera sus necesidades mximas. Repitiendo este proceso, se genera u a

    secuencia de ejecucin de procesos tal que cada uno de ello, puede obtener sus

    necesidades mximas. Si esta secuencia incluye todos los procesos del sistema, el

    estado es seguro. En caso contrario es inseguro.

    El lector habr podido apreciar que este proceso de anlisis mirando hacia el futuro

    es similar al usado para la reduccin de un sistema en el algoritmo de deteccin de

    interbloqueos. La nica diferencia es que en el algoritmo de reduccin se tienen en

    cuenta slo las peticiones actuales de los procesos mientras que en este algoritmo se

    consideran tambin como peticiones las necesidades mximas de cada proceso. Esta

    similitud permite especificar una segunda definicin del estado seguro:

    Un estado es seguro si el estado de asignacin de recursos que resulta al considerar

    que todos los procesos realizan en ese instante todas sus posibles peticiones est

    libre de interbloqueos.

    Ejemplo

  • 19

    Ventajas y Desventajas de las diferentes estrategias

    Estrategia Poltica de reserva

    de recursos Esquemas

    alternativos Principales

    ventajas Principales desventajas

    Prevencin Conservadora; Infrautiliza recursos

    Solicitud simultanea de todos los recursos

    Adecuada para procesos que realizan una sola rfaga de actividad.

    No es necesaria la expropiacin

    Ineficiente

    Retrasa la iniciacin del proceso

    Los procesos deben conocer sus futuros requisitos de recursos

    Expropiacin Conveniente cuando se aplica a recursos cuyo estado se puede guardar y restaurar fcilmente

    Expropia con ms frecuencia de lo necesario

    Ordenamiento de recursos

    Es posible asegurarlo mediante comprobaciones en tiempo de compilacin

    No necesita clculos en tiempo de ejecucin ya que

    Impide solicitudes graduales de recursos

  • 20

    el problema se resuelve en el diseo del sistema

    Prediccin A medio camino entre la deteccin y la prevencin

    Asegura que existe al menos un camino seguro

    No es necesaria la expropiacin

    El Sistema operativo debe conocer los futuros requisitos de recursos de los procesos

    Los procesos se pueden bloquear durante largos periodos

    Deteccin Muy liberal; los recursos solicitados se conceden en caso de que sea posible

    Se invoca peridicamente para comprobar si hay interbloqueo

    Nunca retrasa la iniciacin del proceso

    Facilita la gestin en lnea

    Perdidas inherentes por expropiacin