Sistemas Operativos
Por: 14-05-2009 por rcvalladolid | Categorías asociadas: Capitulo 7, Paralelo "B"

 Nombre: Roberto Valladolid.

INTERBLOQUEOS

En un entorno multiprogramación, varios procesos pueden competir por un numero finito de recursos. Un proceso solicita recursos y, si los recursos no están disponibles en ese momento, el proceso pasa a estado de espera.

Es posible que algunas veces, un proceso en espera no pueda nunca cambiar de estado, por que los recursos que ha utilizado estén ocupados por otros procesos que a su vez estén esperando otros recursos. Cuando se produce una situación como esta, se dice que ha ocurrido un interbloqueo.

El interbloqueo se puede definir como el bloqueo permanente de un conjunto de procesos que compiten por los recursos del sistema o bien se comunican unos con otros. A diferencia de otros problemas de la gestión concurrente de procesos, no existe una solución eficiente para el caso general.

Caracterización de los interbloqueos.

En un interbloqueo, los procesos nunca terminan de ejecutarse y los recursos del sistema están ocupados, lo que impide otros trabajos, a continuación algunos detalles de características.

Condiciones Necesarias:

Una situación de interbloqueo puede surgir si se dan simultáneamente las cuatro condiciones siguientes en un sistema.

1.     Exclusión mutua: Al menos un recurso debe estar en modo no compartido; es decir, solo un proceso puede usarlo cada vez. Si otro proceso solicita otro recurso, el proceso solicitante tendrá que esperar hasta que el recurso sea liberado.

2.     Retención y espera: Un proceso debe estar reteniendo al menos un recurso y esperando para adquirir otros recursos adicionales que actualmente estén retenidos por otros procesos.

3.     Sin desalojo: Los recursos no pueden ser desalojados; es decir u  recurso solo puede ser liberado voluntariamente por el proceso que le retiene, después de que dicho proceso haya completado su tarea.

4.     Espera Circular: Debe existir un conjunto {P0,P1,…,Pn} de procesos en espera, tal que P0 este esperando a un recurso retenido por P1, P1 esté esperando a un recurso retenido por P2, …, Pn-1 este esperando a un recurso retenido por Pn’ y Pn esté esperando a un recurso retenido por P0. Los procesos interbloqueados forman una cadena circular de modo que cada proceso retiene uno o más de los recursos que son solicitados por el siguiente proceso de la cadena.

 simple

 

Grafo de asignación de recursos

Los interbloqueos pueden definirse de forma mas precisa mediante un grafo dirigido, que se llama grafo de asignación de recursos del sistema. Este grafo consta de un conjunto de vértices V y de un conjunto de aristas E.

Métodos para tratar los interbloqueos

En general, podemos abordar el problema de los interbloqueos de una de tres formas:

·         Podemos emplear un protocolo para impedir o evitar los interbloqueos, asegurando que el sistema nunca entre en estado de interbloqueo.

·         Podemos permitir que el sistema entre en estado de interbloqueo, detectarlo y realizar una recuperación.

·         Podemos ignorar el problema y actuar como si nunca se produjeran interbloqueos en el sistema.

Estos métodos básicos se pueden combinar, permitiéndonos seleccionar un método óptimo para cada clase de recurso existente en el sistema.

La prevención de interbloqueos proporciona un conjunto de métodos para asegurar que al menos una de las condiciones necesarias no pueda cumplirse. Estos métodos evitan los interbloqueos restringiendo el modo en que se pueden realizar las solicitudes.

Si un sistema no emplea un algoritmo de prevención de interbloqueo ni un algoritmo de evasión, entonces puede producirse una situación de interbloqueo.

El sistema debe disponer de métodos de recuperación manual para tales condiciones y puede, simplemente, usar esas mismas técnicas para recuperarse de los interbloqueos.

Prevención de interbloqueos

Estas cuatro condiciones no se cumpla, podemos prevenir la aparición de interbloqueos.

Exclusión mutua

La condición de exclusión mutua se aplica a los recursos que no pueden ser compartidos. Un proceso no necesita esperar nunca para acceder a un recurso compartible. Sin embargo, en general, no podemos evitar los interbloqueos negando la condición de exclusión mutua, ya que algunos recursos son intrínsecamente no compartibles.

Retención y espera

Para asegurar que la condición de retención y espera nunca se produzca en el sistema, debemos garantizar que, cuando un proceso solicite un recurso, el proceso no esté retenido ningún otro recurso. Podemos implementar este mecanismo requerimiento que las llamadas al sistema que solicitan los recursos para un proceso precedan a todas las demás llamadas al sistema.

Una posible alternativa sería un protocolo que permitiera a un proceso solicitar recursos solo cuando no tenga ninguno retenido.

Ambos protocolos tienen dos desventajas importantes. Primero, la tasa de utilización de los recursos puede ser baja, dado que los recursos pueden asignarse pero no utilizarse durante un periodo largo de tiempo. La segunda desventaja es que puede producirse el fenómeno de inanición, un proceso que necesite varios recursos muy solicitados puede tener que esperar de forma indefinida, debido a que al menos uno de los recursos que necesita está siempre asignado a algún otro proceso.

Sin desalojo

La tercera condición necesaria para la aparición de interbloqueos es que los recursos que ya  están asignados no sean desalojados. Para impedir que se cumpla esta condición, podemos usar el protocolo siguiente: si un proceso esta retenido varios recursos y solicita otro recurso que no se le puede asignar de forma inmediata, entonces todos los recursos actualmente retenidos se desalojan.

Espera circular

Una forma de garantizar que esta condición nunca se produzca es imponer una ordenación total de todos los tipos de recursos y requerir que cada proceso solicite sus recursos en un orden creciente de enumeración.

Los recursos se clasifican por categorías y los procesos solo pueden solicitar los recursos en orden creciente, además todos los recursos de una categoría deben ser solicitados a la vez. Una vez que un proceso ha solicitado un recurso de una categoría, no puede solicitar otro de una categoría inferior.

Evasión de interbloqueos

Esas restricciones aseguran que al menos una de las condiciones necesarias para que haya interbloqueo no se produzca y, por tanto, que no puedan aparecer interbloqueos. Sin embargo, esta técnica de prevención de interbloqueos tiene algunos posibles efectos colaterales, como son una baja tasa de utilización de los dispositivos y un menor rendimiento del sistema.

Un método alternativo para evitar los interbloqueos consiste en requerir información adicional sobre como van a ser solicitados los recursos. Cada solicitud requiere que, para tomar la correspondiente decisión, el sistema considere los recursos actualmente disponibles, los recursos actualmente asignados a cada proceso y las solicitudes y liberaciones futuras de cada proceso.

El modelo más simple y útil requiere que cada proceso declare el número máximo de recursos de cada tipo que puede necesitar. El algoritmo de evasión de interbloqueos examina dinámicamente el estado de asignación de cada recurso con el fin de asegurar que nunca se produzca una condición de espera circular. El estado de asignación del recurso esta definido por el número de recursos disponibles y asignados y la demanda máxima de los procesos.

Estado seguro

Un estado es seguro si el sistema puede asignar recursos a cada proceso en determinado orden sin que eso produzca un interbloqueo. Un sistema está en estado seguro solo si existe lo que se denomina una secuencia segura. Un estado seguro implica que no puede producirse interbloqueo, a la inversa, todo estado de interbloqueo es inseguro, sin embargo, no todos los estados inseguros representan un interbloqueo.

Un estado inseguro puede llevar a que aparezca un interbloqueo, siempre y cuando el estado sea seguro, el sistema operativo podrá evitar los estados inseguros, el sistema operativo no puede impedir que los procesos soliciten recursos de tal modo que se produzca un interbloqueo, el comportamiento de los procesos es el que controla los estados inseguros.

Detección de interbloqueos

Las estrategias de prevención de interbloqueo; resuelven el problema limitando el acceso a recursos e imponiendo restricciones sobre los procesos. En cambio, las estrategias de detección de interbloqueo, no limitan el acceso a recursos ni restringen las acciones del proceso. Con la detección del interbloqueo, se concederán los recursos  que los procesos necesiten siempre que sea posible.  Periódicamente, el Sistema Operativo  ejecuta un algoritmo que permite detectar la condición de círculo vicioso de espera.

