Sistemas Operativos
Por: 04-05-2009 por EstebanYomairo | Categorías asociadas: Paralelo "A"

INTERBLOQUEOS

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.

MODELO DEL SISTEMA

El interbloqueo es un problema que afecta a procesos concurrentes que utilizan recursos en un sistema.

Los procesos solicitan recursos al sistema y los liberan cuando ya no los necesitan. Un recurso puede estar disponible o bien asignado a algún proceso.

Ejemplares. Puede haber varios ejemplares de un mismo tipo de recurso (ej. Varias impresoras). En este caso, cuando un proceso solicita un recurso, se le concede cualquiera de los ejemplares que esté disponible.

Si un proceso solicita un recurso que no tiene ejemplares disponibles, el proceso queda bloqueado, esperando hasta que se le asigna un ejemplar.

Esquema de funcionamiento normal

1.- Solicitud.- Si la solicitud no puede ser atendida, entonces el proceso debe esperar.

2.- Uso.- El proceso debe operar sobre le recurso

3.- Liberación.- El proceso debe liberar el recurso.

Características

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

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

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

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

En la mayoría de los casos, estas condiciones son bastantes necesarias. La exclusión mutua hace falta para asegurar la consistencia de resultados y la integridad de la base de datos. De forma similar, la apropiación no se puede aplicar arbitrariamente y, cuando se encuentran involucrados recursos de datos, debe estar acompañada de un mecanismo de recuperación y reanulación, que devuelva un proceso y sus recursos a un estado previo adecuado, desde el que el proceso puede finalmente repetir sus acciones.

Puede no existir interbloqueo con solo estas tres condiciones. Para que se produzca interbloqueo, se necesita una cuarta condición:

4.- Espera circular: 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.

Las tres primeras condiciones son necesarias, pero no suficientes, para que exista interbloqueo. La cuarta condición es, en realidad, una consecuencia potencial de las tres primeras. Es decir, dado que se producen las tres primeras condiciones, puede ocurrir una secuencia de eventos que desemboque en un circulo vicioso de espera irresoluble. El circulo de espera de la condición 4 es irresoluble porque se mantienen las tres primeras condiciones. Las cuatro condiciones en conjunto constituyen una condición necesaria y suficiente para el interbloqueo.


GRÁFICA DE ASIGNACIÓN DE RECURSOS


PREVENCIÓN DE INTERBLOQUEOS

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.

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 condicion de exclusión mutua. No obstante, es posible eliminar esta condicion 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 recuersos, 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, ademas, la implementacion de esta técnica puede introducir nuevos motivos de interbloqueo, ya que el spooling emplea una zona de disco finita)

Retencion y espera

La condicion de retencion 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 solucion 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 podria 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 d eneuvo, 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 ultimo esquema evitará el interbloqueo sólo si nho 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 facil, como es el caso de un procesador.

Espera circular

La condición del espera circular 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<j. Entonces, supóngase que dos procesos A y B, están interbloqueados, porque A ha adquirido Ri y solicitado Rj, mientras que B ha adquirido Rj y solicitado Ri. Esta condición es imposible porque implica que i<j y j<i.

Como en la retención y espera, la prevención del circulo vicioso de espera puede ser ineficiente, retardando procesos y denegando accesos a recursos innecesariamente.

EVASIÓN DE INTERBLOQUEOS

Una forma de resolver el problema del interbloqueo, que se diferencia sutilmente de la prevención, es la predicción del interbloqueo. En la prevención de interbloqueo, se obligaba a las solicitudes de recursos a impedir que sucediera , por lo menos, alguna de las cuatro condiciones de interbloqueo. Esto se hace indirectamente, impidiendo la aparición de una de las tres condiciones necesarias (exclusión mutua, retención y espera, no apropiación) o directamente, impidiendo la aparición de un circulo viciosos de espera. Se llega así a un uso ineficiente de los recursos y una ejecución ineficiente de los procesos. Con predicción del interbloqueo, por otro lado, se pueden alcanzar las tres condiciones necesarias, pero se realizan elecciones acertadas para asegurar que nunca se llega al punto de interbloqueo. La predicción, por lo tanto, permite más concurrencia que la prevención.

Con predicción del interbloqueo, se decide dinámicamente si la petición  actual de asignación de un recurso podría, de concederse, llevar potencialmente a un interbloqueo. La predicción del interbloqueo necesita, por lo tanto, conocer las peticiones futuras de recursos.

Enfoques para la predicción del interbloqueo:

-         No iniciar un proceso si sus demandas pueden llevar a interbloqueo.

-         No conceder una solicitud de incrementar los recursos de un proceso si esta asignación puede llevar a interbloqueo.


POR: Esteban Chamba Jiménez

Referencias

SILBERSCHATZ-GALVIN-GAGNE Fundamentos De Sistemas Operativos

http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/SO6.htm

http://exa.unne.edu.ar/depar/areas/informatica/SistemasOperativos/MonogSO/CINTIN02.htm




