INTERBLOQUEOS 05-01UNIVERSIDAD CENTRAL DEL ECUADOR
FACULTAD DE INGENIERIA CIENCIAS FISICAS Y MATEMATICAS SISTEMAS OPERATIVOS II
LINUX Y WINDOWS
2012
PAULINA ORTIZ FERNÁNDEZ
DEFINICION.Un conjunto de procesos/hebras se encuentra interbloqueado si cada uno de ellos está esperando un suceso que sólo otro proceso del conjunto puede causar. El Interbloqueo se puede definir como el bloque permanente de un conjunto de procesos que compiten por los recursos del sistema, todos los interbloqueos suponen necesidades contradictorias de recursos, por parte de dos o más procesos. Ejemplo: Cuatro coches llegan aproximadamente en el mismo instante a un cruce de cuatro caminos. Los cuatro cuadrantes de la intersección son los recursos compartidos sobre los que se demanda control; por tanto, si los coches desean atravesar el cruce, las necesidades de recursos son las siguientes: -
El coche que va hacia el norte necesita los cuadrantes 1 y 2.
-
El coche que va hacia el oeste necesita los cuadrantes 2 y 3.
-
El coche que va hacia el sur necesita los cuadrantes 3 y 4.
-
El coche que va hacia el este necesita los cuadrantes 4 y 1.
Habitualmente el suceso esperado es la liberación de algún tipo de recurso o sección critica. Ninguno de los procesos puede... Ejecutarse Liberar un recurso o sección critica Ser despertado (desbloqueado) CONDICIONES NECESARIAS DE INTERBLOQUEO
Exclusividad: Cada recurso o es asignado exclusivamente a un proceso o está disponible.
Retención y espera: Los procesos que tiene recursos asignados pueden solicitar nuevos recursos.
No expropiación: Los recursos ya asignados no pueden ser arrebatados al proceso sino que este debe liberarlos de forma voluntaria.
Espera circular: Debe existir una cadena circular de dos o más procesos cada uno de los cuales espera por un recurso en manos del siguiente proceso.
de
recursos
a) El recurso R1 ha sido asignado al proceso P1. b) El proceso P2 espera a que el recurso R2 le sea asignado. c) Interbloqueo.
RESOLUCION DE INTERBLOQUEOS ➢ ➢ ➢ ➢
Prevenir : anular una de las cuatro condiciones necesarias para la aparición de un interbloqueo. Evitar: asignar recursos de forma cuidadosa para que no pueda aparecer el interbloqueo. Detectar y recuperar: intentar detectar el interbloqueo y tomar medidas para resolverlo en caso de que aparezca. Ignorar: no hacer nada con la esperanza de que no aparezca el interbloqueo.
PREVENCIÓN DEL INTERBLOQUEO La estrategia básica de la prevención del interbloqueo consiste, a grandes rasgos, en diseñar su sistema de manera que esté excluida, a priori, la posibilidad de interbloqueo.
Los métodos para prevenir el interbloqueo son de dos tipos:
Los métodos indirectos que consisten en impedir la aparición de alguna de las tres condiciones necesarias para que se de el interbloqueo. Los métodos directos que consisten en evitar la aparición del círculo vicioso de espera.
Exclusión mutua Si ningún recurso se puede asignar de forma exclusiva, no se producirá interbloqueo. Sin embargo, existen recursos para los que no es posible negar la condición de exclusión mutua. No obstante, es posible eliminar esta condición en algunos procesos. Por ejemplo, una impresora es un recurso no compatible pues si se permite que dos procesos escriban en la impresora al mismo tiempo, la salida resulta caótica. Pero con el spooling de salida varios procesos pueden generar salida al mismo tiempo. Puesto que el spooler nunca solicita otros recuerdos, se elimina el bloqueo originado por la impresora. El inconveniente es que no todos los recursos pueden usarse de esta forma (por ejemplo, la tabla de procesos no se presenta al spooling y, además, la implementación de esta técnica puede introducir nuevos motivos de interbloqueo, ya que el spooling emplea una zona de disco finita)
Retención y espera La condición de retención 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 simultáneamente. Esta solución resulta ineficiente por dos factores: En primer lugar, un proceso puede estar suspendido durante mucho tiempo, esperando que concedan todas sus solicitudes de recursos, cuando de hecho podría haber avanzado con solo 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 apropiación La condición de no apropiación 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 esta retenido por otro proceso, el sistema operativo debe expulsar al segundo proceso y
exigirle que libere sus recursos. Este último esquema evitará el interbloqueo sólo si no hay dos procesos que posean la misma prioridad. Esta técnica es práctica sólo cuando se aplica a recursos cuyo estado puede salvarse y restaurarse más tarde de una forma fácil, como es el caso de un procesador.
Circulo vicioso de espera La condición del círculo vicioso de espera puede prevenirse definiendo una ordenación lineal de los tipos de recursos. Si a un proceso se le han asignado recursos de tipo R, entonces sólo podrá realizar peticiones posteriores sobre los recursos de los tipos siguientes a R en la ordenación. Para comprobar el funcionamiento de esta estrategia, se asocia un índice a cada tipo de recurso. En tal caso, el recurso Ri antecede a Rj en la ordenación si i
Las formas de tratar los interbloqueos se dividen en 4 grandes técnicas. · 1ª TÉCNICA - TÉCNICA DEL AVESTRUZ – Se basa en que: Si no se ve el problema, es que no existe. (se omite). Para omitir el interbloqueo, debemos tener en cuenta estos factores: 1. Número de veces que ocurre el interbloqueo. 2. Gravedad de la ocurrencia del interbloqueo. 3. Coste de las consecuencias. 4. Coste, en caso de hacer algo. Linux usa esta técnica. · 2ª TÉCNICA – PREVENCIÓN – Consiste en eliminar del sistema al menos, una de las condiciones de interbloqueo. Ventajas: Método limpio, no tiene ni que matar procesos, ni que expropiar recursos.
Desventajas: Se aprovechan mal los recursos.
· 3ª TÉCNICA – EVITACIÓN – Consiste en permitir la posibilidad de interbloqueo. De modo que se chequea el sistema continuamente. Este chequeo se realiza en las asignaciones de recursos a procesos, ya que las solicitudes no son evitables. Ventajas: Método limpio.
Desventajas: Poco rendimiento, sobrecarga mucho el sistema. Chequear continuamente el sistema.
EVITAR INTERBLOQUEOS Funcionamiento: Cuando todas las condiciones necesarias de interbloqueo están presentes, menos la espera circular, seguimos lo siguiente: Cada vez que un proceso solicite un recurso se evalúa el sistema. En el supuesto de que se le concediera el recurso, apareciera una espera circular, no se le concedería el recurso. En el caso de que no apareciera espera circular, se le concedería el recurso.
Inconvenientes: Necesitamos saber de antemano, la información de los recursos que se van a solicitar. Esto es casi imposible.
OPCIONES DE EVITACIÓN. A) DIAGRAMA DE EJECUCIÓN DE PROCESOS. Su utilidad es puramente teórica, ya que explica el “punto de no retorno” y nunca se lleva a la práctica ya que solo es aplicable a dos procesos y dos recursos. Situación de interbloqueo:
Procesos: A, B Recursos: Impresora, Cinta. · El proceso A pide la cinta y luego pide la impresora, finalizando con esta última. · El proceso B pide la impresora, y luego la cinta, finalizando con esta última.
Actuar sobre las decisiones que el sistema toma en tiempo de ejecución con respecto a si la creación de una nueva hebra o una nueva solicitud de recurso podría conducir a un interbloqueo. Dos políticas son posibles: No iniciar una nueva hebra si la suma de todos los recursos que necesita más los recursos ya asignados a otras hebras puede conducir a un interbloqueo. No conceder solicitudes de nuevos recursos si su asignación puede llevar el sistema a un interbloqueo. Siempre hemos de tener en cuenta el peor caso posible. La mayor restricción es conocer por adelantado los recursos que va a necesitar un proceso. ¿Qué hacer una vez detectado un interbloqueo? ➢ ➢ ➢ ➢ ➢ ➢ ➢
Finalizar procesos Finalizar todos los procesos interbloqueados. Es rápido pero desperdicia mucho trabajo. Finalizar procesos de uno en uno hasta que desaparezca el interbloqueo. Este método consume más recursos. Es mejor en cuanto a la cantidad de trabajo aprovechado. ¿En qué orden finalizar los procesos?
RECUPERACION DE INTERBLOQUEOS ➢ ➢ ➢
Recuperación mediante expropiación: Tomar el recurso en conflicto de otro proceso. Método aplicable sólo a recursos expropiables.
➢ ➢ ➢ ➢ ➢ ➢ ➢
Recuperación mediante vuelta atrás: Almacenar el estado de los procesos periódicamente. Reiniciar el proceso en uno de los estados previos al interbloqueo. Recuperación mediante finalización: Método burdo pero eficaz. Eliminar procesos del ciclo que condujo al interbloqueo hasta permitir a algún otro continuar. Si disponemos de información elegir procesos reiniciables (compilador/base de datos).
GESTION DE INTERBLOQUEOS 1. No hacer nada (algoritmo del avestruz) Ej. UNIX. Decisión de diseño, por motivos de flexibilidad. Ej. Nº de archivos abiertos. 2. Permitir que el sistema se bloquee y luego se recupere (requiere detección periódica). 3. Uso de protocolos que aseguren que el sistema nunca se bloqueara: Mediante evasión: proporcionar al sistema información anticipada acerca de las necesidades de recursos de los procesos, de modo que pueda encontrar secuencias de asignación de CPU a los procesos que eviten los bloqueos. Mediante prevención: garantizar que una (o más) de las condiciones necesarias para la formación de bloqueos no se cumpla.
WINDOWS MECANISMOS DE CONCURRENCIA EN WINDOWS 2000 Windows 2000 (W2K) ofrece sincronización entre los hilos como parte de la arquitectura de objetos. El mecanismo usado por el ejecutor de W2K para implementar los servicios de sincronización es la familia de objetos de sincronización, que esta formada por los siguientes:
Proceso. Hilo. Archivo. Entrada de consola. Notificación de cambio de archivo. Mutante. Semáforo. Suceso. Temporizador.
Cada caso de objeto de sincronización puede estar en estado señalizado o no señalizado. Un hilo puede estar suspendido por un objeto en estado no señalizado: el hilo es liberado cuando el objeto pasa a estado señalizado. El mecanismo es sencillo: un hilo genera una solicitud de espera al ejecutor de W2K por medio del descriptor (handle) del objeto de sincronización. Cuando
un objeto pasa a estado señalizado, el ejecutor de W2K libera todos los objetos hilo que estaban esperando por dicho objeto de sincronización. El objeto mutante se utiliza para hacer cumplir la exclusión mutua en el acceso a un recurso, permitiendo que sólo un objeto hilo obtenga el acceso en cada instante. Por lo tanto, funciona como un semáforo binario. Cuando el objeto mutante pasa a estado señalizado, sólo se libera uno de los hilos que esperan. Los objetos mutuamente pueden utilizarse para sincronizar hilos que ejecutan en distintos procesos. Al igual que los mutantes, hilos de diferentes procesos pueden compartir semáforos. El semáforo de W2K es un semáforo entero clásico. El temporizador en esencia, señala determinado momento o intervalos regulares.
Objetos de sincronización de Windows 2000 (Resume los sucesos que hacen que cada tipo de objetos pase a estado señalizado y el efecto que tiene en los hilos que esperan)
LINUX Lo que realmente se entiende por el término de Linux es el Kernel, el corazón de cualquier sistema operativo tipo Unix. Pero el Kernel por si solo no forma todavía un sistema operativo. Justamente para Unix existe una multitud de software libre, lo que significa que estos están también disponibles para Linux. Son estas utilidades las que realmente forman el sistema operativo. Todo se complementa con XFREE86tm que es el sistema X Windows para sistemas Unix a base de PC. Todos estos componentes, junto a otros programas o también juegos, forman el sistema que generalmente se denomina Linux.
Por su naturaleza, Linux se distribuye libremente y puede ser obtenido y utilizado sin restricciones por cualquier persona, organización o empresa que así lo desee, sin necesidad de que tenga que firmar ningún documento ni inscribirse como usuario. Por todo ello, es muy difícil establecer quiénes son los principales usuarios de Linux. No obstante, se sabe que actualmente Linux está siendo utilizado ampliamente en soportar servicios en Internet, lo utilizan Centros de Educación alrededor del todo el mundo para sus redes y sus clases, lo utilizan empresas productoras de equipamiento industrial para vender como software de apoyo a su maquinaria, lo utilizan cadenas de supermercados, estaciones de servicio y muchas instituciones del gobierno y militares de varios países. Obviamente, también es utilizado por miles de usuarios en sus computadores personales. El apoyo más grande, sin duda, ha sido Internet ya que a través de ella se ha podido demostrar que se puede crear un sistema operativo para todos los usuarios sin la necesidad de fines lucrativos. El sistema Linux es compatible con ciertos estándares de Unix a nivel de código fuente, incluyendo el IEEE POSIX.1, System V y BSD. Fue desarrollado buscando la portabilidad de las fuentes: todo el software gratuito desarrollado para Unix se compila en Linux sin problemas. Y todo lo que se hace para Linux (código del núcleo, drivers, librerías y programas de usuario) es de libre distribución. En Linux también se implementa el control de trabajos POSIX (que se usa en los shells csh y bash), las pseudoterminales (dispositivos pty), y teclados nacionales mediante manejadores de teclado cargables dinámicamente. Además, soporta consolas virtuales, lo que permite tener más de una sesión abierta en la consola de texto y conmutar entre ellas fácilmente. Linux soporta diversos sistemas de archivos para guardar los datos. Algunos de ellos, como el ext2fs, han sido desarrollados específicamente para Linux. Linux implementa todo lo necesario para trabajar en red con TCP/IP. Desde manejadores para las tarjetas de red más populares hasta SLIP/PPP, que permiten acceder a una red TCP/IP por el puerto serie. También se implementan PLIP (para comunicarse por el puerto de la impresora) y NFS (para acceso remoto a ficheros). Y también se han portado los clientes de TCP/IP, como FTP, telnet, NNTP y SMTP. Esta es la mascota oficial de Linux, que fue elegida por el creador de Linux para representar el sistema operativo que él había creado. Hoy en día todo el mundo asocia a este simpático pingüino con el sistema operativo.
Descripción De Las Funciones De Linux Las ventajas que se derivan de la utilización de Linux parten de su potencia y flexibilidad. Son el resultado de muchas funciones incorporadas en el sistema, listo para lo que se pueda utilizar en cuanto se encienda la máquina.
Multitarea La palabra multitarea describe la capacidad de ejecutar muchos programas al mismo tiempo sin detener la ejecución de cada aplicación. Se le denomina multitarea prioritaria porque cada programa tiene garantizada la oportunidad de ejecutarse, y se ejecuta hasta que el sistema operativo da prioridad a otro programa para que se ejecute. Linux consigue el proceso de prioridad supervisando los procesos que esperan para ejecutarse, así como los que están ejecutándose. El sistema programa entonces cada proceso para que disponga de las mismas oportunidades de acceso al microprocesador. Otra de las características referentes a este tema es que Linux es multiplataforma. Fue diseñada para plataforma Intel pero ha sido fácilmente exportado a diversos tipos de sistema. Multiusuario La capacidad de Linux para asignar el tiempo de microprocesador simultáneamente a varias aplicaciones ha derivado en la posibilidad de ofrecer servicios a diversos usuarios a la vez, ejecutando cada uno de ellos una o más aplicaciones a la vez. Más de una persona puede trabajar con la misma versión de la misma aplicación al mismo tiempo. No se debe confundir esto con el hecho de que muchos usuarios puedan actualizar el mismo archivo simultáneamente. Shells Programables El shell programable es otra característica que hace que el sistema operativo sea el más flexible de los existentes. Un shell es como el command.com de MS-DOS, es decir, un intérprete de comandos. Es básicamente la interfaz, el modo de comunicación, entre el usuario y el sistema. El shell de Linux explora cada línea de comandos para determinar si su formación y deletreado son coherentes con sus protocolos. El proceso de exploración del shell se denomina análisis. Un Shell funciona como interprete entre el usuario y el kernel (cerebro o corazón del sistema operativo), la diferencia entre los diferentes shell que puedan existir radica en la síntesis de la línea de comandos. Cada usuario de un sistema Linux tiene su propia interfaz de usuario o Shell. Los usuarios pueden personalizar sus shells adecuándolos a sus propias necesidades específicas. Así, el Shell de un usuario funciona más como un entorno operativo que el usuario puede controlar.
BIBLIOGRAFIA http://es.scribd.com/doc/52933347/61/Deteccion-De-Los-Interbloqueos
http:// geneura.ugr.es/~gustavo/aco/teoria/interbloqueo/interbloqueo-2x3.pdf