La detección del interbloqueo es el proceso de determinar si realmente existe un interbloqueo e identificar los procesos  y recursos implicados en él. Una posibilidad detectar un interbloqueo es monitorear cada cierto tiempo el estado de los recursos. Cada vez que se solicita o se devuelve un recurso, se actualiza el estado de los recursos y se hace una verificación para observar si existe algún ciclo.

Este método está basado en suponer que un interbloqueo no se presente y que los recursos del sistema que han sido asignados, se liberarán en el momento que otro proceso lo requiera.

Si un sistema no emplea ni algoritmos de prevención ni de evasión de interbloqueos, entonces puede producirse una situación de interbloqueo. En este caso, el sistema debe proporcionar:

·        Un algoritmo que examine el estado del sistema para determinar si se ha producido un interbloqueo.

·        Un algoritmo para recuperarse del interbloqueo.

Una sola instancia de cada tipo de recurso

Si todos los recursos tienen una única instancia, entonces podemos definir un algoritmo de detección de interbloqueos que utilice una variante del grafo de asignación de recursos, denominada grafo de espera.

Varias instancias de cada tipo de recurso

El esquema del grafo de espera no es aplicable a los sistemas de asignación de recursos con múltiples instancias de cada tipo de recurso.

Available: Un vector de longitud m que indica el numero de recursos disponibles de cada tipo.

Allocation: Una matriz n * m que define el numero de recursos de cada tipo que están asignados actualmente a cada proceso.

Request: Una matriz n * m que especifica la solicitud actual efectuada por cada proceso.

Utilización del algoritmo de detección

Los interbloqueos se producen solo cuando algún proceso realiza una solicitud que no se puede conceder de forma inmediata, esta solicitud puede ser la solicitud final que complete una cadena de procesos en espera. Si se invoca el algoritmo de detección de interbloqueo para cada solicitud de recursos, esto dará lugar a una considerable sobrecarga en el tiempo de uso del procesador.

Recuperación de un Interbloqueo

Cuando el algoritmo de detección determina que existe un interbloqueo, tenemos varias alternativas. Una posibilidad es informar al operador de que se ha producido un interbloqueo y dejar que lo trate de forma manual.

La recuperación después de un interbloqueo se complica porque puede no estar claro que el sistema se haya bloqueado. Las mayorías de los Sistemas Operativos no tienen los medios suficientes para suspender un proceso, eliminarlo del sistema y reanudarlo más tarde.

Actualmente, la recuperación se suele realizar eliminando un proceso y quitándole sus recursos. El proceso eliminado se pierde, pero gracias a esto ahora es posible terminar. Algunas veces es necesario, eliminar varios procesos hasta que se hayan liberado los recursos necesarios para que terminen los procesos restantes.

Terminación de procesos

En ambos métodos, el sistema reclama todos los recursos asignados a los procesos terminados.

Interrumpir todos los procesos interbloqueados: Claramente, este método interrumpirá el ciclo de interbloqueo, pero a un precio muy alto.

Interrumpir un proceso cada vez hasta que el ciclo de interbloqueo se elimine: Este método requiere una gran cantidad de trabajo adicional, ya que después de haber interrumpido cada proceso hay que invocar un algoritmo de detección de interbloqueos para determinar si todavía hay procesos en interbloqueo.

Hay muchos factores que influyen en que procesos seleccionar, entre los que se incluyen:

1.      La prioridad del proceso

2.     Durante cuanto tiempo ha estado el proceso ejecutándose y cuanto tiempo de adicional necesita el proceso para completar sus tareas.

3.      Cuantos y que tipo de recursos ha utilizado el proceso.

4.     Cuantos más recursos necesita el proceso para completarse.

5.     Cuantos procesos hará falta terminar.

6.     Si se trata de un proceso interactivo o de procesamiento por lotes.

Apropiación de recursos

Para eliminar los interbloqueos utilizando el método de apropiación de recursos, desalojamos de forma sucesiva los recursos de los procesos y asignamos dichos recursos a otros procesos hasta que el ciclo de interbloqueo se interrumpa.

Si se necesita el desalojo para tratar los interbloqueos, entonces debemos abordar tres cuestiones:

1.      Selección de una victima

2.      Anulación

3.      Inanición

 




Por: 28-04-2009 por mariuximaza | Categorías asociadas: Capitulo 7

Un interbloqueo se produce cuando dos o más tareas se bloquean entre sí permanentemente teniendo cada tarea un bloqueo en un recurso que las otras tareas intentan bloquear.

CONDICIONES PARA PRODUCIR INTERBLOQUEO

En la política del sistema operativo, deben darse tres condiciones para que pueda producirse un interbloqueo:

1- Condición de exclusión mutua: Cada recurso esta asignado a un único proceso o esta disponible.

2- Condición de posesión y espera: Los procesos que tienen, en un momento dado, recursos asignados con anterioridad, pueden solicitar nuevos recursos.

3- Condición de no apropiación: Los recursos otorgados con anterioridad no pueden ser forzados a dejar un proceso. El proceso que los posee debe liberarlos en forma explicita.

4- Condición de espera circular (o circulo vicioso de espera): Debe existir una cadena circular de dos o mas procesos, cada uno de los cuales espera un recurso poseído por el siguiente miembro de la cadena

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 interbloqeo.

- Los métodos directos que consisten en evitar la aparición del circulo vicioso de espera.

Algoritmo de detección del interbloqueo

Una comprobación para interbloqueo puede hacerse con igual o menor frecuencia que cada solicitud de recursos, dependiendo de que tan probable es que ocurra un interbloqueo. Comprobar cada solicitud de recursos tiene dos ventajas: Conduce a la detección temprana y el algoritmo es simple, de manera relativa porque se basa en cambios crecientes al estado del sistema. Además, las comprobaciones frecuentes consumen un tiempo considerable de procesador.

Los algoritmos de detección de bloqueos implican cierta sobrecarga en tiempo de ejecución:

surge el siguiente interrogante:

¿ compensa la sobrecarga implicita en los algoritmos de detección de bloqueos, el ahorro potencial de localizarlos y romperlos ?.

El empleo de algoritmos de detección de interbloqueo implica cierto gasto extra durante la ejecución. Así pues, se presenta de nuevo la cuestión de costeabilidad, tan habitual en los sistemas operativos. Los algoritmos de detección de interbloqueo determinan por lo general si existe una espera circular.




CAPÍTULO I (Materia: SISTEMAS OPERATIVOS)

El Sistema Operativo

Un sistema operativo es aquel programa que se ejecuta continuamente en la computadora (usualmente denominado kernel), siendo todo lo demás programas del sistema y programas de aplicación.

El sistema operativo controla y coordina el uso del hardware entre los diversos programas de aplicación por parte de los distintos usuarios, por ello se suele decir que es la interfaz de comunicación entre el hardware y el usuario.

Existen sistemas operativos para mainframes, y para computadoras personales (PCs), los sistemas operativos para mainframe están diseñados principalmente para optimizar el uso del hardware, los sistemas operativos para PCs soportan desde complejos juegos hasta aplicaciones de negocios.

Punto de vista del usuario.

Desde el punto de vista de un monousuario un sistema debe ser rápido y fácil de manejar, se dice en este caso que el sistema operativo presta cierta atención al rendimiento y ninguna a la gestión de recursos.

En el caso de un mainframe, el sistema operativo se diseña para maximizar la utilización de recursos, asegurar que todo el tiempo de CPU, memoria y E/S disponibles se usen de forma eficiente, y que cada usuario disponga sólo de la parte equitativa que le corresponde.

Cuando se usan estaciones de trabajo conectadas a redes de otras estaciones de trabajo y servidores, el sistema operativo se diseña parar llegar a un compromiso entre la usabilidad individual y la utilización de recursos.

Vista del usuario.

Desde el punto de vista de la computadora, el OS está más íntimamente relacionado con el hardware. En este contexto podemos ver un sistema operativo como un asignador de recursos.

