martes, 16 de abril de 2013

Prevensión del interbloqueo

 















Consite en tratar de eliminar una de las condiciones  de COFFMAN

1) Supresión de exclusión mutua: Se intenta acceder a los recursos de forma paralela. Como, por ejemplo, volcar al disco datos como si se hubiecen impreso (spooling). Debido a que este problema depende de la naturaleza del recurso, esta condición no se puede eliminar

2) Supresión de retención y espera: La retención y espera se da cuando un proceso espera un recurso cuando ya tiene asignado otros. Esto se debe a la petición interminable. Se puede solucionar de la siguientes formas

 2.1)  Hacer que lo procesos pidan los recursos al principio de su ejecución
         * Si están todos los recursos disponible, se le otorgan todos
         * Si no están todos disponibles, se volvera a intentar depsués de un rato
         * Inconveniente: Saber la necesidad de los procesos desde un principio
                                     Mucho recursos retenidos pero no usados

2.2)   Un proceso puede solcitar recursos siempre y cuando no tenga ninguno asignado, por                           ejemplo, si un recurso no esta disponible se deben liberar todos los que se tienen
           
En ambos casos puede que el proceso nunca se ejecute (inanición)

3) Supresión de la no expropiación: Permitir que el sistema operativo desasigne recursos a un proceso bloqueado
    * Si un proceso se bloquea por un recurso, los recursos retenidos quedan a disposición                             de los procesos activos
    *  El proceso ahora tiene que esperar por todos los recursos
    *  Penaliza a los procesos que necesitan mucho recursos
    Es posible seguir este protocolo en recuroso cuyo estado se puede guardar                                           y restaurar fácilmente (registro en CPU). Generalmente no puede aplciarse                                           a recursos tales como impresoras o unidades de cinta.

4) Espera circular : Se puede evitar forzando un orden en la petición de los recuros
     * Cada recurso tiene asignado un número de orden
     * Los recursos se deben pedir en orden ascendente
     * El orden de petición de los recursos debe ser según el uso normal de los recursos de un sistema
     * Desventajas: Se limita la libertad de escritura de código y se puede inducir a una
        mala utilización de los recursos





  

Métodos para el tratamiento del interbloqueo

Existen tres formas de abordar el problema de interbloqueo
* Garantizar que en el sistema no ocurran interbloqueos. Prevensión y evitación: El sistema está diseñado para prevenir las 4 condiciones de COFFMAN y no caer bloqueado
* Permitir la aparición de interbloqueos y  recuperarse cuando ocurra (es necesario un sistema de detección y un mecanismo de recuperación)
* No tratar el problema ( si hay interbloqueos, el usuario tiene que intervenir)
Técnicas para abordar el problema de interbloqueo

1) Técnica o algoritmo del aveztruz: Se basa en que si no se ve el problema, es porque no existe (es omitido)
Para omitir el interbloqueo se deben tener en cuenta los siguientes factores:
* Número de veces que ocurre el interbloqueo
* Gravedad de ocurrencia del interbloqueo
* Coste de las consecuencias
* Coste, en caso de hacer algo

2) Prevención: Consiste en eliminar del sistema al menos una condicion de interbloqueo
* Ventajas: No se deben matar procesos, ni expropiar recursos (método limpio)
* Desventajas: Se aprovechan mal los recursos
3) Evitación: Permite la posibilidad de interbloqueo. De modo que se hace un análsis contínuo. El análisis se realiza en la asignación de recursos a procesos, ya que las solicitudes son inevitables.
* Ventajas: Método limpio
* Desventajas: Poco rendimiento (sobrecarga al sistema), debido al constante análisis por parte del sistema
4) Detención y recuperación: Los procesos pueden actuar libremente, incluso permitiendo que ocurra el interbloqueo. Cada cierto tiempo se realiza un análisis para ver si ha ocurrido un interbloqueo. En caso de que lo haya se aplica un mecanismo de recuperación
* Desventajas: Método no limpio








Condiciones de COFFMAN



Edward G. Coffman

Estas condiciones fueron descritas por primera vez en 1971 por Edward G. Cofmman, deben cumplirse de forma simultanea y no son totalmente independientes entre ellas.

Siendo los procesos P0,P1,P2...PX y los recursos R0,R1,R2...RX, el interbloqueo se da si:

1) Exclusión mutua: No se pueden compartir los recursos, debido a que está compartido y no se puede acceder de forma simultánea

2)Retención y espera:  Un proceso que retiene uno o varios recuroso, está esperando otros recursos asignados a otros procesos

3) No expropiación: Un recurso sólo puede ser liberado por el proceso que lo retiene (voluntariamente) y no expropiado por otro proceso

4) Espera circular: Dado un conjunto de procesos en espera (P0,P1,P2...PX) en la que todo proceso P(I) espera por un proceso retenido por P(I + 1); y P(X) espera por un proceso retenido por P(0)


















lunes, 15 de abril de 2013