Por: 04-05-2009 por EstebanYomairo | Categorías asociadas: Paralelo "A"

CAPÍTULO _2.3 (Materia: SISTEMAS OPERATIVOS)

SINCRONIZACIÓN DE PROCESOS

Un proceso es cooperativo si puede afectar o ser afectado por los otros procesos que se están ejecutando en el sistema.

•La cooperación entre procesos requiere: la ejecución concurrente de los mismos, mecanismos de comunicación y mecanismos de sincronización

Al haber procesos concurrentes se deben emplear mecanismos para asegurar la consistencia de los datos.

Como ejemplo, supongamos que tenemos 3 procesos concurrentes que quieren modificar un mismo archivo. Si los 3 acceden a este al mismo tiempo el archivo quedará con valores incorrectos. Para resolver problemas como este se ideó la sección crítica, que es el segmento de código que accede a los recursos. Sólo puede haber una sección crítica en ejecución por vez, así nos aseguramos que los datos quedan consistentes.

La sección crítica

El problema de la seción crítica consiste en diseñar un protocolo que los procesos puedan usar para cooperar de esta forma.

Cualquier solución al problema de la sección crítica deberá satisfacer los tres requisitos siguiente:

· Exclusión mutua.- Si el proceso Pi está ejecutándose en su sección crítica, los demás procesos no pueden estar ejecutando sus secciones críticas.

· Progreso.- Si ningún proceso está ejecutando su sección crítica, y algunos procesos desean entrar en sus correspondientes secciones críticas, sólo aquellos procesos que no estén ejecutando sus secciones restantes pueden participar en la decisión de cuál será el siguiente que entre en su sección crítica, y esta selección no se puede posponer indefinidamente.

· Espera limitada.- Existe un límite en el número de veces que se permite que otros procesos entren en sus secciones críticas después de que un proceso haya hecho una solicitud para entrar en su sección crítica y antes de que la misma haya sido concedida.

Se usan dos métodos generales para gestionar las secciones críticas en los sistemas operativos:

1. Kernels apropiativos.- Permite que un proceso sea desalojado mientras se está ejecutando en modo kernel.

2. Kernels no apropiativos.- No apropiativo no permite que un proceso que se esté ejecutando en modo kernel sea desalojado.

HARDWARE DE SINCRONIZACIÓN

En sistemas de un procesador, el problema de las secciones críticas podría ser resuelto simplemente si pudiéramos deshabilitar las interrupciones mientras una variable compartida está siendo actualizada.

Esta solución no es factible para un sistema con varios procesadores debido a la demora que implica el pasaje de mensajes.

En muchos sistemas existen instrucciones de hardware que pueden ser usadas para resolver el problema de las secciones críticas.

Estas instrucciones permiten ejecutar atómicamente las operaciones de:

– chequear y modificar el contenido de una palabra, o

– intercambiar el contenido de dos palabras

SEMÁFOROS

Las soluciones por hardware presentadas no son fáciles de generalizar a problemas más complejos.

Esta dificultad se puede superar usando una herramienta de sincronización llamada semáforo.

Un semáforo S es una variable entera que solo es accedida a través de dos operaciones atómicas: wait y signal.

wait(S): while S <= 0 do no-op

S := S - 1;

signal(S): S := S +1;

PROBLEMAS CLÁSICOS DE SINCRONIZACIÓN

Buffer finito

Lectores y escritores

Filósofos comensales

Buffer finito

Buffer de tamaño N

Semáforo mutex inicializado en 1

Semáforo full inicializado en 0

Semáforo empty inicializado en N

Lectores Y Escritores

Una zona de memoria es compartida por varios procesos concurrentes

Lectores – sólo lee datos; no efectúan actualizaciones de datos

Escritores – puede leer y escribir

Problema – permitir a múltiples lectores leer simultáneamente; sólo un escritor puede acceder a los datos en forma simultánea.

Recursos Compartidos

Datos

Semáforo mutex inicializado en 1.

Semáforo wrt inicializado en 1.

Entero readcount inicializado en 0.

Problema de los Lectores

3 variantes:

(1) Los lectores tienen prioridad

Muerte por inanición de los escritores

(2) Los escritores tienen prioridad

Muerte por inanición de los lectores

(3) Lectores y Escritores tienen la misma Prioridad

No hay problemas de inanición

EL PROBLEMA DE LOS FILÓSOFOS COMENSALES

Recursos compartidos

Fuente de arroz (datos)

Semáforos chopstick [5] inicializados en 1

MONITORES

Son mecanismos de sicronización de nivel más alto que semáforos. La construcción se realiza a nivel de lenguaje de programación que controla el acceso a datos compartidos.

Un tipo monitor tiene un conjunto de operaciones definidas por el programador que gozan de la característica de exclusión

mutua dentro del monitor.




Por: 04-05-2009 por EstebanYomairo | Categorías asociadas: Mecanismos de sincronización, Paralelo "A"

Sincronización en Solaris

Solaris implementa mútex adaptativo para proteger el acceso a todos los elementos críticos. En un sistema multiprocesador un mútex adaptativo se inicia como un semáforo estándar, implementado como un cerrojo de bucle sin fin.