Un sistema operativo es un programa de control, y como tal gestiona la ejecución de los programas de usuario para evitar errores y mejorar el uso de la computadora. Tiene que ver recíprocamente con el funcionamiento y control de los dispositivos de E/S.

Organizacion de una computadora

Funcionamiento.- Para el funcionamiento de una computadora se necesita un programa de arranque, éste normalmente se almacena en la memoria ROM (read only memory), o en la memoria EEPROM (electrically erasable programable read-only-memory), y se conoce con el término de firmware, dentro del hardware de la computadora. Se inician todos los aspectos del sistema, desde los registros de la CPU hasta las controladoras de dispositivos y el contenido de la memoria. El programa de arranque debe saber cómo cargar el sistema operativo e iniciar la ejecución de dicho sistema, para conseguir este objetivo, el programa de arranque debe localizar y cargar en memoria el Kernel(núcleo) del sistema opertarivo. Después el sistema operativo comienza ejecutando el primer proceso, por ejemplo “init”, y espera a que se produzca algún suceso.

La ocurrencia de un suceso normalmente se indica mediante una interrupción.

Interrupción.- Da paso a un suceso, puede ser de hardware o de software. Cuando se interrumpe a la CPU, deja lo que está haciendo e inmediatamente transfiere la ejecución a una posición fijada.

Estructura de almacenamiento.- Los programas de computadora deben hallarse en la memoria principal (RAM - Random Access Memory) para ser ejecutados. El procesador puede acceder directamente a ésta.

La memoria principal es un dispositivo de almacenamiento volátil que pierde su contenido cuando se quita la alimentación (corriente eléctrica), normalmente la memoria principal es demasiado pequeña como para almacenar todos los programas y datos necesarios de forma permanente.

Por esta razón la mayor parte de los sistemas informáticos proporcionan almacenamiento secundario como una extensión de la memoria principal, aquí se almacenan grandes cantidades de datos de forma permanente.

Estructura de E/S.- Las unidades de E/S están conectadas con el procesador y la memoria principal, y cada una de ellas controla uno o más dispositivos periféricos.

Los dispositivos de E/S se pueden clasificar en:

De interacción con e usuario.-Permiten la comunicación con el usuario del computador.

De interacción con máquinas: Permite la comunicación con elementos del equipo.

De comunicación.- Permite la comunicación con dispositivos remotos.

Arquitectura de un sistema informático

Sistemas Multiprocesador.- En un sistema multiprocesador hay una CPU principal capaz de ejecutar un conjunto de instrucciones de propósito general, incluyendo instrucciones de los procesos de usuario.

Sistemas Multiprocesador.- Disponen de dos o más procesadores que se comunicación entre sí, compartiendo el bus de la computadora y en ocasiones el reloj, la memoria y los dispositivos periféricos.

Sistemas en clúster.- Es otro tipo de sistema multiprocesador. La diferencia con los sistemas multiprocesamiento es que éstos están formados por dos más sistemas individuales acoplados.

Las computadoras en clúster comparten el almacenamiento y se conectan entre sí a través de una LAN.

Normalmente la conexión en clúster se usa para proporcionar un servicio con alta disponibilidad, es decir un servicio que funcionará incluso si uno o más sistemas del clúster fallaran.

Estructura de un Sistema Operativo

Uno de los aspectos más importantes de los sistemas operativos es la capacidad para multi-programar.

Multiprogramación.- Permite organizar la ejecución de los trabajos a fin de mejorar el aprovechamiento de la CPU. Por ejemplo, al solicitar un trabajo E/S, mientras ésta se realiza se selecciona otro trabajo para ejecutarlo.

Sistemas Multitarea (tiempo compartido).- Pueden ejecutar varias tareas simultáneamente (o cuasi-simultáneamente), aprovechando los tiempos ociosos de la CPU. Alternan entre varias tareas, las que se procesan en partes durante pequeños intervalos de tiempo (quantums).

Operaciones Del So

Los SO están controlados mediante interrupciones, para cada interrupción diferentes códigos del sistema operativo determinan que acción hay que llevar a cabo.

Se debe asegurar que un error que se produzca en un programa de usuario solo genere problemas en el programa que se estuviera ejecutando.

Un SO diseñado apropiadamente debe asegurar que un programa incorrecto no pueda dar lugar a que otros programas se ejecuten incorrectamente.

Operación en modo dual

Para asegurar la correcta ejecución del sistema operativo, tenemos que poder distinguir entre la ejecución del código del sistema operativo y del código definido por el usuario.

Necesitamos dos modos diferentes de operación: modo usuario y modo kernel. Un bit denominado bit de modo, se añade al hardware de la computadora para indicar el modo actual kernel o usuario, también podemos diferenciar entre una tarea que se ejecute en nombre de sistema operativo y otra que se ejecute en nombre de usuario.

El modo dual de operaciones nos proporciona los medios para proteger el sistema operativo de los usuarios que puedan causar errores, y también para proteger a los usuarios de los errores de otros usuarios. Esta protección se consigue designando algunas de las instrucciones de máquina que pueden causar daño como instrucciones privilegiadas. Cuando se ejecuta una llamada al sistema, el hardware la trata como una interrupción software.

Temporizador

Se debe utilizar un temporizador para evitar que un único trabajo monopolice el uso del sistema. El temporizador se actualiza al comienzo de cada trabajo. Si el tiempo termina, se produce una interrupción, y el control vuelve al monitor.

Gestión de Procesos

Un programa no hace nada a menos que una CPU ejecute sus instrucciones. Un proceso necesita para llevar a cabo su tarea ciertos recursos, entre los que incluyen tiempo de CPU, memoria, archivos y dispositivos de E/S. Un proceso es un programa en ejecución puede ser un procesador de textos que ejecuta el usuario.

Un proceso es una unidad de trabajo en un sistema. Cada sistema consta de una colección de procesos, siendo algunos de ellos procesos del sistema operativo y el resto procesos de usuario. Todos estos procesos pueden, potencialmente, ejecutarse de forma concurrente.

Gestión de memoria.- Es uno de los elementos principales que caracterizan un proceso es la memoria que utiliza, la asignación de memoria es exclusiva para el proceso que la requiere, es decir, ésta es lógicamente separada de cualquier otro proceso del sistema.

La gestión de memoria es una tarea, cuya responsabilidad recae en el SO.

Consiste básicamente en cargar y descargar procesos en memoria principal para que sean ejecutados, para ello el SO gestiona lo que se conoce como Unidad de Administración de Memoria, el cual es un dispositivo hardware que transforma las direcciones lógicas en físicas.

Gestión de Almacenamiento

Gestión del sistema de archivos

La mayoría de los sistemas operativos tienen sistemas de archivos. Se usan para almacenar datos de manera segura. Están compuestos por particiones, archivos y directorios, y opcionalmente también de archivos de enlace (accesos directos en Windows). Los sistemas de archivos se deben montar, aunque esto lo hace automáticamente el sistema operativo al iniciar la sesión. Algunos SO de red permiten montar los sistemas de archivos de otras computadoras en directorios comunes.

Entre las estructuras que puede tener tenemos: estructura arbórea, grafo acíclico y grafo general. La estructura arbórea es la más sencilla de implementar. Internamente el disco está dividido en bloques físicos (por ej: 512 bytes) y bloques lógicos o clusters (por ej: 4KB). Es bueno que los clúster sean múltiplo del tamaño de los bloques físicos, por razones de eficiencia.

En la estructura de un sistema de archivos tenemos que considerar que, al igual que con la memoria principal, siempre se produce algo de fragmentación, que puede ser interna (dentro de cada clúster o bloque) o externa (entre archivos).

Cada nodo de la estructura se llama archivo o directorio, y tiene un nombre lógico que está directamente relacionado con una posición física dentro del disco. Es responsabilidad de este sistema recuperar los datos dado un nombre de archivo y su ruta de acceso. Esto lo hace usando tablas o punteros.

Por ejemplo el archivo c:materiasoperativos.doc está vinculado con la ubicación 227E-5294-FF12-437D dentro del disco.

Gestión del almacenamiento masivo