Interbloqueo

Existen ocaciones en que dos o mas procesos se "bloquearan mutuamente", creando un estancamiento.


a) Interbloque potencial: Puede ocurrir un interbloqueo
b) Interbloqueo real: Se ha producido un interbloqueo

El interbloqueo o deadlock es un problema que afecta a "procesos concurrentes" que usan recursos en un sistema.
Los procesos concurrentes son cargados en la memoria RAM; en sistemas multitareas o proceso. En sistemas monoproceso el interbloqueo NO TIENE SENTIDO

Los procesos solicitan recursos liberandolos cuando no los necesitan. Un recurso puede estar disponible o asignado a algún proceso

Ejemplares: Son la cantidad de "copias" de un mismo tipo de recurso, por ejemplo: varias impresoras
SI UN PROCESO SOLICITA UN RECURSO, SE LE CONCEDE CUALQUIER EJEMPLAR DISPONIBLE
SI UN PROCESO SOLICITA UN RECURSO SIN EJEMPLAR DISPONIBLE, ESTE QUEDA BLOQUEADO, ESPERANDO A QUE SE LE ASIGNE ALGÚN EJEMPLAR DISPONIBLE

Problema: Si varios procesos bloqueados, esperan un recurso retenido por otro proceso. NINGÚN PROCESO PUEDE AVANZAR. Es en ese momento donde se genera un intebloqueo, abrazo mortal, bloque mutuo o deadlock 





El interbloqueo no es responsabilidad de las aplicaciones, sino del sistema de gestión del sistema operativo

Ejemplo: Los procesos A y B se pueden interbloquear, aunque estén creados correctamente




Llamada al sistema

Es cuando el proceso solcita algun servicio al sistema operativo

Debido a que para poder acceder a cierto tipos de recuros se necesita acceder en modo privilegiado, el sistema operativo ofrece una serie de funciones que el proceso puede emplear para acceder a dicho recuso. En palabras simples el sistema operativo actuá como intermediario entre el proceso y dicho recurso con el fin de que el proceso pueda acceder a el cada vez que lo solicite

Algunas llamadas al sistema son:

read: Perimte leer la información proveniente de algún dispositivo de entrada tal como el teclado o Disco duro

write: Permite escribir un dato y enviarlo a algun dispositivo de salida tal como el monitor o el Disco duro

time: permite obtener hora y fecha del sistema

Toda llamada al sistema se identifica por un numero único e irrepetible el cúal no debe ser modificado a lo largo de la vida de llamada, con el proprósito de que no rompa la compatibilidad hacia atrás

En los sistemas operativo UNIX y de tipo UNIX ( Linux, Mac) una llamada al sistema muy común es la llamada kill() que por defecto envia la señal de terminación (SIGTERM) limpiando el estado del proceso y salir a los procesos indetificandolos con su PID (identificador de proceso). Tambien pueden enviarse tipo de señales (SIGKILL) finaliza el proceso, y (SIGSTOP) lo pone en pausa hasta que se reciba una señal (SIGCONT). Todas estas instrucciones se deben llevar a cabo bajo un perfil de usuario con privilegios, super usuario o en modo ROOT. En caso de que se envien señales entre procesos solo basta con que ambos procesos sean dueños de un mismo usuario.

Las señales disponibles tienen distintos nombres, asignados a determinados números. El número de las señales puede cambiar entre distintas implementaciones de Unix. (SIGKILL) suele tener el número 9 y (SIGTERM) el 15. 


Ejemplo

kill -9 5645 Utiliza (SIGKILL) en donde -9 corresponde a la señal y 5654 corresponde al PID del proceso. También se puede utilizar como kill -KILL

La llamada kill() NO HACE referencia a  MATAR EL PROCESO 

Otras señales pueden ser HUP, TRAP, INT y ALRM







 

miércoles, 10 de abril de 2013

Caracteristicas generales de procesos en sistemas basados en UNIX

En lo sistemas UNIX cada proceso consta de 3 caracteristicas

PID (proces ID, único e irrepetible): Corresponde al identificador de proceso

UID: Identificador del usuario dueño del proceso (usuario que lo ejecutó)

GID: Identificador del grupo del usuario

(PID y UID tienen relación entre si)

El sistema asigna UID a cada usuario autrizado pasa usar el sitema, mientras que cada proceso que se crea tiene el UID del usuario que lo ejecuto. Cada proceso hijo tiene el mismo UID de su proceso padre. Cada usuario pertenece a un grupo por lo que cada usuario de sistema posee un GID

Cada proceso puede enviar "señales" al kernel del sistema, mientras que este también puede enviar señales a los procesos
 






Árbol de procesos

Referente a la figura..

El proceso A crea dos procesos hijos, B y C. El proceso B a su vez creó tres procesos hijos. D, E y F.
Todos pueden comunciarse entre si, pero a veces cada proceso debe esperar a sus subprocesos para poder continuar