Cuando los datos están bloqueados, el mútex primeramente lo que hace es comprobar se el cerrojo está mantenido por una hebra que se está ejecutando concurrentemente en otra CPU, y se es así la hebra actual ejecuta un bucle sin fin mientras espera a que el bloqueo esté disponible, pero si la hebra que mantiene el cerrojo no está en ejecución, entonces la hebra actual se bloquea hasta que se libera el cerrojo. Este estado de bloque es para que no se ejecute en un bucle sin fin, ya que probablemente el cerrojo no se libere pronto.

En los sistemas monoprocesador, la hebra que mantiene el cerrojo nunca estará ejecutándose cuando otra hebra compruebe el cerrojo, ya que sólo puede haber una hebra ejecutándose cada vez, aquí las hebras siempre pasan en un estado durmiente.

En Solaris se usa el mútex adaptativo sólo para proteger los datos a los que se accede mediante segmentos de código cortos, máximo unos cientos de instrucciones, si es más largo la solución sería muy ineficiente. Para éstos segmentos largos se usan variables de condición y los semáforos, se el cerrojo ya está en uso, la hebra ejecuta una operación de espera y pasa a estado durmiente. Cuando otra hebra libere el cerrojo, ejecutará una operación signal dirigida a la siguiente hebra durmiente de la cola.

También se usan bloqueos lector-escritor se usan para proteger aquellos datos a los que se accede frecuentemente, pero que por lo general se usan en el modo sólo lectura.

Solaris utiliza colas de bloqueos para orenar la lista de hebras en espera de adquirir un mútex adaptativo o un cerrojo lector-escritor. Una cola de bloqueos es una estructura de coa que contiene las hebras que están a la espera de adquirir un cierto cerrojo.

Sincronización en Windows XP

Windows XP es un kernel multihebra, que proporciona soporte para aplicaciones en tiempo real y múltiples procesadores. En Windows XP cuando se accede a un recurso global en un sistema monoprocesador, se enmascara temporalmente las interrupciones de todas las rutinas de tratamiento de interrupción que también puedan acceder al recurso global. En un sistema multiprocesador protege el acceso a los recursos globales utilizando los bloqueos basados en bucles sin fin.

Para la sincronización de hebras fuera del kernel, proporciona objetos despachadores, de esa manera las hebras se sincronizan empleando diferentes mecanismos compartidos requiriendo que una hebra adquiera la propiedad de mútex para acceder a los datos y libere dicha propiedad cuando termine.

Los sucesos pueden notificar a una hebra en espera que una condición deseada se ha producido.

Los temporizadores se emplean para notificar a una o varias hebras que ha trascurrido un determinado período de tiempo.

Los objetos despachadores pueden estar en estado señalizado o no señalizado. Un estado señalizado indica que el objeto está disponible y que una hebra no se bloqueará cuando adquiera el objeto. Un estado no señalizado indica que el objeto no está disponible y que una hebra se bloqueará cuando intente adquirir el objeto.

sincxp1

Sincronización en Linux

Anteriormente en Linux no podía se desalojado de ninguna manera un proceso que se esté ejecutando en modo kernel, o sea que era un kernel no apropiativo, pero actualmente es apropiativo, de tal manera que sí puede ser desalojada una tarea que se esté ejecutando en modo kernel.

El kernel de Linux proporciona bloqueos mediante bucles sin fin y semáforos, así como versiones lector-escritor de éstos bloqueos para establecer bloqueos en el kernel.

En una máquina SMP, se hace uso de bucles sin fin, y el kernel se diseña de modo que dicho tipo de bloqueo se mantenga sólo durante períodos de tiempo cortos. En las máquinas monoprocesador, se reemplazan los bloqueos de bucle sin fin por un mecanismo de activación y desactivación de la función de apropiación en el kernel.

sinclinux

Linux proporciona llamadas al sistema para activar y desactivar los mecanismos de desalojo del kernel, estas son: preempt_disable(), preempt_enable(). El kernel no es desalojable si hay una tarea modo kernel que esté manteniendo un bloqueo.


Sincronización en Pthreads

Pthreads proporciona cerrojos mútex, variables de condición y cerrojos de lectura-escritura para la sincronización de gebras. Todos esto está disponible en una API para los programadores y no forma parte de ningún kernel. Los cerrojos mútex proporcionan una técnica fundamental de sincronización de procesos, se usan para proteger las secciones críticas de código, es decir, una hebra adquiere el cerrojo antes de entrar en una sección crítica y lo libera al salir de la misma.

Muchos sistemas que usan Pthreads también proporcionan semáforos, aunque éstos no forman parte de del estándar pthreads, otras extensiones también incluyen cerrojos mediante bucle sin fin.


Nos podemos dar cuenta que cada sistema operativo tiene su particularidad para la sincronización de procesos, sin embargo todos tienen mucho en común, y esto es las técnicas que utilizan, claro que cada uno los utiliza en las momentos que han considerado oportuno los desarrolladores del SO y además con sus propios métodos, pero lo que todo buscan en minimizar los costes por consumo de recursos.