La mayoría de sistemas informáticos modernos usan discos como principal medio de almacenamiento en línea, tanto para los programas como para los datos. Por tanto, la apropiada gestión del almacenamiento en disco tiene una importancia crucial en un sistema informático. El sistema operativo es responsable de las siguientes actividades:

Gestión del espacio libre

Asignación del espacio de almacenamiento

Planificación del disco

El almacenamiento terciario no es crucial para el rendimiento del sistema, aunque también es necesario gestionarlo, algunos SO realizan esta tarea, mientras que otros dejan el control de almacenamiento terciario a los programas de aplicación.

Sistemas de E/S

Uno de los propósitos de un sistema operativo es ocultar al usuario las peculiaridades de los dispositivos hardware específico. El subsistema de E/S consta de varios componentes:

Un componente de gestión de memoria que incluye almacenamiento en búffer, gestión de caché y gestión de colas.

Una interfaz general para controladores de dispositivo.

Controladores para dispositivos hardware específicos.

Almacenamiento en Cache

Para amortiguar la lentitud del almacenamiento en dispositivos E/S se usa un almacenamiento de soporte que evita al procesador solicitar byte por byte, y en vez de ello se leen muchos datos con una sola solicitud. Son los buffers y la caché. Los buffers se usan tanto para lectura y escritura de disco, para impresora, monitor, para placa de red, etc. SU misión es agilizar la transferencia emitiendo una sola petición e interrupción para un conjunto de datos. Los tipos de buffers son:

· buffer sencillo

· buffer doble

· circular

La función de la caché es similar a la de los buffers, pero está implementada con circuitos de muy alta velocidad y tienen algunas ventajas tecnológicas como la búsqueda por asociación (que busca en muchas entradas al mismo tiempo).

Nos puede ser muy útil para mejorar el rendimiento poner partes del sistema de archivos en la caché, y cualesquier otros datos que usemos con frecuencia.

Protección y Seguridad

Un mecanismo que controla el acceso de procesos y usuarios a los recursos definidos por un sistema informático. Los mecanismos de protección pueden mejorar la fiabilidad, permitiendo detectar errores en las interfaces entre componentes del sistema.

Un sistema con protección tiene la capacidad de distinguir entre un uso autorizado y no autorizado. Un sistema puede tener la protección adecuada pero estar expuesto a fallos y permitir accesos inapropiados.

Es responsabilidad de los mecanismos de seguridad defender al sistema frente a ataques internos y externos y los ataques incluyen virus, gusanos, denegación de servicios, etc.

La protección y la seguridad requieren que el sistema pueda distinguir a todos sus usuarios y grupos de usuarios.

Sistemas Distribuidos

Un sistema distribuido es una colección de computadoras físicamente separadas y posiblemente heterogéneas que están conectadas en red para proporcionar a los usuarios acceso a los diversos recursos que el sistema mantiene. Acceder a un recurso compartido incrementa la velocidad de cálculo, la funcionalidad, la disponibilidad de los datos y la fiabilidad. Algunos sistemas operativos generalizan el acceso a red como una forma de acceso a archivo, manteniendo los detalles de la conexión de red en el controlador de dispositivos de la interfaz de red.

Un sistema operativo distribuido proporciona un entorno menos autónomo. Los diferentes sistemas operativos se comunican de modo que se crea la ilusión de que un único sistema operativo controla la red.

Sistemas de Propósito General

Sistemas embebidos en tiempo real

Computadoras predominantes actualmente (motores de automóviles, robots para fabricación), tienen tareas específicas. Los sistemas en los que operan son primitivos, disponen de interfaz limitada. Por lo general se encargan de monitorizar y gestionar dispositivos hardware.

Los sistemas embebidos casi siempre ejecutan sistemas operativos en tiempo real. Las computadoras con sistemas embebidos pueden ser:

• De propósito general que ejecuta sistemas operativos estándar, con aplicaciones de propósito especial para implementar la funcionalidad.

• Sistemas de hardware con sistemas operativos embebidos de propósito especial que sólo proporcionan la funcionalidad deseada.

Dispositivos de hardware con circuitos integrados específicos de la aplicación, que realizan sus tareas sin ningún SO.

Sistemas Multimedia

La mayor parte de los sistemas operativos están diseñados para gestionar datos convencionales, como archivos de texto, programas. Surgen con la incorporación de datos multimedia.

Las aplicaciones multimedia incluyen archivos de audio, películas de DVD, videoconferencia, webcats.

Sistemas de Mano

Los sistemas de mano incluyen PDA, tales como los Palm muchos de los cuales usan sistemas operativos embebidos de propósito especial. Los desarrolladores de aplicaciones y sistemas de mano se enfrentan a muchos retos, la mayoría de ellos debidos al tamaño.

Los dispositivos tienen muy poca memoria, procesadores lentos y pantallas de visualización pequeñas. Usan SO embebidos de propósito especial. Los problemas básicos que enfrentan son la poca memoria, los procesadores lentos y la E/S.

Entornos informáticos

Sistema informático tradicional

Actualmente proporciona más formas de acceso a estos entornos informáticos. La tecnología web se está extendiendo Portales Servicios, acceso a internet, con cómodos.

Hoy en día, los sistemas tradicionales de tiempo compartido no son habituales. Las mismas técnicas de planificación se usan todavía en estaciones de trabajo y servidores, aunque frecuentemente los procesos son todos propiedad del mismo usuario.

Estructuras De Sistemas Operativos

El sistema operativo presta ciertos servicios a los programas y a los usuarios de dichos programas. Estos servicios del sistema operativo se proporcionan para comodidad del programador, con el fin de facilitar la tarea de desarrollo.

Un cierto conjunto de servicios del sistema operativo proporciona funciones que resultan útiles al usuario:

Interfaz de usuario.- tipos existentes es la interfaz de línea de comandos, que usa comandos de texto, otro tipo es la interfaz de proceso por lotes. Habitualmente se utiliza una interfaz grafica de usuario.

Ejecución de programas.- Para ejecutar un programa es preciso realizar una serie de tareas. Las instrucciones y los datos deben cargarse en memoria principal, los dispositivos de E/S y los ficheros deben iniciarse, y deben prepararse otros recursos. El sistema operativo proporciona todo eso al usuario.

Operaciones de E/S.- Cada dispositivo de E/S necesita su conjunto particular de instrucciones y señales de control para poder operar. El sistema operativo se encarga de esos detalles para que el programador pueda pensar simplemente en términos de lecturas y escrituras.

Manipulación del sistema de archivos.- los programas necesitan ejecutar algunas operaciones sobre archivos y directorios como pueden ser: leer, escribir, crear, borrar, buscar; estos incluyen mecanismos de gestión de permisos para conceder o denegar el acceso a los archivos o directorios.

Comunicaciones.- los procesos necesitan intercambiar información con otros procesos, estas comunicaciones se pueden realizar a través de memoria compartida o por paso de mensajes.

Detección de errores.- El SO necesita detectar los posibles errores que surjan ya sea en el Hardware del procesador y de memoria, en un dispositivo de E/S o en programas de usuario.

Otros servicios orientados a garantizar la eficiencia del propio sistema entre los cuales están:

Asignación de recursos.- El SO gestiona muchos tipos diferentes de recursos; algunos pueden disponer de código software especial que gestione su asignación, otros pueden tener código que gestione de forma general.

Responsabilidad.- Conviene hacer un seguimiento de que usuarios emplean que clase de recursos de la computadora y en que cantidad.

Protección y seguridad.- La protección es asegurar que todos los accesos a los recursos del sistema estén controlados y garantizar la seguridad del sistema frente a posibles intrusos, mediante una contraseña.

Interfaz de usuario del sistema operativo

Interprete de comandos

Estos se conoce también como Shell, la función principal es obtener y ejecutar el siguiente comando especificado por el usuario. Algunos SO lo incluyen en el Kernel otros lo tratan como un programa especial que se ejecuta cuando se inicia un trabajo o una sesión.

Interfaz grafica de usuario

Los usuarios emplean un sistema de ventanas y menús controlables por medio del ratón.

Permite que el usuario interactue con el Sistema Operativo a través de una interfaz

Llamadas al sistema

Las llamadas al sistema proporcionan una interfaz con la que poder invocar los servicios que el sistema operativo ofrece. Es la única forma en la que un programa puede solicitar operaciones al SO.

Programas del sistema

Los programas del sistema proporcionan un cómodo entorno para desarrollar y ejecutar programas, pueden dividirse en las siguientes categorías.

Administración de Archivos: Estos programas crean, borran, copian, cambian de nombre, imprimen etc. De forma general manipulan archivos.

Información de Estado: Algunos programas solicitan al sistema la fecha, la hora, cantidad de memoria, espacio en disco, usuario.

Modificación de Archivos: editores de texto para crear y modificar el contenido de los archivos almacenados en el disco o en otros dispositivos.

Soporte de Lenguajes de Programación: Se proporcionan compiladores, ensambladores, depuradores en intérpretes para los lenguajes de programación (C, C++, Java).

Carga y Ejecución de Programas: los programas compilados deben cargarse en memoria para poder ejecutarse.

Comunicaciones: Proporcionan los mecanismos para crear conexiones virtuales entre procesos, usuarios y computadores.

Diseño e implementación del sistema operativo

Objetivos del diseño

Objetivos de Usuario: los usuarios desean ciertas propiedades como: sistema sea cómodo, fácil de utilizar y aprender, fiable, seguro y rápido.

Objetivos del Sistema: el sistema debería ser fácil de diseñar, implementar y mantener, flexible, fiable, libre de errores y eficiente.

Mecanismos y políticas

Un principio importante es el de separar las políticas de los mecanismos. Los mecanismos determinan como hacer algo, las políticas determinan que hacer.

La separación de políticas y mecanismos es importante por cuestiones de flexibilidad.

Implementación

Tradicionalmente los SO tenían que escribirse en lenguaje ensamblador hoy en día se escriben en Lenguaje de Alto Nivel como C o C++.

La Ventajas de usar un lenguaje de alto nivel:

El código puede escribirse más rápido, es más compacto y es más fácil de entender y depurar.

Las posibles desventajas de implementar un SO es un lenguaje de alto nivel se reducen a los requisitos de velocidad y de espacio de almacenamiento.

Estructura del sistema operativo

Un método habitual consiste en dividir la tarea en componentes más pequeños, en lugar de tener un Sistema Monolítico. Cada uno de estos módulos debe ser una parte bien definida del sistema, con entradas, salidas y funciones cuidadosamente especificadas.

Estructura simple

Proporciona la máxima funcionalidad en el menor espacio posible, por lo que no fue dividido en módulos de forma cuidadosa.

El kernel se divide en una serie de interfaces y controladores de dispositivo, que se han ido añadiendo y ampliando a lo largo de los años. El kernel proporciona el sistema de archivos, los mecanismos de planificación de la CPU, la funcionalidad de gestión de memoria y otras funciones del sistema operativo, a través de las llamadas al sistema.

Estructura en niveles

El sistema operativo se divide en una serie de capas, El nivel inferior (nivel 0) es le Hardware y el nivel superior (Nivel N) es la interfaz de usuario, también puede mantener un control mayor sobre la computadora y sobre las aplicaciones que hacen uso de dicha computadora.

Los niveles se seleccionan de manera que cada uno usa sus funciones y servicios de los niveles inferiores. Un nivel no necesita saber cómo se implementan las operaciones solo necesitan saber que hacen esas operaciones. Un problema con la implementación por niveles es que tiende a ser menos eficientes a ser menos que otros tipos de implementación

Microkernels

Normalmente los microkernels proporcionan una gestión de memoria y de procesos mínima, además un mecanismo de comunicaciones.

Su función principal es proporcionar un mecanismo de comunicaciones entre el programa cliente y los distintos servicios que se ejecutan en el espacio de usuario. Otra ventaja del microkernel es la facilidad para ampliar el sistema operativo, proporciona mas seguridad y fiabilidad, dado que la mayor parte de los servicios se ejecutan como procesos de usuario, en lugar de procesos de kernel.

Los microkernel pueden tener un rendimiento peor que otras soluciones debido a la carga de procesamiento adicional impuesta por las funciones del sistema.

Módulos

La mejor metodología es usar técnicas de programación orientada a objetos para crear un kernel modular, Tal estrategia utiliza módulos que se cargan dinámicamente y resulta habitual en las implementaciones modernas de UNIX.

Maquinas Virtuales

La idea fundamental que subyace a una maquina virtual es la de abstraer el hardware de la computadora formando varios entornos de ejecución diferentes, creando así la ilusión de que cada entorno de ejecución esta operando en su propia computadora privada.

Compartir el mismo hardware pero poder operar con entornos de ejecución diferentes (distintos SO) de forma concurrente ya que este proporcionan una interfaz idéntica a la del propio SO.

Implementación

Las acciones que dan lugar a la transferencia del modo usuario al modo kernel en una maquina real también tienen que hacer que se pase del modo usuario virtual al modo kernel virtual en una maquina virtual.

Tal transferencia puede conseguirse cuando se hace una llamada al sistema por parte de un programa que se este ejecutando en una maquina virtual en modo usuario virtual, se produce una transferencia al monitor de la maquina virtual en la maquina real.

Beneficios

Existe una protección completa de los diversos recursos del sistema. Cada maquina esta completamente aislada de las demás, por lo que no existen problemas de protección. Un sistema de maquina virtual es un medio perfecto para la investigación y el desarrollo de SO.

Ejemplos

VMware

Es una popular aplicación comercial que abstrae el hardware de Intel creando una serie de maquinas virtuales aisladas. Permite al sistema Host ejecutar de forma concurrente varios sistemas operativos huésped diferente como máquinas virtuales independientes.

Máquina Virtual Java:

La JVM es una especificación de una computadora abstracta, puede implementarse por software encima de un SO host (Windows, Linux, Mac OS X) o como parte de un explorador Web.


Resumen de cap1 y 2 : POR Esteban Chamba Jiménez

Libro: Fundamentos de sistemas operativos <SILBERSCHAT – GALVIN - GAGNE>

Otras Referencias

STALLINGS Organización y arquitectura de computadores.

PUENTE P. Andrés G. Universidad del BíoBío

http://www.alipso.com/monografias4/Sist_operativos/




Por: 21-04-2009 por pecaamano | Categorías asociadas: Capitulo 7

La administración de los recursos es una de las principales tareas del sistema operativo.

• Los sistemas operativos tienen que ofrecer mecanismos que permitan a los procesos acceder de forma exclusiva a este tipo de recursos.

• Cuando un proceso solicita ciertos recursos y éstos no están disponibles en ese momento, entra en un estado de espera.

• Requerir el acceso exclusivo no sólo a un recurso, sino a varios.

Un conjunto de procesos se encuentra en estado de interbloqueo cuando cada uno de ellos espera un suceso que sólo puede originar otro proceso del mismo conjunto.

Condiciones para que se produzca interbloqueo

Puede surgir si y sólo si en un sistema se presentan simultáneamente las condiciones:

– Exclusión mutua.

– Retención y espera

– No expropiación

– Espera circular

• No son completamente independientes

Un ejemplo clásico de interbloqueo es el interbloqueo de tráfico

interbloqueo

Métodos para el tratamiento del interbloqueo

PREVENCIÓN

Objetivo: conseguir que sea imposible la aparición de situaciones de interbloqueo impedir que se produzca una de las cuatro condiciones necesarias para producirlo:

Exclusión mutua, retención y espera, no expropiación, espera circular.

EXCLUSIÓN MUTUA

– Existen recursos para los que no es posible negar la condición de exclusión mutua

– Ficheros: permiten múltiples accesos de lectura, pero únicamente un proceso puede escribir a la vez

– Es posible eliminar la condición de exclusión mutua en algunos recursos.

– Impresora Spooler.

RETENCIÓN Y ESPERA. - Forzar a un proceso a que libere todos los recursos que retiene cada vez que solicite un recurso que no esté disponible.

El proceso solicita los recursos de forma incremental a lo largo de su ejecución, pero libera todos los recursos retenidos si se encuentra con una negativa. Los cambios hechos sobre la memoria o sobre ficheros pueden corromper el sistema si no se llevan a término.