Por: 04-05-2009 por jhoanita | Categorías asociadas: Paralelo "A"

Nombre: Jhoana María Rojas Granda.

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.

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.

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.

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

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.

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: 30-04-2009 por brfigueroa | Categorías asociadas: Paralelo "A"

Capítulo VII: Interbloqueos

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 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:

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

o Uso: El proceso puede operar sobre el recurso.

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

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 estén 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 {P0 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, consta de 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.

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

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

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

Para garantizar que nunca se produzcan interbloqueos debe cumplirse cuatro condiciones necesarias.

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

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

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

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

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.

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.

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.

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: 30-04-2009 por brfigueroa | Categorías asociadas: Paralelo "A"

Capítulo VI: Sincronización de Procesos

Un proceso cooperativo es aquel que puede afectar o verse afectado por otro proceso que estén ejecutándose en el sistema. Los procesos cooperativos pueden compartir directamente  un espacio de dirección lógico o compartir los datos solo a través de archivos o mensajes. El primer paso se consigue mediante el uso de procesos ligeros o hebras. El acceso concurrente a datos  compartidos puede dar lugar a incoherencias de datos.

El problema de la sección critica

Cada proceso tiene un segmento de código llamado sección crítica en el que el proceso puede modificar variables comunes, actualizar una tabla, escribir en un archivo. A característica principal del sistema es que, cuando un proceso está ejecutando su sección critica, otro proceso no puede ejecutar su correspondiente sección crítica. Cada proceso debe solicitar permisos para entrar en su sección crítica la sección de código que implementa esta solicitud es la sección de entrada.

1. Exclusión mutua. Si el proceso está ejecutándose en su sección crítica, los demás procesos no pueden estar ejecutando sus secciones críticas.

2. Progreso. Si ningún proceso está ejecutando su sección crítica y algunos procesos desean entrar en sus correspondientes secciones críticas, solo aquellos procesos que no estén ejecutando sus secciones restantes pueden participar en la decisión de cuál será el siguiente que entre en su sección critica, y esta sección no se puede posponer indefinidamente.

3. Espera limitada. Existe un límite en el número de veces que se permite que otros procesos entren en su secciones críticas después de que un proceso haya hecho una solicitud para entrar en su sección critica y antes de que la misma haya sido concedida.

Una solución clásica basada en software al problema de la sección critica conocida con el nombre de solución de Peterson.

La solución de de Peterson requiere que los dos procesos  compartan dos elementos de datos:
Si ambos procesos intentan entrar al mismo tiempo. Solo una de estas asignaciones permanecerán, la otra tendrá lugar, pero será sobre escrita inmediatamente. El valor que adopte decidirá cuál de los dos procesos podrá entrar primero en su sección crítica.

· La exclusión mutua se conserva.

· El requisito de proceso se satisface.

· El requisito de espera limitada se cumple.

Cualquier solución al problema de la sección crítica requiere una herramienta muy simple un cerrojo. Las condiciones de carrera se evitan requiriendo que las regiones críticas se protejan mediante cerrojos. Un proceso debe adquirir un cerrojo antes de entrar en un sección crítica y liberarlo cuando salga de la misma.

Semáforos

Un semáforo S es un variable entrada a la que, dejamos aparte la iniciación, solo se accede mediante dos operaciones atómicas estándar: wait () y signal (). Originalmente. La operación wait () se denomina P (Probar); mientras que signal ()se denomina originalmente V (incrementar).
Todas las modificaciones del valor entero del semáforo en las operaciones deben ejecutarse de forma indivisible. Cuando un proceso modifica el valor del semáforo, ningún otro proceso puede modificar simultáneamente el valor.

Interbloqueos e inanición

La implementación de un semáforo con una cola de espera puede dar lugar a una situación en la que dos o más procesos estén esperando indefinidamente a que se produzca un suceso que solo puede producirse con consecuencia de la operación efectuada por otro de los procesos en espera. Cuando se llega a un estado así se dice que estos procesos se han interbloqueado.
Otro problema con los interbloqueos es el del bloqueo indefinido o muerte por inanición, una situación en la que algunos procesos esperan de forma indefinida dentro de un semáforo.

Monitores


Aunque los semáforos proporcionan un mecanismo adecuado y efectivo para el proceso de sincronización un  uso incorrecto de los mismos puede dar lugar a errores de temporización que son difíciles de detectar, dado que estos errores solo ocurren si tienen lugar algunas secuencias de ejecución concretas y estas secuencias no siempre se producen.
Para abordar tales errores los investigadores han desarrollado estructuras de lenguaje de alto nivel. Como es el tipo monitor.




Por: 30-04-2009 por brfigueroa | Categorías asociadas: Paralelo "A"

Capitulo V: Planificación de la CPU

Los mecanismos de planificación de la CPU son la base de los sistemas operativos multiprogramados.  Mediante la planificación de la CPU entre distintos procesos, el sistema operativo puede hacer que la computadora sea más productiva.

Planificación Apropiativa.

Se debe tomar decisiones sobre planificación cuando:

· Cuando un proceso cambia del estado de ejecución al estado de espera.

· Cuando un proceso cambia del estado de ejecución al estado preparado.

· Cuando un proceso cambia del estado de espera al estado preparado.

· Cuando un proceso termina.

Criterios De Planificación

o Utilización de la CPU. Se define en el rango comprendido entre el 0 y el 100 por cien, mantener a la CPU ocupada.

o Tasa De Procesamiento. Número de procesos que se completan por unidad de tiempo.

o Tiempo De Ejecución. El intervalo que va desde el instante en que se ordena la ejecución de un proceso hasta el instante en que se completa.

o Tiempo De Espera. Es la suma de los periodos invertidos en esperar en la cola de procesos preparados.

o Tiempo De Respuesta. Tiempo que el proceso tarda en empezar a responder, no es el tiempo que tarda en enviar a la salida toda la información de respuesta.

Algoritmos De Planificación

Tienen por objeto maximizar la utilización de la CPU y la tasa de procesamiento y minimizar el tiempo de ejecución, tiempo de espera y tiempo de respuesta.

· Planificación FCFS. Asigna primero la CPU al proceso de primero la solicite, cuando un proceso entre la cola su PCB se coloca al final de la cola, cuando la CPU queda libre asesina al proceso que esté al principio de la cola.

· Planificación SJF. Cuando la CPU está disponible, se asigna al proceso que tiene la siguiente ráfaga de CPU más corta, si es siguiente ráfaga de CPU de los procesos o iguales, se usa la planificación FCFS para romper el empate.

· Planificación Por Prioridades. El algoritmo SJF es un caso especial del algoritmo de planificación por prioridades, la CPU se asigna al proceso que tenga la prioridad más alta, para la cual se asocia el proceso con un número entero.

· Planificación por turnos. Se añade la técnica de desalojo para conmutar entre procesos, en este tipo de sistema se define una pequeña unidad de tiempo, denominada cuanto de tiempo, con franja temporal que se encuentra en el rango comprendido entre 10 y 100 ms, la cola de procesos preparados se trata como una cola circular que es recorrida por el planificador de la CPU asignando la CPU a cada proceso durante un intervalo de tiempo de esta 1 cuanto de tiempo.

· Planificación mediante colas multinivel. Aquí se clasifica los procesos en grupos diferentes, es terrorismo divide la cola de procesos preparados en varias colas distintas los procesos asesinan permanentemente a una cola, cada cola tiene su propia algoritmo de planificación.

· Planificación mediante con las multinivel realimentadas. Este algoritmo permite mover un proceso de una cola a otra para separar los procesos en función de las características de sus ráfagas de CPU.

Multiprocesamiento asimétrico. Consiste en que todas las decisiones sobre la planificación, el procesamiento de E/S y otras actividades del sistema sean gestionados por un microprocesador.
Multiprocesamiento simétrico. Cada uno de los procesadores se auto-planifica.  Todos los procesos pueden estar en una cola como de procesos preparados, o cada procesador puede tener su propia cola privada de procesos preparados.

Mecanismos Multihebra Simétricos. Permiten que varias hembras se ejecuten de forma concurrente, ya que proporcionan varios procesadores físicos.

Planificación De Hebras


El ámbito de contienda se refiere a que en los sistemas que implementan unos modelos muchos a uno y muchos a muchos, la biblioteca de hebras planifica las hebras de nivel de usuario para que se ejecute sobre un proceso LWP disponible.

Podemos incluir algunos criterios para evaluar algoritmos.

· Maximizar la utilización de la CPU bajo la restricción de que el tiempo máximo de respuesta sea igual a un segundo.

· Maximizar la tasa de procesamiento de modo que el tiempo de ejecución sea proporcional al tiempo total de ejecución.

Métodos de evaluación que podemos determinar para evaluar los algoritmos

1. Modelado determinista. Es un tipo de valoración analítica, este método toma una carga de trabajo predeterminada concreta y decide el rendimiento de cada algoritmos para dicha carga de trabajo.

2. Modelos de colas. El análisis de colas puede resultar útil para comparar los distintos algoritmos de planificación, aunque también tiene sus limitaciones.

3. Simulaciones. Nos sirven para obtener una evaluación más precisa de los algoritmos de planificación, ejecutar las simulaciones requiere programar un modelo del sistema informático.

4. Implementación. La única forma completamente precisa de evaluar un algoritmo de planificación es codificándolo, incluyéndolo en el sistema operativo y viendo cómo funciona.  Este método introduce el algoritmo real en el sistema para su evolución bajo condiciones de operación reales.




Por: 30-04-2009 por brfigueroa | Categorías asociadas: Paralelo "A"

Capítulo III: Gestión De Procesos

Un Proceso es un programa en ejecución, es algo más que el código de un programa. Además de código un proceso incluye la actividad actual, que queda representada en el valor actual del PC y por los contenidos de los registros del procesador.

Estados del Proceso:

· Nuevo

· En ejecución

· En espera

· Preparado

· Terminado

Bloque de control de proceso:

o Estado del proceso, puede ser nuevo, preparado, en ejecución, en espera, detenido.

o Contador de programa, indica la dirección de la siguiente instrucción que va ejecutar.

o Registro de la CPU, estos varían en cuanto a número y tipo, esta información debe guardarse junto con el contador de programa cuando se produce una interrupción.

o Información de planificación de la CPU, incluye la prioridad del proceso, los punteros a las colas de planificación y otros parámetros.

o Información de gestión de memoria, información acerca del valor de los registros base y limite, las tablas de páginas o las tablas de segmentos.

o Información contable, información de la cantidad de CPU y de tiempo real empleados, límites de tiempo asignado.

o Información del estado de E/S, información de la lista de dispositivos de E/S asignados.

Cuando se ejecuta un procesador de textos se ejecuta una sola hebra de instrucciones, es decir el usuario no puede escribir simultáneamente caracteres y pasar el corrector ortográfico dentro del mismo proceso.

Planificación de Procesos

· Colas de planificación, a medida que los procesos entran en el sistema, se colocan en una cola de trabajos que contiene todos los procesos del sistema, los procesos que residen en memoria principal y están preparados y en espera de ejecutarse se mantienen en la cola de procesos preparados.

· Planificadores, los procesos están en una cola de planificación. La selección de se realiza mediante un planificador apropiado. Hay planificadores a largo plazo o planificador de trabajos, a corto plazo o planificador de la CPU.

· Cambio de contexto, cuando se produce una interrupción, el sistema tiene que guardar el contexto actual del proceso que se ejecuta en la CPU, de modo que pueda restaurar dicho contexto cuando su procesamiento concluya., suspendiendo el proceso y reanudándolo después.

Operaciones sobre los procesos:

· Creación de procesos: un proceso puede crear otros varios procesos nuevos mientras se ejecuta, para esto se utiliza una llamada sistema específica para la creación de procesos. El proceso creador se denomina proceso padre y los nuevos procesos son los hijos de dicho proceso.

· Terminación de los procesos: un proceso termina cuando ejecuta su última instrucción y pidió sistema operativo que lo elimine usando la llamada sistema exit(). En éste momento proceso puede volver un valor de estado a su proceso padre a través de la llamada al sistema wait().

Un proceso es independiente sino puede afectar o verse afectado por los restantes procesos que se ejecutan en el sistema, cualquier proceso que no comparte datos con ninguno otro proceso es conocido como un proceso independiente.

Existen diferentes razones para proporcionar un entorno que permita la cooperación entre procesos:

· Compartir información: Algunos usuarios están interesados en la información de este, debemos proporcionar un entorno que permita el acceso a dicha información.

· Acelerar los cálculos: Si se desea que una tarea ejecute rápidamente debemos de dividirla en subtareas.

· Modularidad: Si construir el sistema de forma modular, dividiendo las funciones del sistema en diferentes procesos.

· Conveniencia: Un solo usuario pueda querer trabajar en muchas tareas al mismo tiempo.

La comunicación entre procesos en la memoria compartida requiere que los procesos que se estén comunicando establezcan una región de memoria compartida, una región de memoria compartida reside en el espacio de direcciones del proceso que crea el segmento de memoria compartida.

El paso de mensajes proporcionar un mecanismo que permite a los procesos comunicarse y sincronizar sus acciones sin compartir el mismo espacio de direcciones, y es especialmente útil en un entorno distribuido.

En el caso de la comunicación directa cada proceso que desea establecer una comunicación deben nombrar de forma explícita al receptor o transmisor de la comunicación. En este esquema las primitivas send() y receive() se define:

send (P, mensaje)– envía un mensaje al proceso P

receive(Q, mensaje)– recibe un mensaje del proceso Q

El paso de mensajes puede ser con bloqueo sin bloqueo, mecanismos también conocidos como síncrono y asíncrono.

o Envió con bloqueo: El proceso envía se bloquean hasta que proceso receptor recibe los mensajes.

o Envió sin bloqueo: El proceso transmisor envía el mensaje y continúa operando.

o Recepción con bloqueo: El receptor se bloquea hasta que hay un mensaje disponible.

o Recepción sin bloqueo: El receptor extremo mensaje válido o un mensaje ninguno.

En el almacenamiento en búfer los cola se pueden implementar de tres maneras: capacidades 0, capacidad ilimitada y capacidad ilimitada.

Para los sistemas POSIX hay disponibles varios mecanismos IPC, incluyendo los memoria compartida y de paso de mensajes los procesos que deseen acceder a un segmento de memoria compartida deben asociarlo a su espacio de direcciones usando la llamada al sistema shmat().




Por: 30-04-2009 por brfigueroa | Categorías asociadas: Capitulo 1-2

Capítulo I: ¿Qué hace un 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. 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.

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.

Desde el punto de vista de la computadora, el sistema operativo 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.

Organización de una computadora

· Funcionamiento. Para el funcionamiento de una computadora se necesita un programa de arranque, éste normalmente se almacena en la memoria ROM, o en la memoria EPROM, 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 operativo. Después el sistema operativo comienza ejecutando el primer proceso, por ejemplo “init”, y espera a que se produzca algún suceso.

· Estructura de almacenamiento. Los programas de computadora deben hallarse en la memoria principal RAM para ser ejecutados. El procesador puede acceder directamente a ésta.

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

Arquitectura de un sistema informático

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

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

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

Operaciones Del Sistema Operativo

Los Sistema Operativo 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 sistema operativo 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.

· 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. 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. 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: Para que un sistema informático sea cómodo para los usuarios, el sistema operativo proporcionara una vista lógica del sistema de almacenamiento.

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

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

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

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 , 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:

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

· 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

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

Capítulo II: 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.

· Interfaz de usuario: Casi todos los sistemas operativos disponen de una interfaz de usuario, que puede tomar diferentes formas.

· 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:

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

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

o 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

Existen métodos para que los usuarios interactúen con el sistema operativo.

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

2. Interfaz grafica de usuario: Los usuarios emplean un sistema de ventanas y menús controlables por medio del ratón. Permite que el usuario interactué con el Sistema Operativo a través de una interfaz

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.

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.

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.

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.

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

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

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

o 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

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.

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 está ejecutando en una maquina virtual en modo usuario virtual, se produce una transferencia al monitor de la maquina virtual en la maquina real.

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

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




Por: 30-04-2009 por fabricomaldonado | Categorías asociadas: Paralelo "A"

GESTIÓN DE MEMORIA PRINCIPAL

INTRODUCCIÓN
La Memoria Principal es un recurso muy importante que se ha de gestionar, porque se ha de disponer de velocidad.
Hay dos tipos de tiempos cuando hablamos de memoria:
·    Tiempo de acceso Tiempo de finalización de una petición menos el tiempo de inicio de la petición
·    Tiempo de ciclo de la memoria Desde que finaliza una petición hasta que se inicia la siguiente petición. Este se ve detenidamente por el Hardware.
DIRECCIONAMIENTO
Cuando escribimos un programa no indicamos el direccionamiento (donde guardamos el programa). Este se define solamente cuando comenzamos a escribir (donde pone la primera sentencia del programa). La primera línea de código marcará el momento de compilar la dirección de memora 0 relativa. De esta manera los programas son portables por diferentes sistemas y máquinas, separando la carga del programa en memoria de su ejecución
La primera sentencia sería la 0 relativo, seguidas de la 1 relativo,…
Cuando se coge la primera línea del programa para compilar y se pone la primera línea con 0 negativo. Y así el programa será + fácil para ejecutarse.
GESTION DE LA MEMORIA
·    MONOPROGRAMACIÓN
Con la llegada de la monoprogramación y de los sistemas operativos se hace necesario gestionar la memoria de manera que los programas que se querían cargar a la memora no pisen (borren,…) la memoria reservada al sistema operativo. Cuando se terminaba un proceso comienza el siguiente.
Programa en C Compilación Programa ejecutable
No hay nada que gestionar, solamente no preocupamos en coger el programa y ejecutarla.

P

Solamente nos tendríamos que preocupar cuando surgieron y esto se hacia mediante un registro frontera, que limitaba la memoria utilizable, para que no coja la memoria del SO.

SO
P

Cuando yo hago un programa y al compilarlo se transforma en direcciones relativas.
¿Cómo se transforma la dirección relativa en absoluta?
Hay dos maneras de proceder:
·    Asignación de Memoria de forma Estática: no permiten que los procesos sean reutilizables, ya que en el momento que das la orden de ejecutar se carga el programa en memoria para su ejecución transforma todas las memorias relativas en absolutas.
·    Asignación de Memoria de forma Dinámica: cuando el programa se va ejecutando las direcciones relativas se pasan a absolutas tal como las líneas de código se ejecutan. (Instrucción por instrucción).
·    MULTIPROGRAMACIÓN
¿Cómo protegemos la memoria?
- Con asignación de direccionamiento (@x) de memoria estática: Antes mirábamos nada más límites inferiores y superiores de los registros fronteras. Pero con la Multiprogramación con más de un proceso ejecutándose a la vez necesitamos guardar los registros fronteras de cada proceso en su PCB, para poder organizar de manera eficiente su ejecución.
Cuando hay varios procesos:
Lim. Inferior

SO
P1
P2

La dirección es absoluta.
- Con asignación de direccionamiento de memoria dinámica: El proceso tiene su rango de memoria definido (registro límite), la CPU habrá de asignar una dirección relativa menor a este rango y después sumar a esta dirección el registro base (donde comienza el proceso) para obtener la dirección absoluta.
Dando una dirección que da el procesador serán las direcciones relativas se compara con el registro límite tiene que tener un límite (el tamaño del programa). Si es menor se le suma el Registro Base.

En donde se guarda el proceso (donde comienza)        Tamaño del proceso
SO
1000     P1    56K
57…    P2    28K
85…    P3    32K

Compara que la dirección relativa sea menor.

Donde empieza    MP    Cuanto ocupa
SO
1000     P1    5000
4999    P2    28K
85…    P3    32K

Si es menor se le suma el registro base si no, no se podrá grabar.
Esta es más fácil de mantener, porque solamente guardas en trozos de memoria que lo da el programa.
De esta manera podemos independizar la compilación
Formas de gestionar la memoria por ubicar varios procesos den la memoria Principal.
·    Particiones continuas de tamaño fijo
Consiste en coger la MP y dividirla en trozos de tamaño fijos que quedan definidas en el momento que se carga el sistema operativo hasta que lo cambies hay que reiniciar el sistema para que sepa que lo has cambiado. No hace falta que sean del mismo tamaño. En cada partición se ubicará un proceso.
Se piensa en hacer colas de procesos relativas al tamaño de los procesos de la cola (p. ej. cola de procesos de 128K).

P1 100K    128K
28K
P2 70K         128K
58K
128K
256K
Para eso hace falta que se creen colas para los procesos, para que entren en la partición:
Pero este sistema hace que se malgaste memoria principal, pero de dos formas:
·    Fragmentación Interna: Malgasta memoria principal. El espacio que se pierde en la partición da que el programa no llega a aprovechar el espacio de la partición.
·    Fragmentación Externa: Se produce cuando hay suficiente espacio libre pero no podemos asignar memoria a un proceso en espera porque las particiones vacías son muy pequeñas y las adecuadas no están vacías (en las particiones que los puedes juntar y tendrías espacios suficientes para ubicar otros procesos, pero que sin juntar estos espacios, no puedes inserta).
Hay varios tipos de colas: FIFO, Best-Fit,…
·    Particiones continuas de tamaño variable
La memoria se crea las particiones que necesita el proceso. Se crean según el tamaño de los procesos que se ubicarán. Para evitar la fragmentación exterior, en este caso se hará servir la compactación para recorrer los datos, pero esto tiene un elevado coste de T.

P1     100K
P2    70K
P3    200K
P4    100K
64K
Se está ejecutando el P1. Cuando se ejecuta un proceso está en memoria pero cuando termina de ejecutarse de la memoria.
Características:
·    compactación
·    RL registre limite + RB registro base + direcciones relativas @ rel + asignación dinámica procesos relativas
Los procesos han de ser reubicables porque hay esta compactación, hay que trabajar con asignación dinámica y no estática.
·    Paginación
Otra forma de gestionar la memoria posterior a las Particiones contiguas de tamaño variable.
Es una técnica que intenta disminuir los espacios vacíos.
Es 1 técnica q palia el inconveniente q había hasta ahora. Este inconveniente se encuentra en memoria un espacio grande para poder ubicar todo el proceso de forma contigua.
Permite ubicar un proceso en memoria teniendo espacio disponible, para estar separado.
Para poder llevar a cabo necesitamos una Tabla de Páginas. Aquí viene indexada, en donde está ubicada la primera posición (donde se guarda el inicio del flame).
Soluciones propuestas para aumentar el rendimiento:
·    Si tenemos un registro en el procesador que nos guardar la tabla de procesos se dedicará un registro (Registro Base) donde se guarda
En el momento que se cargue el proceso se guardará la tabla de direcciones del microprocesador y guardar la información en la PCB anterior para acceder directamente la tabla de registro de páginas. (Nos guarda la dirección de la tabla de páginas del proceso activo)
·    En vez de q la tabla de páginas, solamente conservaremos las direcciones de las páginas que se utilizan con más frecuencias de las tablas de páginas (en memoria caché) y así se carga mucho más rápido.
Cuando se llene la tabla sustituirá los que son menos visitados por otros. También se puede hacer en vez con los más visitados por los últimos accedidos.
·    En sistemas pequeños y los procesos pequeños en vez de tener la tablas de páginas en memoria principal se guardan en registros y estos registros se llaman registros asociativos.
Paginación Compartida
La paginación es un sistema q nos permite compartir información entre diferentes procesos con la utilización de unos bits adicionales que se añaden a las entradas de las tablas de pagina. Se necesitarán, bits de protección que indiquen el tipos de acceso, que se puede realizar sobre una pagina y bits de validez que indicarán si el contenido de la pagina ha estado modificado o no.

·    Segmentación
La paginación parte sin mirar nada, corta por tamaño no mira si corta un bucle, puede producir fragmentación interna en la ultima pagina del proceso. Para evitarlo aparece la segmentación que divide el proceso de una forma lógica y racional.(no por donde toca, por medidas).
Un programa está formado por varios ficheros o segmentos, por partes lógicas:
Programa Principal, funciones, Tratamientos de error, de ficheros, tiene áreas para destinada para guardar la pila de invocación de procedimientos, las variables locales, las variables globales.

dibujo3

9

10

111