NO EXPROPIACIÓN

• Permitir que el sistema revoque la propiedad de ciertos recursos a los procesos bloqueados.

ESPERA CIRCULAR

• Ordenación lineal de los diferentes tipos de recursos del sistema.

• Los recursos del sistema se dividen en clases diferentes Cj,

• Los interbloqueos se previenen con 2 restricciones:

1 exigiendo que todos los procesos soliciten y adquieran sus recursos en un orden estrictamente creciente de las clases mencionadas.

2 La adquisición de todos los recursos pertenecientes a una misma clase debe efectuarse con una sola petición (no incrementalmente).




Por: 21-04-2009 por Jorge Luis Veintimilla O. | Categorías asociadas: Capitulo 7

RESUMEN CAP. 7 “INTERBLOQUEOS”

Un interbloqueo o bloqueo mutuo se puede definir como el bloqueo permanente de un conjunto de procesos que compiten por los recursos del sistema.

un proceso puede emplear un recurso siguiendo la siguiente secuencia:

  1. Solicitud: si la solicitud no puede ser concedida inmediatamente, entonces el proceso solicitante tendrá que esperar hasta que pueda adquirir el recurso.
  2. Uso: el proceso puede operar sobre el recurso.
  3. Liberación: el proceso libera el recurso.

Un interbloqueo se puede dar en las siguientes condiciones necesarias:

  • Exclusión mutua: al menos un recurso debe estar en modo no compartido.
  • Retención y espera: un proceso debe estar reteniendo al menos un recurso y esperando para adquirir otros recursos adicionales.
  • Sin desalojo: los recursos solo pueden ser liberados voluntariamente por el proceso que los retiene.
  • Esperar circular: debe existir un conjunto de procesos en espera, tal que cada proceso esté esperando a un recurso determinado.

Cuando ocurre un interbloqueo lo podemos tratar de tres formas:

  • La utilización de un protocolo para evitar los interbloqueos, asegurando que el sistema nunca entre en estado de interbloqueo.
  • Permitir que el sistema entre en un estado de interbloqueo, detectarlo y realizar una recuperación.

  • Ignorar los interbloqueos en el sistema.

Para tratar los interbloqueos, existen los algoritmos de prevención de interbloqueos, los cuales restringen el modo en que pueden hacerse las solicitudes, estas restricciones aseguran que al menos una de las condiciones necesarias para que haya interbloqueo no se produzca y, por tanto no pueda aparecer interbloqueos. El contra de utilizar estos algoritmos es de que se da una baja tasa de utilización de los dispositivos y un menor rendimiento del sistema.

BIBLIOGRAFÍA

  • SILBERSCHATS, GALVIN, GAGNE, “Fundamentos de Sistemas Operativos”, Séptima Edición, McGraw-Hill, España, 2006

Enlaces Web:

  • http://technet.microsoft.com/es-es/library/ms177433.aspx
  • http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/MonogSO/CINTIN02.htm



Por: 21-04-2009 por smcarrion | Categorías asociadas: Capitulo 7, Paralelo "B", Uncategorized

Nombre: Stalin Carrión Pardo

INTERBLOQUEOS

Un sistema constante un número finito de recursos, que se distribuyen entre una serie de procesos en competición, los recursos se dividen en varios tipos costando cada uno de ellos de un cierto número de instancias. El espacio de memoria, los ciclos de cerca de CPU, los archivos y dispositivos de E/S.
si un proceso solicita una instancia de un tipo de recurso, la asignación de cualquier instancia del tipo satisfará la solicitud.
Un proceso debe solicitar cada recurso antes de utilizarlo y debe liberarlo después de usado, podemos decir que un proceso puede solicitar tantos recursos como necesite para llevar a cabo las tareas que tengan asignadas, un proceso puede emplear un recurso siguiendo la siguiente secuencia:

1. Solicitud: si la solicitud no puede ser concedida inmediatamente, entonces el proceso solicitante tendrá que esperar hasta que pueda adquirir el recurso.

2. Uso: el proceso puede operar sobre el recurso.
3. Liberación: el proceso libera el recurso.
La solicitud y liberación de los recursos que sistema operativo no gestiona puede hacerse mediante las operaciones wait() y signal() de los semáforos, o a través de la adquisición y liberación de un cerrojo mútex.
Los interbloqueos también pueden implicar tipos de recursos diferentes.
Los programas multihebra son buenos candidatos para los interbloqueos, porque las distintas hebras pueden competir por la utilización de recursos compartidos.
En un interbloqueo los procesos nunca terminan de ejecutarse y los recursos del sistema están ocupados, lo que impide que se inicien otros trabajos.

Condiciones necesarias en un sistema:
1. Exclusión mutua: al menos un recurso debe estar en modo no compartido; es decir sólo un proceso puede usarlo cada vez.
2. Retención y espera: un proceso debe estar reteniendo al menos un recurso y esperando para adquirir otros recursos adicionales que actualmente esten retenidos por otros procesos.
3. Sin desalojo: los recursos no puede ser desalojados, es decir un recurso sólo puede ser liberado voluntariamente por el proceso que le retiene después de que dicho proceso haya terminado su tarea.
4. Espera circular: debe existir un conjunto {Po P1,…., Pn} de procesos en espera.

Los interbloqueos pueden definirse de forma más precisa mediante un grafos dirigido que se llaman grafos de asignación de recursos del sistema, esperanzó constante un conjunto de vértices V y de un conjunto de aristas E.

Métodos para tratar los interbloqueos

Podemos abordar el problema de los interbloqueos de una de tres formas:
podemos emplear un protocolo para impedir puede evitar los interbloqueos, asegurando que el sistema nunca entre en estado de interbloqueo.

  • Podemos permitir que sistema entre en estado de interbloqueo, detectarlo y realizar una recuperación.
  • Podemos ignorar el problema y actuar como si nunca se produjeran interbloqueos en el sistema.

Para garantizar que nunca se produzcan interbloqueos, el sistema puede emplear un esquema de prevención de interbloqueos o un esquema de evasión de interbloqueos. La prevención de interbloqueos proporciona un conjunto de métodos para asegurarse que al menos una de las condiciones necesarias no pueda cumplirse.
La evasión de interbloqueos requiere que se proporcione de antemano al sistema operativo información adicional sobre qué recursos solicitara y utilizará un proceso durante su tiempo de vida.
Un método alternativo para evitar los interbloqueos consiste en requerir información adicional sobre cómo van a ser solicitados los recursos, por ejemplo en un sistema que disponga de una unidad de cinta y de una impresora, el sistema necesita saber que el proceso P va a requerir primero la unidad de cinta y después la impresora antes de liberar ambos recursos, mientras que proceso Q va a requerir primero la impresora y luego la unidad de cinta.
Un estado es seguro si el sistema puede asignar recursos a cada proceso en determinado orden sin que esto produzca un interbloqueo, un sistema esta en estado seguro sólo si existe lo que se denomina una secuencia segura.
Si tenemos un sistema de asignación de recursos con sólo una instancia de cada tipo de recursos, puede utilizarse una variante de grafos de asignación de recursos para evitar los interbloqueos.
El algoritmo del grafo de asignación de recursos no es aplicable a los sistemas de asignación de recursos con múltiples instancias de cada tipo de recurso, el algoritmo del banquero se eligio con este nombre porque el algoritmo podría utilizarse en los sistemas bancarios para garantizar el banco nunca asigne sus fondos disponibles de tal forma que no pueda satisfacer las necesidades de todos sus clientes, cuando entra en el sistema un proceso nuevo debe declarar un número máximo de instancias de cada tipo de recursos que pueden necesitar.
Si un sistema no emplea ni algoritmo de prevención ni de evasión de interbloqueos entonces puede producirse una situación de interbloqueo en el sistema en este caso el sistema debe proporcionar:

  • Un algoritmo que examine el estado del sistema para determinar si se ha producido un interbloqueo.
  • Un algoritmo para recuperarse del interbloqueo.

Cuando un algoritmo de detección determina que existen interbloqueo tenemos varias alternativas, una posibilidad es informar al operador que se ha producido un interbloque o y dejar que la trata de forma manual otra posibilidad es dejar que sea el sistema el que haga la recuperación del interbloqueo de forma automática.

Para eliminar los interbloqueos interrumpiendo un proceso, se utiliza uno de los dos posibles métodos:
interrumpir todos los procesos interbloqueados: este método interrumpirá el ciclo de interbloqueo, pero a un precio muy alto.
Interrumpir un proceso cada vez hasta que el ciclo de interbloqueo se elimine: este método requiere una gran cantidad de trabajo adicional, ya que después de haber interrumpido cada proceso hya que invocar un algoritmo de detección de interbloqueos para determinar si todavía hay procesos en interbloqueo.
Para eliminar los interbloqueos utilizando el método de apropiación de recursos, desalojamos de forma sucesiva los recursos de los procesos y asignamos dichos recursos a otros procesos hasta que el ciclo de interbloqueo se interrumpa.




Por: 21-04-2009 por mizarate | Categorías asociadas: Capitulo 3, Capitulo 7, Mecanismos de sincronización, Paralelo "A", Taller Capitulo 3

Por: Marilin Zárate

Sincronización en Solaris:

Solaris proporciona mútex adaptativos, variables de condición, semáforos, bloqueos o cerrojos lector-escritory colas de bloqueo para controlar el acceso a las secciones múltiples.

Un mútex adaptativo protege el acceso a todos los elementos de datos críticos, en un sistema multiprocesador este se inicia como un semáforo estándar, implementando un cerrojo de bucle sin fin. Solaris utiliza este método para proteger los datos a los que se accede mediante segmentos de código secreto.

Los bloqueos lector-escritor son utilizados por Solaris para proteger aquellos datos a los que se accede frecuentemente, pero que habitualmente se usan en modo dólo de lectura.

Solaris también utiliza colas de bloqueos para ordenar la lista de hebras en espera de adquirir un mútex adaptativo o un cerrojo lector-escritor, esta cola de bloqueos es una estructura de ola que contiene hebras que están a la espera de adquirir un cierto cerrojo.

Sincronización en Windows XP

El SO Windows XP es un kernel multihebra que proporciona soporte para aplicaciones en tiempo real y múltiples procesadores. Cuando este kernel accede a un recurso global en un sistema monoprocesador, enmarcan de forma temporal a las interrupciones.

Windows XP proporciona objetos despachadores, asi las hebras se sincronizan empleando diferentes mecanismos, ya sea mútex, semáforos, sucesos y temporizadores.

Sincronización en Linux

En la versión anterior Linux era un kernel no apropiativo, lo que quiere decir que un proceso que se ejecute en kernel no puede ser desalojado. Pero ahora en la nueva versión el kernel es apropiativo. Este kernel proporciona bloqueos mediante bucles sin fin y semáforospara establecer bloqueos en kernel.

Linux utiliza un método para activar y desactivar los mecanismo de desaojo de kernel, es decir proporciona dos llamadas al sistema: preempt_disable() y preempt enable(). El kernel no es desalojable si hay una tarea en modo kernel que este manteniendo un bloqueo.

Sincronización en Pthreads

La API de Pthreads proporciona cerrojos mútex, variables de condición y cerrojos de lectura-escritura para la sincronización de hebras. Un cerrojo mútex es muy importante en Phtreads y se usa para proteger las secciones críticas de código.




Por: 21-04-2009 por mariuximaza | Categorías asociadas: Capitulo 7

INTERBLOQUEOS

Un proceso en espera no puede nunca cambiar de estado, porque los recursos que ha solicitado estén en ocupados por otros procesos a que a su vez estén en espera de otros recursos ocurriendo de esta manera un interbloqueo.

Un sistema consta de un número finito de recursos que se distribuyen entre la serie de procesos en competición. Los recursos se dividen en varios tipos, y estos  a su vez tienen cierto numero de instancias.
Con la secuencia de solicitar, usar y liberar un proceso puede emplear un recurso cuando se encuentre en un modo operacional normal.

Si se dan las siguientes condiciones puede surgir un interbloqueo:

1.Exclusión mutua: al menos un recurso debe estar en modo no compartido.
2.Retención y espera: un proceso debe estar retenido al menos un recurso y esperando para adquirir otros recursos adicionales.
3.Sin desalojo: los recursos no pueden ser desalojados; puede ser liberado voluntariamente por el proceso que le retiene.
4.Esperar circular: debe existir un conjunto de procesos en espera, tal que este proceso esté esperando a un recurso retenido por P1, P1 esté esperando a un recurso retenido por P2, …,Pn-1 esté esperando a un recurso retenido por Pn, y Pn esté esperando a un recurso retenido por P0.

Estas condiciones nos servirán como prevenciones para evitar un interbloqueo.

En general, el problema de interbloqueos podemos tratar tres formas de métodos:

- Podemos emplear un protocolo para impedir o evitar los interbloqueos, asegurando que el sistema nunca entre en estado de interbloqueo.
- Podemos permitir que el sistema entre en interbloqueo, detectarlo y realizar una recuperación.
- Podemos ignorar el problema y actuar como si nunca se produjeran interbloqueos en el sistema.
Para la evasión de los interbloqueos los algoritmos de prevención de interbloqueos impiden los interbloqueos restringiendo el modo en que pueden hacerse las solicitudes, estas restricciones aseguran que al menos una de las condiciones necesarias para que haya interbloqueo no se produzca y, por tanto no pueda aparecer interbloqueos.
Sin embargo, esta técnica de prevención de interbloqueos tiene algún posible efecto colateral, como son una baja tasa de utilización de los dispositivos y un menor rendimiento del sistema. Un posible método para evitar los interbloqueos consiste en requerir información adicional sobre cómo van a hacer solicitados los recursos.
Si un sistema no emplea ni algoritmos de prevención ni de evasión de interbloqueos, entonces puede producirse una situación de interbloqueo en el sistema.
Si esto llega a suceder se debe tomar encuenta:
• Un algoritmo que Examine el estado del sistema para determinar si se ha producido un interbloqueo.
• Un algoritmo para recuperarse del interbloqueo.

Cuando el algoritmo de detección determina que existe un interbloqueo,         tenemos varias alternativas. Una posibilidad es informar al operador de que se ha producido un interbloqueo y dejar que lo trate de forma manual, la otra consiste en desalojar recursos de uno o más de los procesos bloqueados.




Por: 21-04-2009 por rasisalima | Categorías asociadas: Capitulo 7, Paralelo "B"

Nombre: Ronald Sisalima

Capitulo 7

Interbloqueos

En un entorno de multiprogramación varios procesos pueden competir por un número finito de recursos. Un procesos solicita recursos y, si los recursos no están disponibles en ese momento, el proceso pasa al estado de espera. Es posible que algunas veces, un proceso en espera no pueda nunca cambiar de estado, porque los recursos que ha solicitado estén ocupados por otro proceso que a su vez esté esperando de otros recursos. Cuando se produce una situación como esta se dice que ha ocurrido un interbloqueo.

7.1 Modelo de sistema

Un sistema consta de un número finito de recursos, que se distribuyen entre una serie de procesos en competición. Los recursos se dividen en varios tipos, constando cada uno de ellos de un cierto número de instancias. El espacio de memoria, los ciclos de CPU, los archivos y dispositivos de E/S son ejemplos de tipos de recursos.

En modo de operación normal, un proceso puede emplear un recurso solo siguiendo esta secuencia:

1. Solicitud

2. Uso

3. Liberación

La solicitud y liberación de los recursos son llamadas al sistema.

7.2 Caracterización de los interbloqueos

En un interbloqueo, los procesos nunca terminan de ejecutarse y los recursos del sistema están ocupados lo que impide que se inicie otro trabajo.

7.2.1 Condiciones Necesarias

Puede surgir si se dan necesaria mente las cuatro condiciones:

1. Exclusión mutua

2. Retención y espera

3. Sin desalojo

4. Espera circular

7.2.2 grafico de asignación de recursos

Los inter bloqueos pueden definirse de forma más precisa mediante un grafico dirigido, que se llama grafico de asignación de recursos de sistema. Este grafico consta de un conjunto de vértices y de un conjunto de aristas. El conjunto de vértices de divide en dos tipos diferentes de nodos, el conjunto formado por todos los procesos activos del sistema, y el conjunto formado por todos los tipos de recursos del sistema.

7.3 Métodos para tratar los inter bloqueos

Podemos abordar el problema de los inter bloqueos de las siguientes tres formas.

• Podemos emplear un protocolo para impedir o evitar los interbloqueos, asegurando que el sistema nunca entre en estado de interbloqueo.

• Podemos permitir que el sistema entre en estado interbloqueo, detectarlo y realizar una recuperación.

• Podemos ignorar el problema y actuar como si nunca se produjeran interbloqueos en el sistema.

La tercera solución es la que utilizan la mayoría de los sistemas operativos.

7.4 Prevención de interbloqueos.

Como se dijo en la sección 7.2.1 para que se produzca un interbloqueo deben cumplirse las cuatro condiciones. Asegurando que un de estas cuatro no se cumplan  podemos prevenir la aparición de interbloqueos. 

Exclusión mutua.- Al menos un recurso debe estar en modo no compartido, es decir, solo un procesos  puede usarlo cada vez. Si otro proceso solicita el recurso, el proceso solicitante tendrá que esperar hasta que el recurso sea liberado.

 Retención y espera.- Un proceso debe estar retenido al menos un recurso y esperando para adquirir otro recurso adicionales que actualmente estén retenidos por otro proceso.

Sin desalojo.- Los recursos no pueden ser desalojados, es decir un recurso solo puede ser liberado voluntariamente por el proceso que le retiene, después de que dicho proceso haya completado su tarea.

Espera circular.- debe existir un conjunto de procesos en espera, tal que este proceso esté esperando a un recurso retenido por P1, P1 esté esperando a un recurso retenido por P2, …,Pn-1 esté esperando a un recurso retenido por Pn, y Pn esté esperando a un recurso retenido por P0.

7.5 Evasión de interbloqueos

Los algoritmos de prevención de interbloqueos impiden los interbloqueos restringiendo el modo en que pueden hacerse las solicitudes, estas restricciones aseguran que al menos una de las condiciones necesarias para que haya interbloqueo no se produzca y, por tanto no pueda aparecer interbloqueos.

Sin embargo, esta técnica de prevención de interbloqueos tiene algún posible efecto colateral, como son una baja tasa de utilización de los dispositivos y un menor rendimiento del sistema. Un posible método para evitar los interbloqueos consiste en requerir información adicional sobre cómo van a hacer solicitados los recursos.

7.6 Detección de interbloqueos.

Si un sistema no emplea ni algoritmos de prevención ni de evasión de interbloqueos, entonces puede producirse una situación de interbloqueo en el sistema. En este caso el sistema debe proporcionar:

• Un algoritmo que Examine el estado del sistema para determinar si se ha producido un interbloqueo.

• Un algoritmo para recuperarse del interbloqueo.

7.7 Recuperación de interbloqueos 

Cuando el algoritmo de detección determina que existe un interbloqueo, tenemos barias alternativas. Una posibilidad es informar al operador de que se ha producido un interbloqueo y dejar que lo trate de forma manual. Otra forma es dejar que el sistema sea el que haga la recuperación del interbloqueo de forma automática. Existen dos opciones para romper un interbloqueo una de ellas consiste en interrumpir uno o más procesos para romper la cadena de espera circular, La otra consiste en desalojar recursos de uno o más de los procesos bloqueados.




Por: 21-04-2009 por acabrera | Categorías asociadas: Capitulo 7

INTERBLOQUEOS
- Cuando muchos procesos compiten por relativamente pocos recursos y el sistema no es capaz de dar servicio a todos los procesos en el sistema.
-  Una carencia de sincronización de procesos puede dar lugar a dos condiciones extremas: El bloqueo mutuo también conocido como(abrazo mortal) y la inanición
BLOQUEO MUTUO
- El bloqueo mutuo es más serio que la inanición (posposición indefinida) porque afecta más de un trabajo (la totalidad del sistema, eventualmente). Los bloqueos mutuos eran poco frecuentes en los primeros sistemas porque los trabajos incluían una lista completa de los recursos que necesitaban para ejecutarse y el sistema operativo se aseguraba que estos estuvieran libres y asignados antes de poner, al trabajo, en la cola de LISTOS.
- Los bloqueos mutuos se hicieron más frecuentes con los sistemas interactivos, porque estos son más flexibles y mejoran el uso de recursos al compartirlos en forma dinámica.

CARACTERISTICAS DE BLOQUEO MUTUO
- Exclusión mutua: solo un proceso por vez puede usar el recurso (solo una persona tiene acceso a un escalón).
-  Retención y espera: debe existir un proceso que esté reteniendo por lo menos un recurso y esté esperando adquirir recursos adicionales que en ese momento estén siendo retenidos por otro proceso (la persona se empeña en no retirarse).
-  No apropiación: un recurso solo puede ser liberado voluntariamente por el proceso que lo está reteniendo, una vez que dicho proceso ha completado su tarea (cada escalón está asignado al que sube, o al que baja, tanto tiempo como sea necesario).
-  Espera circular: (cada persona espera que la otra libere el escalón) debe existir un conjunto {P0, P1, …, P0} de procesos en espera, tal que P0 esté esperando un recurso que está retenido por P1, P1 está esperando un recurso que está retenido por P2, …, Pn–1 está esperando por un recurso retenido por Pn, y Pn está esperando por un recurso retenido por P0 .

MÉTODOS PARA MANEJAR BLOQUEOS MUTUOS
- Podemos utilizar un protocolo para asegurar que el sistema nunca entrará en un estado de bloqueo mutuo.
-   Podemos permitir que el sistema entre en un estado de bloqueo mutuo y luego hacer una recuperación.
-   Podemos ignorar el problema y pretender que los bloqueos mutuos nunca ocurren en el sistema; usado por la mayoría de los sistemas operativos, incluyendo a UNIX

PREVENCIÓN DE BLOQUEOS MUTUOS
- Espera Circular.- Imponer un ordenamiento total de todos los tipos de recursos (numerarlos: impresora = 1, disco = 2, etc), y requerir que cada proceso solicite sus recursos en orden creciente de enumeración (ordenamiento jerárquico que obliga a anticipar el orden en que utilizara los recursos).
-  No Apropiación.- Si un proceso que está reteniendo algunos recursos solicita otro recurso que no le puede ser asignado inmediatamente, entonces todos los recursos que actualmente son retenidos son apropiados (se liberan implícitamente). Los recursos apropiados se agregan a la lista de recursos que  el proceso está esperando. El proceso se reiniciará solamente cuando pueda volver a obtener sus antiguos  recursos, así como los nuevos que está solicitando.

PREVENCIÓN DE BLOQUEOS MUTUOS
- Espera Circular – imponer un ordenamiento total de todos los tipos de recursos (numerarlos: impresora = 1, disco = 2, etc.), y requerir que cada proceso solicite sus recursos en orden creciente de enumeración (ordenamiento jerárquico que obliga a anticipar el orden en que utilizara los recursos).
-  No Apropiación – Si un proceso que está reteniendo algunos recursos solicita otro recurso que no le puede ser asignado inmediatamente, entonces todos los recursos que actualmente son retenidos son apropiados (se liberan implícitamente).  Los recursos apropiados se agregan a la lista de recursos que  el proceso está esperando. – El proceso se reiniciará solamente cuando pueda volver a obtener sus antiguos  recursos, así como los nuevos que está solicitando.

EVITACION DE BLOQUEOS MUTUOS
Los algoritmos de prevención de bloqueos mutuos funcionan  restringiendo la forma en que pueden hacerse las solicitudes; una acción colateral al usar estos algoritmos está una baja utilización de dispositivos, reducción del sistema e inanición de procesos.

DETECCIÓN DE BLOQUEOS MUTUOS
Los bloqueos mutuos se pueden detectar, elaborando graficas de recursos dirigidos y buscando ciclos, este algoritmo se puede ejecutar siempre que sea apropiado: cuando la producción se ha deteriorado o cuando se queje un usuario o cada hora, etc.