Guia3Fundamentos Sistemas OperativosII

download Guia3Fundamentos Sistemas OperativosII

of 30

Transcript of Guia3Fundamentos Sistemas OperativosII

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    1/30

    Proceso

    Un proceso es un programa en ejecucin, los procesos son gestionados por el sistema operativo y estnformados por:

    y Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador.

    y Su estado de ejecucin en un momento dado, esto es, los valores de los registros de la CPU paradicho programa.

    y Su memoria de trabajo, es decir, la memoria que ha reservado y sus contenidos.

    y Otra informacin que permite al sistema operativo su planificacin.

    Esta definicin vara ligeramente en el caso de sistemas operativos multihilo, donde un proceso consta de unoo ms hilos, la memoria de trabajo (compartida por todos los hilos) y la informacin de planificacin. Cada hiloconsta de instrucciones y estado de ejecucin.

    Los procesos son creados y destruidos por el sistema operativo, as como tambin este se debe hacer cargode la comunicacin entre procesos, pero lo hace a peticin de otros procesos. El mecanismo por el cual unproceso crea otro proceso se denomina bifurcacin (fork). Los nuevos procesos pueden ser independientes yno compartir el espacio de memoria con el proceso que los ha creado o ser creados en el mismo espacio dememoria.

    En los sistemas operativos multihilo es posible crear tanto hilos como procesos. La diferencia estriba en queun proceso solamente puede crear hilos para s mismo y en que dichos hilos comparten toda la memoriareservada para el proceso.

    PCB (Bloque de Control del Proceso)

    Conjunto de datos en donde se incluyen el estado en cada momento, recursos utilizados, registros, etc.El PCB pretende cubrir:

    Localizar la informacin sobre el proceso del sistema operativo. Mantener registrados los datos del proceso en caso de tener que suspender su ejecucin.

    La informacin contenida en el bloque de control es el siguiente:

    Estado del proceso(Informacin relativa al contenido del contador de programa) Estadsticas de tiempo y ocupacin de recursos(Planificacin del procesador) Recursos en uso(unidades de entrada/salida) Archivos en uso Privilegios

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    2/30

    Tipos de Procesos

    Independiente: Los procesos no se comunican entre si. Cooperativo: Los procesos realizan su funcin de modo independiente y se sincronizan

    puntualmente para realizar alguna accin. (Proyecto SETI) Competitivo: Los procesos se sincronizan y comunican entre si para competir por los recursos del

    sistema

    Estados de un proceso

    Los bloques de control de proceso se almacenan en colas cada una de las cuales representa un estadoparticular de los procesos.Los estados de los procesos son internos del sistema operativo y transparente para el usuario. Para el usuariocomn los procesos siempre estarn en ejecucinLos estados de los procesos se pueden dividir en 2 tipos:

    1) Activos: Son todos aquellos procesos que compiten con el procesador. Ejecucin: Estado que se encuentra en un proceso, cuando tiene el control del procesador. Preparado: Son todos aquellos procesos que estn dispuestos a ser ejecutados, pero no lo estn por

    alguna causa. Bloqueado: Son todos aquellos procesos que no pueden ejecutarse por necesitar de algn recurso

    (e/s).

    2) Inactivo: Son procesos que an no han terminado su trabajo por diferentes causas. Pero pueden volver

    activarse nuevamente sin tener que comenzar desde el principio.

    Suspendido Bloqueado: Proceso que est suspendido en espera, que ha desaparecido por una

    causa de bloqueo.

    Suspendido Preparado:Proceso suspendido, pero no tiene causas para estar bloqueado.

    Transiciones de un Estados

    Puede cambiar de estado varias veces a lo largo de su existencia

    Comienzo de la ejecucin: Todo proceso comienza al ser dada la orden de ejecucin. Paso a Estado de Ejecucin:Se encuentra en espera de ser ejecutado.

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    3/30

    Paso a Estado Bloqueado: Proceso que se encuentra en ejecucin y solicita unaoperacin externa(unidad de entrada/salida), teniendo que esperar a que dicha ejecucinfinalice pasara al estado bloqueado.

    Paso a estar Preparado: Este proceso debe contener: Orden de ejecucin de los procesos Proceso debe pasar a estado preparado Luego el proceso pasa a estar activado

    Paso a suspendido Bloqueado: Si un proceso est bloqueado y el S.O. recibe la orden desuspendido pasa a estar suspendido bloqueado.

    Paso a Estado Suspendido Preparado: Este proceso debe contener: Suspensin de un proceso para pasar a preparados. Suspensin de un proceso en ejecucin, con lo cual pasa a la cola de suspensin

    preparado.

    Desbloqueo de un proceso suspendido.

    Operaciones sobre procesos

    Un proceso es simplemente, un programa en ejecucin que necesita recursos para realizar su tarea: tiempode CPU, memoria, archivos y dispositivos de E/S. El SO es el responsable de:

    y Crear: Se produce con la orden de ejecucin de programa y suele necesitar varios argumentos,como el nombre y la prioridad del proceso. Aparece en este momento el PCB que ser insertado enla cola de procesos preparados. La creacin de un proceso puede ser de dos tipos

    Jerrquica: en ella cada proceso que se crea es hijo del proceso creador y hereda elentornodeejecucin de su padre

    No jerrquica: cada proceso creado por otro proceso se ejecuta independientemente de sucreador con u entorno diferente. Es un tipo de creacin que no suele darse en sistemasoperativos actuales

    y Destruir : Se trata de la orden de eliminacin del proceso con la cual el sistema operativo destruyeel PCB

    y Suspender: Es una operacin de alta prioridad que paraliza un proceso que puede ser reanudadoposteriormente. Suele darse en ocasiones de mal funcionamiento o sebrecarga del sistema

    y Reanudar: Trata de activar un proceso que ha sido previamente suspendidoy Cambiarprioridad:

    y Temporizar la ejecucin: Hace que un determinado proceso se ejecute cada cierto tiempo(segundos, minutos, horas) por etapas o de una sola vez, pero trascurrido un perodo de tiempo fijo

    y Despertar:Es una forma de desbloquear un proceso que habr sido bloqueado previamente portemporizacin o cualquier otra causa

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    4/30

    Planificacin del procesador

    Introduccin

    En este captulo se estudian las distintas polticas y mecanismos ms comunes que poseen los

    sistemas operativos actuales para realizar la gestin del procesador que se conoce con el nombre de

    planificacin, cuyo objetivo principal es el de dar un buen servicio a todos los procesos que existan en unmomento dado en el sistema.

    En general, se distinguen varios niveles de planificacin, como se refleja en la Figura.

    Planificacin a largo plazo (planificador de trabajos): Decide cul ser el prximo trabajo que se va a

    ejecutar. Este nivel slo existe en los sistemas de proceso por lotes, donde la decisin se basa en las

    necesidades de recursos y su disponibilidad. En los sistemas de tiempo compartido tiene como nica misin

    cargar los programas que se desean ejecutar en memoria. Este nivel es, por tanto, el encargado de crear los

    procesos.

    y Planificacin a medio plazo (planificador de swapping): Decide si un proceso que est en

    ejecucin en estado bloqueado o suspendido debe ser extrado de la memoria temporalmente.

    Posteriormente, cuando el sistema se encuentre ms descargado, devolver dicho proceso a la

    memoria y al estado de ejecucin. Este nivel, por tanto, gestiona los procesos suspendidos en

    espera de algn recurso no disponible en el momento de la suspensin.

    y Planificacin a corto plazo (planificador del procesador): Es el encargado de decidir cmo y

    cundo tendr acceso al procesador un proceso que est preparado para utilizarlo. Por tanto, lleva a

    cabo las funciones de la multiprogramacin, estando siempre residente en memoria y ejecutndose

    con mucha frecuencia; por ello, debe ser de ejecucin muy rpida. En este nivel es donde se debe

    dar un buen servicio a los procesos interactivos para que el usuario no perciba, o lo haga en pequeo

    grado, que est compitiendo por el procesador junto con otros usuarios.

    Objetivos

    Las polticas de planificacin intentan cubrir los siguientes objetivos:

    y Justicia:La poltica debe ser lo ms justa posible con todo tipo de procesos, sin favorecer a unos y

    perjudicar a otros.

    y Mxima capacidad de ejecucin: Debe dar un servicio aceptable para que todos los trabajos se

    realicen lo ms rpidamente posible. Esto se logra disminuyendo el nmero de cambios de proceso.

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    5/30

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    6/30

    A partir de los dos valores anteriores, podemos establecer una relacin que nos permite evaluar la actuacin

    de la poltica establecida en lo que se denomina ndice de servicio (I).

    I = t / T

    Este ndice representa el tanto por uno de tiempo que el proceso est en ejecucin respecto al tiempo de vida

    del mismo en el sistema.

    En caso de que slo exista un proceso ejecutndose en el sistema, segn el valor del ndice de servicio,

    podemos decir que:

    Cuando I sea prximo a la unidad, el proceso est limitado por proceso.

    Si I tiene un valor bajo prximo a 0, el proceso estar limitado por entrada/salida.

    En los casos ms usuales en los que existe ms de un proceso en el sistema, no podemos hacer las

    consideraciones anteriores puesto que puede desvirtuarse el verdadero comportamiento del sistema. Por este

    motivo se establecen las mismas medidas, pero con valores medios obtenidos al considerar el conjunto de

    procesos presentes. Estas sern las medidas que nos reflejarn el verdadero comportamiento del sistema.

    Las medidas a las que nos referimos son:

    y Tiempo medio de servicio.

    y Tiempo medio de espera.

    y Eficiencia (ndice medio de servicio).

    Adems de las anteriores, en la planificacin del procesador suelen emplearse otras dos medidas de

    inters:

    y Tiempo del ncleo: Es el tiempo consumido por el ncleo del sistema operativo para tomar las

    decisiones de planificacin del procesador, donde se incluyen los tiempos de cambio de contexto y

    de proceso.

    y Tiempo de inactividad (Idle): Es el tiempo consumido cuando la cola de procesos preparados est

    vaca y por tanto no puede realizarse ningn trabajo productivo.

    Algoritmos de Planificacin

    El planificador del procesador tiene como misin la asignacin del mismo a los procesos que estn

    en la cola de procesos preparados. Esta cola es alimentada desde dos puntos distintos:

    y Cada vez que un usuario inicie la ejecucin de un programa, el planificador a largo plazo recibe la

    orden de ejecucin, crea el proceso y lo pasa al planificador a corto plazo, colocndose en la cola de

    procesos preparados.

    y Cuando un proceso deja de estar en estado de ejecucin y no existen causas para su bloqueo, o

    deja de estar bloqueado, pasa nuevamente a la cola de procesos preparados.

    Por otro lado, cuando un proceso termina su ejecucin, deja de existir para el planificador.

    Las polticas de planificacin se agrupan en:

    y Polticas apropiativas: Son las que producen un cambio de proceso con cada cambio de contexto;

    es decir, el proceso que est haciendo uso del procesador puede ser temporalmente suspendido y

    permitir que otro proceso se apropie del procesador. Se utilizan en sistemas operativos con tiempo

    compartido y tiempo real.

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    7/30

    y Polticas no apropiativas: Son aquellas en las que un proceso no abandona nunca el procesador

    desde su comienzo hasta su fin. Se utilizan en sistemas de proceso por lotes.

    En los sistemas operativos comerciales existen diversas polticas de planificacin, de las cuales

    veremos algunas a continuacin, puestas en prctica a travs de algoritmos que en ningn caso son

    perfectos. Recordemos que los objetivos y criterios pueden ser contradictorios entre s, de manera que si

    favorecemos a un tipo de procesos, normalmente perjudicaremos a otros.

    Para el estudio de las diferentes polticas nos basaremos en la situacin de un grupo de procesos

    existentes en un sistema, cuyos datos se encuentran en la Tabla y su representacin grfica en la Figura.

    Adems de figurar el instante de entrada en el sistema, tambin se ha representado el tiempo de

    servicio de cada proceso, es decir, el tiempo que necesita cada uno de ellos para ejecutarse si fuera el nico

    presente en el sistema. Por otro lado, supondremos que estos procesos no necesitan realizar operaciones de

    entrada/salida (aunque esto sea una utopa) para facilitar el estudio.

    Primero en llegar, primero en ser servido (FCFS)

    En esta poltica de planificacin FCFS (First Come, First Served), el procesador ejecuta cada proceso

    hasta que termina; por tanto, los procesos que entren en cola de procesos preparados permanecern

    encolados en el orden en que lleguen hasta que les toque su ejecucin (Figura 4.3). Este mtodo se conoce

    tambin como "primero en entrar, primero en salir" (First Input, First Output - FlFO).

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    8/30

    Se trata de una poltica muy simple y sencilla de llevar a la prctica, pero muy pobre en cuanto a su

    comportamiento. En la Tabla se muestran los datos de los procesos para esta planificacin, y en la Figura

    puede verse cmo despacha FCFS los procesos del ejemplo propuesto, donde las partes sombreadas indican

    el tiempo que ha estado cada proceso en espera de acceder al procesador.

    Podemos observar que el ndice de servicio mejora cuantos ms largos son los procesos. Es decir,

    los procesos cortos que entren en el sistema despus de uno o varios largos tendrn que esperar un perodo

    de tiempo relativamente largo hasta su ejecucin.

    La cantidad de tiempo de espera de cada proceso depende del nmero de procesos que se

    encuentren en cola en el momento de su peticin de ejecucin y del tiempo que cada uno de ellos tenga en

    uso al procesador, y es independiente de las necesidades de ejecucin del propio proceso.

    Las caractersticas de esta poltica son las siguientes:

    y No es apropiativa.

    y Es justa, aunque los procesos largos hacen esperar mucho a los cortos.

    y Es una poltica predecible.

    y El tiempo medio de servicio es muy variable en funcin del nmero de procesos y su duracin.

    Round-Robin (RR)

    Esta poltica, cuya traduccin podra ser asignacin cclica o planificacin en rueda, es una mejora de

    la FCFS. Trata de ser ms justa en cuanto a la respuesta tanto de los procesos cortos como de los largos.

    Consiste en conceder a cada proceso en ejecucin un determinado perodo de tiempo q (quantum),

    transcurrido el cual, si el proceso no ha terminado, se le devuelve al final de la cola de procesos preparados,

    concedindose el procesador al siguiente proceso por su correspondiente quantum

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    9/30

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    10/30

    A continuacin se repite la planificacin RR para un valor de quantum 3 y con las mismas

    condiciones que en el caso anterior. La Tabla y la Figura representan los datos y el grfico, respectivamente,

    del ejemplo propuesto para este valor.

    En este caso el tiempo de servicio T se mantiene prcticamente constante. Se puede observar que el

    tiempo de espera E crece de acuerdo con el tiempo de ejecucin de cada proceso.

    Las caractersticas de esta poltica de planificacin son:

    y Baja sobrecarga si el cambio de contexto es eficiente y los procesos siempre estn en la memoria

    principal.

    El tamao ptimo del quantum depende de:

    y El tipo de sistema.

    y Las cargas que vaya a soportar el sistema.

    y El nmero de procesos en el sistema y su tipo.

    y Es la poltica ms utilizada para tiempo compartido.

    y Ofrece un ndice de servicio uniforme para todos los procesos. Es una poltica apropiativa.

    El siguiente proceso, el ms corto (SJN)

    Hemos visto que la poltica RR mantiene constante el ndice de servicio de los procesos cortos

    basndose en la apropiacin del procesador. El mtodo SJN (Shortest Job Next) es una poltica de

    planificacin no apropiativa que trata de cubrir los mismos objetivos que la RR.

    Esta poltica toma de la cola de procesos preparados el que necesite menos tiempo de ejecucinpara realizar su trabajo. Para ello debe saber el tiempo de procesador que necesita cada proceso, lo cual es

    tarea nada fcil, pero posible a travs de diversos mtodos como pueden ser la informacin suministrada por

    el propio usuario, por el propio programa, basndose en la historia anterior (heurstica), etc.

    El tiempo de servicio T en esta poltica es bueno para los procesos cortos, saliendo perjudicados los

    procesos largos.

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    11/30

    En la Figura y la Tabla pueden verse el grfico y los datos, respectivamente, del ejemplo propuesto

    en esta poltica.

    Las caractersticas de esta poltica de planificacin son las siguientes:

    y No es apropiativa.

    y El tiempo de espera aumenta de acuerdo con la longitud de los procesos, pero el tiempo medio de

    espera con respecto a otras polticas es ptimo.

    y Es poco predecible.

    y No es justa con los procesos largos.

    y Buen tiempo de servicio.

    y Resulta difcil de poner en prctica por los datos que necesita para realizarse la planificacin.

    Prximo proceso, el de tiempo ms corto (SRT)

    La poltica SRT es una mezcla de los 2 mtodos anteriores y trata de obtener las ventajas de ambos.

    Para ello esta tcnica cambia el proceso que est en ejecucin cuando se ejecuta un proceso, con exigencia

    de tiempo de ejecucin total menor que el que se est ejecutando en el procesador. El valor del tiempo de

    respuesta medio de los procesos largos mejora con respecto a SJN.

    Esta poltica presenta las siguientes caractersticas

    y Es una variante de SJN, para hacerla apropiativa.

    y Puede ser injusta ya que un proceso corto puede echar a uno largo que est haciendo uso del

    procesador y que adems est terminando.y Presenta una mayor sobrecarga.

    y Excelente tiempo medio de servicio

    y Muy eficiente

    Prioridad

    En esta poltica se asocia a cada proceso una prioridad, de manera que el procesador se asigna al

    proceso de mayor prioridad.

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    12/30

    Las prioridades pueden ser definidas interna o externamente. En el primer caso, el sistema operativo

    se basa en una serie de informaciones medibles para el clculo y asignacin de dichas prioridades (tiempo

    necesitado de procesador, necesidad de memoria, etc.).

    El principal problema de esta poltica es el bloqueo o postergacin indefinida, ya que un proceso de

    baja prioridad puede estar esperando su turno indefinidamente. Para evitarlo se suele emplear lo que se

    denomina envejecimiento de las prioridades, que aumenta gradualmente las prioridades de los procesos que

    estn a la espera de utilizar el procesador.

    Cualquier algoritmo basado en esta poltica puede ser apropiativo o no apropiativo. En el primer caso,

    un proceso puede ser retirado del procesador si aparece otro de mayor prioridad en la cola de procesos

    preparados.

    El comportamiento de esta poltica como apropiativa puede verse grficamente, para el ejemplo

    propuesto, en la Figura, y los datos en la Tabla

    .

    Colas mltiples

    Cuando los procesos que van a ser ejecutados en una computadora se pueden agrupar en distintos

    grupos, podemos asignarlos a diferentes colas, cada una con distinta planificacin, para darle a cada una de

    ellas la que realmente necesita.

    Esta poltica divide a la cola de procesos preparados en varias colas separadas, de manera que los

    procesos se asignan a una determinada cola segn sus necesidades y tipo.

    Para determinar en cada caso qu colase las que suministrara un proceso para que acceda al

    procesador cuando este deje a otro anterior, ser controlada por un algoritmo de planificacin entre las colas,

    que normalmente es apreciativo de prioridad fija.

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    13/30

    Principiosgenerales de la Concurrencia

    En un sistema multiprogramado con un nico procesador, los procesos se intercalan en el tiempo aparentando

    una ejecucin simultnea. Aunque no se logra un procesamiento paralelo y produce una sobrecarga en los

    intercambios de procesos, la ejecucin intercalada produce beneficios en la eficiencia del procesamiento y en

    la estructuracin de los programas.

    La intercalacin y la superposicin pueden contemplarse como ejemplos de procesamiento concurrente en un

    sistema monoprocesador, los problemas son consecuencia de la velocidad de ejecucin de los procesos que

    no pueden predecirse y depende de las actividades de otros procesos, de la forma en que el sistema

    operativo trata las interrupciones surgen las siguientes dificultades:

    y Compartir recursos globales es riesgoso

    y Para el sistema operativo es difcil gestionar la asignacin ptima de recursos.

    Las dificultades anteriores tambin se presentan en los sistemas multiprocesador.

    El hecho de compartir recursos ocasiona problemas, por esto es necesario proteger a dichos recursos.

    Los problemas de concurrencia se producen incluso cuando hay un nico procesado

    Paralelismo

    El paralelismo, supone la ejecucin simultanea de varios procesos. Para implementar el paralelismo se

    necesita u hardware adecuado (se necesita de varios procesadores). En caso de tener un nico procesador,

    se puede simular mediante una ejecucin entrelazada y si el sistema es suficientemente rpido el usuario no

    se entera. El paralelismo indica ejecucin simultnea, por lo tanto, es un caso concreto de concurrencia. Se

    pueden sacar las siguientes conclusiones

    y El paralelismo es un caso particular de la concurrencia

    y Sin embargo, concurrencia no implica paralelismo.

    y El paralelismo requiere un soporte fsico: varios procesadores.y La concurrencia es el caso general y el paralelismo un caso particular.

    y La concurrencia (y el paralelismo) se refiere a la ejecucin de cdigo:

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    14/30

    Se habla de paralelismo cuando ocurre la ejecucin simultnea de instrucciones:

    o arquitecturas paralelaso procesamiento paraleloo algoritmos paraleloso programacin paralela

    Existen varios tipos de paralelismo, como son:

    y Paralelismo independiente: no existe sincronizacin explcita entre los procesos. Cada unorepresenta una aplicacin o trabajo separado e independiente. Un uso clsico de este tipo deparalelismo de dan en sistemas de tiempo compartido.

    y Paralelismo de grano grueso y muy grueso: existe una sincronizacin entre los procesos pero a unnivel muy burdo. Este tipo de situacin se maneja fcilmente con un conjunto de procesosconcurrentes ejecutando en un monoprocesador multiprogramado y puede verse respaldado por unmultiprocesador con escasos cambios o incluso ninguno en el software del usuario.

    y Paralelismo de grano fino: significa un uso del paralelismo mucho ms complejo que el que seconsigue con el uso de hilos. Si bien gran parte del trabajo se realiza en aplicaciones muy paralelas,este es un campo, hasta el momento, muy especializado y fragmentado, con varias solucionesdiferentes.

    Labores del Sistema Operativo

    Elementos de gestin y diseo que surgen por causa de la concurrencia:

    1) El sistema operativo debe seguir a los distintos procesos activos2) El sistema operativo debe asignar y retirar los distintos recursos a cada proceso activo, entre estos se

    incluyen:y Tiempo de procesador

    y Memoria

    y Archivosy Dispositivos de E/S

    3) El sistema operativo debe proteger los datos y los recursos fsicos de cada proceso contra injerencias no

    intencionadas de otros procesos.

    4) Los resultados de un proceso deben ser independientes de la velocidad a la que se realiza la ejecucin de

    otros procesos concurrentes.

    Para abordar la independencia de la velocidad debemos ver las formas en las que los procesos interactan.

    Interaccin entre Procesos

    Se puede clasificar los en que interactan los procesos en funcin del nivel de conocimiento que cada proceso

    tiene de la existencia de los dems. Existen tres niveles de conocimiento:

    1) Los procesos no tienen conocimiento de los dems: son procesos independientes que no operan juntos. Ej:

    la multiprogramacin de procesos independientes. Aunque los procesos no trabajen juntos, el sistemaoperativo se encarga de la "competencia"por los recursos.

    2) Los procesos tienen un conocimiento indirecto de los otros: los procesos no conocen a los otros por sus

    identificadores de proceso, pero muestran cooperacin el objeto comn.

    3) Los procesos tienen conocimiento directo de los otros: los procesos se comunican por el identificador de

    proceso y pueden trabajar conjuntamente.

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    15/30

    Competencia entre procesos por los recursos

    Los procesos concurrentes entran en conflicto cuando compiten por el uso del mismo recurso; dos o ms

    procesos necesitan acceder a un recurso durante su ejecucin .Cada proceso debe dejar tal y como est el

    estado del recurso que utilice.

    La ejecucin de un proceso puede influir en el comportamiento de los procesos que compiten. Por Ej. Si dosprocesos desean acceder a un recurso, el sistema operativo le asignar el recurso a uno y el otro tendr que

    esperar.

    Cuando hay procesos en competencia, se deben solucionar tres problemas de control: la necesidad de

    exclusin mutua. Suponiendo que dos procesos quieren acceder a un recurso no compartible. A estos

    recursos se les llama "recursos crticos" y la parte del programa que los utiliza es la "seccin crtica del

    programa. Es importante que slo un programa pueda acceder a su seccin crtica en un momento dado.

    Hacer que se cumpla la exclusin mutua provoca un interbloqueo.

    Otro problema es la inanicin si tres procesos necesitan acceder a un recurso, P1 posee al recurso, luego lo

    abandona y le concede el acceso al siguiente proceso P2, P1 solicita acceso de nuevo y el sistema operativo

    concede el acceso a P1 YP2 alternativamente, se puede negar indefinidamente a P3 el acceso al recurso.

    El control de competencia involucra al sistema operativo, porque es el que asigna los recursos.

    y Cooperacin entre procesos por compartimiento

    Comprende los procesos que interactan con otros sin tener conocimiento explcito de ellos. Ej. : Variosprocesos pueden tener acceso a variables compartidas.

    Los procesos deben cooperar para asegurar que los datos que se comparten se gestionan correctamente. Losmecanismos de control deben garantizar la integridad de los datos compartidos.

    y Cooperacin entre procesos por comunicacin

    Los distintos procesos participan en una labor comn que une a todos los procesos.

    La comunicacin sincroniza o coordina las distintas actividades, est formada por mensajes de algn tipo. Las

    primitivas para enviar y recibir mensajes, vienen dadas como parte del lenguaje de programacin o por el

    ncleo del sistema operativo

    Sincronizacin

    Si una actividad desea impedir que otra acceda a ciertos datos compartidos, mientras no se cumpla una

    determinada condicin, debemos sincronizar las actividades con dicha condicin. Por tanto, la sincronizacin

    es un elemento necesario para asegurar la exclusin mutua.

    Los algoritmos que se han diseado para este fin se clasifican:

    Espera activa

    Son aquellos algoritmos que basan todo su funcionamiento en establecer la espera de entrada a la seccin

    crtica con un bucle que ser roto en el momento en que se cumpla una determinada condicin. Se llaman de

    espera activa por que el proceso no queda bloqueado durante su ejecucin, si no que estar compitiendo con

    el procesador constantemente. Fueron los primeros motivos en utilizarse y han sido sustituidos por otros ms

    eficientes.

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    16/30

    y Espera con mutex: Algoritmo que utiliza un switch (MUTEX) a travs del cual se produce la

    sincronizacin.

    y Alternancia: Ligeramente mejor que el anterior, utiliza tambin una variable TURNO para realizar el

    sincronismo entre procesos.

    y AlgoritmoDEKKER: Resuelve el problema mediante la solucin propuesta por Dekker,, basando su

    funcionamiento en una tabla unidimensional de dos elementos lgicos.(Switches)

    Espera no activa

    Son aquellos algoritmos que establecen la espera para entrar en la seccin crtica bloqueando el

    proceso, haciendo que deje de competir por el procesador hasta que se cumpla la condicin de desbloqueo.

    Entre los algoritmos existentes citaremos los siguientes:

    y Semforos: Para eliminar los problemas que se producen con los algoritmos de espera activa,

    fundamentalmente los referidos a la sobrecarga que producen en el sistema, E.W. Dijkstra(1965)

    diseo un mecanismo basado en una variable de entrada utilizada como contador de peticiones de

    entrada a una seccin critica. Esta variable es compartida por todos los procesos del sistema. Este

    nuevo tipo de variable se denomina semforo por su capacidad de gestionar el trfico de procesos

    que deseen acceder a datos compartidos. Con este sistema, cuando un proceso intente entrar a una

    seccin critica mientras otro esta accediendo a los datos compartidos, se bloquear de igual manera

    que cuando un proceso accede a un recurso que est ocupado.

    y Regiones criticas: Son sistemas que permiten establecer protecciones contra una mala utilizacin

    de los usuarios. Para ello solo permiten que datos compartidos puedan acceder desde determinadas

    regiones quedando transparentes desde el resto. Tiene pequeos inconvenientes relacionados con la

    sincronizacin y no permite que varias actividades puedan realizar operaciones de lectura

    simultnea.

    y Regiones criticas condicionales: Consiste en una mejora del mtodo anterior tratando de resolver

    algunos problemas de sincronizacin que se presentaban.

    y Monitores: Uno de los problemas existentes en los mecanismos anteriores es que el programador

    tiene que proporcionar de forma explcita el modo de sincronizacin. Para evitarlo, B. Hansen y

    C.A.R Hoare desarrollaron un nuevo mecanismo denominado Monitor, que debe ser soportado por

    el lenguaje correspondiente. Un monitor permite compartir, segura y eficientemente, datos entre

    actividades garantizando la exclusin mutua, sin necesidad de que el programador tenga quesuministrarla explcitamente. Se basa en dos primicias: La primera es la abstraccin de datos

    consistente en una tcnica capaz de separar las operaciones a ejecutar los datos, de los detalles de

    diseo propio de los mismos. La segunda es que realizan la exclusin mutua en forma implcita. La

    finalidad ms til de los monitores es reunir todas las funciones que operan sobre un conjunto de

    datos compartidos en un solo modulo, de manera que todos los accesos a esos datos estarn

    forzados a utilizar dichas funciones.

    y Contadores de eventos: Es un mecanismo para sincronizar actividades sin que sea necesario

    forzar la exclusin mutua, ya sea porque no deseamos limitar la concurrencia de las actividades o

    simplemente porque no la necesitemos. Se basa en una variable cuya misin es contar determinadas

    operaciones.

    y Mensajes: Es un mecanismo que permite a los procesos intercambiar aquella informacin que sea

    necesaria durante el desarrollo normal de su ejecucin. Por tanto es ms un mecanismo decooperacin y sincronizacin. Esta cooperacin se realiza por medio de mensajes que se envan

    entre s los procesos. Se basa en una zona de memoria compartida que gestiona el S.O.

    directamente y que permanece oculta a los procesos. De esta manera el proceso que enva un

    mensaje a otro deposita la informacin en la zona de memoria compartida y el receptor lo lee de ella

    posteriormente. En este sistema las directrices de envo y recepcin establecen una sincronizacin

    entre los procesos al tener que esperar dichos mensajes, antes de continuar su ejecucin.

    Existen 2 tipos de comunicacin de procesos:

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    17/30

    y Directa: Los procesos se envan y reciben los mensajes directamente entre s, de manera

    que se asocia un enlace bidireccional nico entre cada proceso.

    y Indirecta: Los mensajes son enviados y recibidos a travs de maixboxes o buzones de

    correos. Con este mtodo cada proceso puede estar relacionado con tantos buzones como

    desee consiguiendo comunicarse con tantos procesos como sea necesario.

    y

    Llamadas remotas: El paso de un proceso a otro es un mecanismo muy utilizado para resolver losproblemas de concurrencia entre procesos. Es anlogo al paso de os parmetros en una llamada a

    una rutina o procedimiento. Si unimos los conceptos de mensajes y paso de parmetros tendremos

    lo que se conoce como rutinas o procedimientos remotos, crendose una copia del mismo cada

    vez que son ejecutadas (llamadas remotas), siendo dicha ejecucin concurrente. Este tipo de

    interaccin asegura que hasta que un proceso no termine determinadas operaciones, el siguiente

    permanecer en espera.

    y Rendez-vous: Es la culminacin de todos los mecanismos anteriores, tratndose de una ligera

    modificacin del mtodo de las llamadas remotas, donde la llamad, en lugar de ser a todo un

    procedimiento, lo es solamente a un grupo de sentencias dentro de l. De igual forma, se trata de un

    procedimiento similar al monitor, pero con ms versatilidad y potencia. Este mtodo se ha llevado a

    la prctica con el lenguaje Ada.

    Mecanismos hardware

    Son instrucciones hardware que aseguran la exclusin mutua. Entre las ms utilizadas citaremos las

    siguientes:

    y Deshabilitar interrupciones: Las computadoras actuales permiten que las interrupciones pueden

    ser deshabilitadas, de esta forma, si un dispositivo generase una interrupcin estando deshabilitada,

    el reconocimiento y tratamiento de la nueva interrupcin se retendr hasta que se habiliten de nuevo

    las interrupciones. Por este medio, se puede forzar la exclusin mutua deshabilitando las

    interrupciones mientras haya alguna actividad en la seccin crtica. De este modo, dicha actividad no

    podr ser interrumpida y por tanto no se podr producir ningn cambio de proceso. Normalmente la

    deshabilitacin y nueva habilitacin de las interrupciones suele hacerse con una instruccin mquina,por lo que resulta ser una operacin muy rpida.

    y Instruccin TEST_AND_SET: Muchas de las computadoras actuales suministran una instruccin

    mquina denominada Test and Set, cuya misin es la de forzar la exclusin mutua. La ventaja de

    este mecanismo es que no puede ser interrumpida por ser una instruccin del hardware y el

    inconveniente es que no son muchas las computadoras que la poseen. Esta instruccin, por s sola,

    no basta para asegurar la exclusin mutua, por lo que tendremos que basarnos en ella para construir

    los denominados locks.

    y LOCK: Se basa en la instruccin anterior y su cometido es permitir el acceso a la seccin crtica a un

    proceso en caso de no existir otra actividad dentro de su seccin critica, no permitindolo en caso

    contrario. En este caso, el nmero de actividades y de procesadores compartiendo memoria principal

    puede ser cualquiera, y adems son mecanismos simples y fciles de probar.

    Exclusin Mutua

    El mtodo ms sencillo de comunicacin entre los procesos de un programa concurrente es el uso comn de

    unas variables de datos. El problema de este sistema es que la accin de un proceso interfiere en las

    acciones do otro de una forma no adecuada. Para evitar este tipo de errores se pueden identificar aquellas

    regiones de los procesos que acceden a variables compartidas y dotarlas de la posibilidad de ejecucin como

    si fueran una nica instruccin. Se denomina seccin crtica a aquellas partes de los procesos concurrentes

    que no pueden ejecutarse de forma concurrente o, que desde otro proceso se ven como si fueran una nica

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    18/30

    instruccin. Esto quiere decir que si un proceso entra a ejecutar una seccin crtica en la que accede a unas

    variables compartidas, entonces otro proceso no puede entrar a ejecutar una

    Regin crtica en la que se modifique las variables compartidas con el anterior. Las secciones crticas se

    pueden agrupar en clases, siendo mutuamente exclusivas las secciones crticas de cada una. Para conseguir

    dicha exclusin se deben implementar protocolos software que impidan o bloqueen el acceso a una seccin

    crtica mientras est siendo utilizada por un proceso.

    Bloqueo mediante el uso de variables compartidas

    Se usa una variable de tipo booleano llamada flag que es compartida por los procesos, se asocia a cada

    recurso que se comparte. Si el sistema dispone de una instruccin que permita comprobar el estado de la flag

    y modificarlo simultneamente, el programa permitira el uso del recurso sin entrelazamiento. En caso de usar

    dos indicadores para un recurso, puede ocurrir que ambos procesos vean los indicadores contrarios como

    ocupados, y permanezcan a la espera de liberacin del recurso, pero esto no puede ocurrir al no poder entrar

    ninguno en su seccin crtica (Interbloqueo o

    deadlock).

    Se puede intentar resolver el problema haciendo que el proceso desactive su propio indicador durante la fase

    de bloqueo siempre que encuentre que el indicador del otro proceso est activado. El algoritmo permite queen caso de interbloqueo se pueda proseguir siempre que no exista una completa sincronizacin entre los dos

    procesos, ya que en el caso bastante improbable, pero que pudiera darse, de que los dos procesos realicen

    exactamente las mismas operaciones a la vez, se encontraran permanentemente con los indicadores

    contrarios activados. Otro problema con este algoritmo es que puede permitir que un proceso deje su seccin

    crtica y vuelva a entrar mientras que el otro proceso desactiva su indicador en la seccin de bloqueo.

    El que un proceso no pueda progresar porque se lo impida otro proceso o grupo de procesos se denomina

    cierre (lockout o starvation). Veamos ahora dos soluciones al problema de la exclusin mutua que evitan el

    interbloqueo y el cierre.

    Algoritmo de Peterson:

    Una posible solucin es introducir una variable adicional, denominada turno (Peterson, 1981), que slo resultatil cuando se produzca un problema de peticin simultnea de acceso a la regin crtica:

    (* Exclusin mutua; Solucin de Peterson *)

    module Exclusion_ Mutua_ P;

    varflag1, flag2: Boolean;

    turno : integer;

    Procedure bloqueo (varmi_flag, su_flag: boolean; su_turno:integer);

    begin

    mi_flag: = true;

    turno : = su_turno;

    while su_flag and (turno : = su_turno) do; end

    end bloqueo;

    Procedure desbloqueo (varmi_falg: boolean);

    begin

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    19/30

    mi_flag : = false;

    end desbloqueo;

    process P1

    begin

    loop

    bloqueo(flag1, flag2, 2);

    (* Uso del recurso Seccin Crtica *)

    desbloqueo (flag1);

    (* Resto del proceso *)

    end;

    end P1;

    process P2

    begin

    loop

    bloqueo(flag2, flag1, 1);

    (* Uso del recurso Seccin Crtica *)

    desbloqueo (flag2);

    (* Resto del proceso *)

    end;

    end P2;

    begin (* Exclusin_ Mutua_ P *)

    flag1 : = false

    flag2 : = false;

    cobegin

    P1;

    P2;

    coend

    end Exclusin_ Mutua_ P.

    Si slo uno de los procesos intenta acceder a la seccin crtica lo podr hacer sin ningn problema. Sin

    embargo, si ambos intentan entrar a la vez, el valor del turno se pondr a 1 y 2 pero slo un valor de ellos

    permanecer al escribirse sobre el otro, permitiendo el acceso de un proceso a su regin crtica. El algoritmo

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    20/30

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    21/30

    desbloqueo (flag1,2);

    (* Resto del proceso *)

    end;

    end P1;

    process P2

    begin

    loop

    bloqueo(flag2, flag1, 1);

    (* Uso del recurso Seccin Crtica *)

    desbloqueo (flag2,1);

    (* Resto del proceso *)

    end;

    end P2;

    begin (* Exclusin_Mutua_D *)

    flag1 : = false

    flag2 : = false;

    turno : =1;

    cobegin

    P1;

    P2;

    coend

    end Exclusin_Mutua_D.

    El programa se inicia con el valor de turno 1, lo que da prioridad al proceso P1. Si ambos programas piden a

    la vez el acceso a su seccin crtica, activan sus respectivos indicadores y comprueban si el indicador del otro

    est activado.

    Ambos encuentran que s, por lo que pasan a evaluar el turno. El segundo encuentra que no es su turno,

    desactiva su indicador y se queda en espera de que lo sea. P1 comprueba que si es su turno, entra en su

    regin crtica y dar el turno a P2 antes de desactivar su indicador.

    Los algoritmos de Peterson y Dekker se pueden extender al caso ms general con n procesos en ejecucin

    concurrente; pero no son soluciones adecuadas ya que la espera de acceso a un recurso siempre se realiza

    de forma ocupada. El proceso se queda permanente comprobando una variable, lo que puede suponer un

    derroche de los recursos del sistema.

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    22/30

    Secciones Crticas

    La exclusin mutua necesita ser aplicada solo cuando un proceso acceda a datos compartidos; cuando los

    procesos ejecutan operaciones que no estn en conflicto entre si, debe permitrseles proceder de forma

    concurrente. Cuando un proceso esta accesando datos se dice que el proceso se encuentra en su seccin

    critica ( o regin critica).

    Mientras un proceso se encuentre en su seccin crtica, los dems procesos pueden continuar su ejecucin

    fuera de sus secciones crticas. Cuando un proceso abandona su seccin critica, entonces debe permitrsele

    proceder a otros procesos que esperan entrar en su propia seccin crtica (si hubiera un proceso en espera).

    La aplicacin de la exclusin mutual es uno de los problemas clave de la programacin concurrente. Se han

    diseado muchas soluciones para esto: algunas de software y algunas de hardware, ms de bajo nivel y otras

    de alto nivel; algunas que requieren de cooperacin voluntaria, y algunas que demandan una adherencia

    rgida a protocolos estrictos.

    Estar dentro de una seccin crtica es un estado muy especial asignado a un estado. El proceso tiene acceso

    exclusivo a los datos compartidos, y todos los dems procesos que necesitan accesar a esos datos

    permanecen en espera. Por tanto, las secciones crticas deben ser ejecutadas lo ms rpido posible, un

    programa no debe bloquearse dentro de su seccin crtica, y las secciones crticas deben ser codificadas con

    todo cuidado.

    Si un proceso dentro de una seccin crtica termina, tanto de forma voluntaria como involuntaria, entonces, al

    realizar su limpieza de terminacin, el sistema operativo debe liberar la exclusin mutua para que otros

    procesos puedan entrar en sus secciones crticas

    Monitor

    En la programacin paralela, los monitores son objetos destinados a ser usados sin peligro por ms de unhilo de ejecucin. La caracterstica que principalmente los define es que sus mtodos son ejecutados conexclusin mutua. Lo que significa, que en cada momento en el tiempo, un hilo como mximo puede estarejecutando cualquiera de sus mtodos. Esta exclusin mutua simplifica el razonamiento de implementarmonitores en lugar de cdigo a ser ejecutado en paralelo.

    En el estudio y uso de los semforos se puede ver que las llamadas a las funciones necesarias para utilizarlosquedan repartidas en el cdigo del programa, haciendo difcil corregir errores y asegurar el buenfuncionamiento de los algoritmos. Para evitar estos inconvenientes se desarrollaron los monitores. El conceptode monitor fue definido por primera vez por Charles Antony Richard Hoare en un artculo del ao 1974. Laestructura de los monitores se ha implementado en varios lenguajes de programacin, incluido Pascalconcurrente, Modula-2, Modula-3 y Java, y como biblioteca de programas.

    Componentes

    Un monitor tiene cuatro componentes: inicializacin, datos privados, procedimientos del monitor y cola deentrada.

    y Inicializacin: contiene el cdigo a ser ejecutado cuando el monitor es creado

    y Datos privados: contiene los procedimientos privados, que slo pueden ser usados desde dentro delmonitor y no son visibles desde fuera

    y Procedimientos del monitor: son los procedimientos que pueden ser llamados desde fuera delmonitor.

    y Cola de entrada: contiene a los hilos que han llamado a algn procedimiento del monitor pero no hanpodido adquirir permiso para ejecutarlos an.

    Exclusin mutua en un monitor

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    23/30

    Los monitores estn pensados para ser usados en entornos multiproceso o multihilo, y por lo tanto muchosprocesos o threads pueden llamar a la vez a un procedimiento del monitor. Los monitores garantizan que encualquier momento, a lo sumo un thread puede estar ejecutando dentro de un monitor. Ejecutar dentro de unmonitor significa que slo un thread estar en estado de ejecucin mientras dura la llamada a unprocedimiento del monitor. El problema de que dos threads ejecuten un mismo procedimiento dentro delmonitor es que se pueden dar condiciones de carrera, perjudicando el resultado de los clculos. Para evitaresto y garantizar la integridad de los datos privados, el monitor hace cumplir la exclusin

    mutuaimplcitamente, de modo que slo un procedimiento est siendo ejecutado a la vez. De esta forma, siun thread llama a un procedimiento mientras otro thread est dentro del monitor, se bloquear y esperar enla cola de entrada hasta que el monitor quede nuevamente libre. Aunque se la llama cola de entrada, nodebera suponerse ninguna poltica de encolado.

    Para que resulten tiles en un entorno de concurrencia, los monitores deben incluir algn tipo de forma desincronizacin. Por ejemplo, supngase un thread que est dentro del monitor y necesita que se cumpla unacondicin para poder continuar la ejecucin. En ese caso, se debe contar con un mecanismo de bloqueo delthread, a la vez que se debe liberar el monitor para ser usado por otro hilo. Ms tarde, cuando la condicinpermita al thread bloqueado continuar ejecutando, debe poder ingresar en el monitor en el mismo lugar dondefue suspendido. Para esto los monitores poseen variables de condicin que son accesibles slo desdeadentro. Existen dos funciones para operar con las variables de condicin:

    y cond_wait(c): suspende la ejecucin del proceso que la llama con la condicin c. El monitor se

    convierte en el dueo del lock y queda disponible para que otro proceso pueda entrary cond_signal(c): reanuda la ejecucin de algn proceso suspendido con cond_wait bajo la misma

    condicin c. Si hay varios procesos con esas caractersticas elige uno. Si no hay ninguno, no hacenada.

    Ntese que, al contrario que los semforos, la llamada a cond_signal(c) se pierde si no hay tareas esperandoen la variable de condicin c.

    Las variables de condicin indican eventos, y no poseen ningn valor. Si un thread tiene que esperar queocurra un evento, se dice espera por (o en) la variable de condicin correspondiente. Si otro thread provocaun evento, simplemente utiliza la funcin cond_signalcon esa condicin como parmetro. De este modo, cadavariable de condicin tiene una cola asociada para los threads que estn esperando que ocurra el eventocorrespondiente. Las colas se ubican en el sector de datos privados visto anteriormente.

    La poltica de insercin de procesos en las colas de las variables condicin es la FIFO, ya que asegura queningn proceso caiga en la espera indefinida, cosa que s ocurre con la poltica LIFO (puede que los procesosde la base de la pila nunca sean despertados) o con una poltica en la que se desbloquea a un procesoaleatorio.

    Tipos de monitores

    Antes se dijo que una llamada a la funcin cond_signalcon una variable de condicin haca que un procesoque estaba esperando por esa condicin reanudara su ejecucin. Ntese que el thread que reanuda suejecucin necesitar obtener nuevamente el lock del monitor. Surge la siguiente pregunta: qu sucede con elthread que hizo el cond_signal? pierde el lock para drselo al thread que esperaba? qu thread continacon su ejecucin? Cualquier solucin debe garantizar la exclusin mutua. Segn quin contina con laejecucin, se diferencian dos tipos de monitores: Hoare yMesa.

    Tipo Hoare

    En la definicin original de Hoare, el thread que ejecuta cond_signal le cede el monitor al thread que esperaba. El monitortoma entonces el lock y se lo entrega al thread durmiente, que reanuda la ejecucin. Ms tarde cuando el monitor quedelibre nuevamente el thread que cedi el lock volver a ejecutar.

    Ventajas:

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    24/30

    y El thread que reanuda la ejecucin puede hacerlo inmediatamente sin fijarse si la condicin secumple, porque desde que se ejecut cond_signal hasta que lleg su turno de ejecutar ningnproceso puede cambiarla.

    y El thread despertado ya estaba esperando desde antes, por lo que podra suponerse que es msurgente ejecutarlo a seguir con el proceso despertante.

    Desventajas:

    y Si el proceso que ejecuta cond_signalno termin con su ejecucin se necesitarn dos cambios decontexto para que vuelva a tomar el lock del monitor.

    y Al despertar a un thread que espera en una variable de condicin, se debe asegurar que reanude suejecucin inmediatamente. De otra forma, algn otro thread podra cambiar la condicin. Esto implicaque la planificacin debe ser muy fiable, y dificulta la implementacin.

    Tipo Mesa

    Butler W. Lampson y David D. Redell en 1980 desarrollaron una definicin diferente de monitores para ellenguaje Mesa que lidia con las desventajas de los monitores de tipo Hoare y aade algunas caractersticas.

    En los monitores de Lampson y Redell el thread que ejecuta cond_signalsobre una variable de condicin

    contina con su ejecucin dentro del monitor. Si hay otro thread esperando en esa variable de condicin, se lodespierta y deja como listo. Podr intentar entrar el monitor cuando ste quede libre, aunque puede sucederque otro thread logre entrar antes. Este nuevo thread puede cambiar la condicin por la cual el primer threadestaba durmiendo. Cuando reanude la ejecucin el durmiente, debera verificar que la condicin efectivamentees la que necesita para seguir ejecutando. En el proceso que durmi, por lo tanto, es necesario cambiar lainstruccin ifporwhile, para que al despertar compruebe nuevamente la condicin, y de no ser cierta vuelva allamar a cond_wait.

    Adems de las dos primitivas cond_wait(c) y cond_signal(c), los monitores de Lampson y Redell poseen lafuncin cond_broadcast(c), que notifica a los threads que estn esperando en la variable de condicin cy lospone en estado listo. Al entrar al monitor, cada thread verificar la condicin por la que estaban detenidos, aligual que antes.

    Los monitores del tipo Mesa son menos propensos a errores, ya que un thread podra hacer una llamada

    incorrecta a cond_signalo a cond_broadcastsin afectar al thread en espera, que verificar la condicin yseguir durmiendo si no fuera la esperada.

    Semforos

    Es una solucin sencilla y elegante del problema de la exclusin mutua. Esta tcnica permite solucionar la

    mayora de los problemas de sincronizacin entre procesos. Un semforo binario es un indicador de condicin

    (s) que registra si un registro est disponible o no. Un semforo slo puede tomar dos valores; 0 y 1. Si para

    un semforo, S=1 el recurso est disponible y la tarea lo puede utilizar; si S=0 el recurso no est disponible y

    el proceso debe esperar.

    Los semforos se implementan mediante una cola de tareas a la que se aaden los procesos que estn en

    espera del recurso. Solo se permiten tres operaciones sobre un semforo:

    1. Inicializa (s: Semforo_Binario; v: integer) -- > poner el valor del semforo s al valor de v (0,1).2. Espera (wait)(s) ifs = 1 then s: = 0 else Suspender la tarea que hace la llamada y ponerla en la cola

    de tareas.3. Seal (signal)(s) ifcola de tareas vaca then s : = 1 else Reanudar la primera tarea de la cola

    tareas.

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    25/30

    Estas operaciones son procedimientos que se implementan como acciones indivisibles. En sistemas con un

    nico procesador bastar simplemente con inhibir las interrupciones durante la ejecucin de las operaciones

    del semforo. Al introducir el semforo se crea un nuevo estado en el diagrama de transiciones, el de espera.

    PRINCIPIOS DEL 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 gestin

    concurrente de procesos, no existe una solucin eficiente para el caso general.

    Todos los interbloqueos suponen necesidades contradictorias de recursos por parte de dos o ms procesos.

    Ejemplos de Interbloqueo

    Ejemplo 1: Interbloqueo de trfico

    Cuatro coches llegan aproximadamente en el mismo instante a un cruce de cuatro caminos. Los cuatro

    cuadrantes de la interseccin son los recursos compartidos sobre los que se demanda control; por tanto, si los

    coches desean atravesar el cruce, las necesidades de recursos son las siguientes:

    y El coche que va hacia el norte necesita los cuadrantes 1 y 2.y El coche que va hacia el oeste necesita los cuadrantes 2 y 3.

    y El coche que va hacia el sur necesita los cuadrantes 3 y 4.y El coche que va hacia el este necesita los cuadrantes 4 y 1.

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    26/30

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    27/30

    hasta que B la libere. Por desgracia, en este momento, en vez de liberar unidad de cinta, B solicita la

    impresora. Los procesos se bloquean en ese momento y permanecen as por siempre.

    Recursos

    Un sistema se compone de un numero finito de recursos que se distribuyen entre varios tipos:

    y Fsicos: Ciclo de cpu, espacio en memoria, dispositivos de e/s (impresoras, unidades de cinta, etc.)y Lgicos: Ficheros, tablas del sistema, semforos.

    Por lo general, una computadora tiene distintos recursos que pueden ser otorgados. Algunos recursos podrn

    tener varias instancias idnticas, como es el caso de tres unidades de cinta. Si se tienen disponibles varias

    copias de un recurso, cualquiera de ellas se pude utilizar para satisfacer cualquier solicitud del recurso. Un

    recurso es cualquier cosa que solo puede ser utilizada por un nico proceso en un instante dado.

    Los recursos son de dos tipos:

    y Apropiabley No apropiables

    Un recurso apropiable es aquel que se puede tomar del proceso que lo posee sin efectos dainos. La

    memoria es un ejemplo de recurso apropiable.

    Por el contrario, un recurso no apropiable, es aquel que no se puede tomar de su poseedor activo sin provocar

    un fallo de calculo. Si un proceso comienza a imprimir una salida, se toma la impresora y se le da a otro

    proceso, el resultado ser una salida incomprensible. Las impresoras no son apropiables.

    Los interbloqueos se relacionan con los recursos no apropiables. Lo usual es que los bloqueos asociados a

    recursos apropiables se pueden resolver, mediante la reasignacin de recursos de un proceso a otro.

    La secuencia de eventos necesaria para utilizar un recurso es:

    y Solicitar el recursoy Utilizar el recurso

    y Liberar el recurso

    Si el recurso no esta disponible cuando se le solicita, el proceso solicitante debe esperar. En algunos

    sistemas operativos, el proceso se bloquea de manera automtica al fallar una solicitud de un recurso y se

    despierta cuando dicho recurso esta disponible.

    En otros sistemas la solicitud falla con un cdigo de error y el proceso solicitante debe esperar un poco e

    intentar de nuevo.

    Un proceso cuya solicitud de un recurso ha sido denegada entra por lo general en un ciclo, en el cual solicita

    el recurso, duerme e intenta de nuevo.

    Aunque este proceso no esta bloqueado, para todos los efectos esta como bloqueado, puesto que no puede

    hacer ninguna labor til.

    El interbloque se puede definir entonces de la siguiente forma:

    Un conjunto de procesos se encuentra en estado de interbloqueo cuando cada uno de ellos espera un suceso

    que solo puede originar otro proceso del mismo conjunto.

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    28/30

    En la mayora de los casos, el evento que espera cada proceso es la liberacin de cierto recurso que posee

    por el momento otro miembro del conjunto. En otras palabras, cada miembro del conjunto de procesos

    bloqueados espera un recurso posedo por un proceso bloqueado. Ninguno de los procesos puede continuar

    su ejecucin, ni liberar recursos, y puede ser despertado.

    Condiciones para producir Interbloqueo

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

    1- Condicin de exclusin mutua: Cada recurso esta asignado a un nico proceso o esta disponible.2- Condicin de posesin y espera: Los procesos que tienen, en un momento dado, recursos

    asignados con anterioridad, pueden solicitar nuevos recursos.3- Condicin de no apropiacin: 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 mayora de los casos, estas condiciones son bastantes necesarias. La exclusin mutua hace

    falta para asegurar la consistencia de resultados y la integridad de la base de datos. De forma

    similar, la apropiacin no se puede aplicar arbitrariamente y, cuando se encuentran involucrados

    recursos de datos, debe estar acompaada de un mecanismo de recuperacin y reanulacin, que

    devuelva un proceso y sus recursos a un estado previo adecuado, desde el que el proceso puedefinalmente repetir sus acciones.

    Puede no existir interbloqueo con solo estas tres condiciones. Para que se produzca interbloqueo, senecesita una cuarta condicin:

    4- Condicin de espera circular (o circulo vicioso de espera): Debe existir una cadena circular de dos oms procesos, cada uno de los cuales espera un recurso posedo por el siguiente miembro de lacadena.

    Las tres primeras condiciones son necesarias, pero no suficientes, para que exista interbloqueo. La cuarta

    condicin es, en realidad, una consecuencia potencial de las tres primeras. Es decir, dado que se 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 condicin 4 es irresoluble porque se mantienen las tres

    primeras condiciones. Las cuatro condiciones en conjunto constituyen una condicin necesaria y suficiente

    para el interbloqueo.

    Prevencin del Interbloqueo

    La estrategia bsica de la prevencin del interbloqueo consiste, a grandes rasgos, en disear su sistema de

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

    Los mtodos para prevenir el interbloqueo son de dos tipos:

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    29/30

    - Los mtodos indirectos que consisten en impedir la aparicin de alguna de las tres condicionesnecesarias para que se produzca el interbloqueo.

    - Los mtodos directos que consisten en evitar la aparicin del circulo vicioso de espera.

    Exclusin mutua

    Si ningn recurso se puede asignar de forma exclusiva, no se producir interbloqueo. Sin embargo, existen

    recursos para los que no es posible negar la condicin de exclusin mutua. No obstante, es posible eliminar

    esta condicin 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 catica. Pero con el

    spooling de salida varios procesos pueden generar salida al mismo tiempo. Puesto que el spooler nunca

    solicita otros recursos, 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, adems, la implementacin de esta tcnica puede introducir nuevos motivos de

    interbloqueo, ya que el spooling emplea una zona de disco finita)

    Retencin y espera

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

    recursos que necesiten a un mismo tiempo y bloqueando el proceso hasta que todos los recursos puedan

    concederse simultneamente. Esta solucin resulta ineficiente por dos factores:

    y En primer lugar, un proceso puede estar suspendido durante mucho tiempo, esperando queconcedan todas sus solicitudes de recursos, cuando de hecho podra haber avanzado con soloalgunos de los recursos.

    y Y en segundo lugar, los recursos asignados a un proceso pueden permanecer sin usarse duranteperiodos considerables, tiempo durante el cual se priva del acceso a otros procesos.

    No apropiacin

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

    ciertos recursos se le deniega una nueva solicitud, dicho proceso deber liberar sus recursos anteriores y

    solicitarlos de nuevo, cuando sea necesario, junto con el recurso adicional. Por otra parte, si un proceso

    solicita un recurso que actualmente esta retenido por otro proceso, el sistema operativo debe expulsar al

    segundo proceso y exigirle que libere sus recursos. Este ltimo esquema evitar el interbloqueo slo si no hay

    dos procesos que posean la misma prioridad.

    Esta tcnica es prctica slo cuando se aplica a recursos cuyo estado puede salvarse y restaurarse ms tarde

    de una forma fcil, como es el caso de un procesador.

    Circulo vicioso de espera

    La condicin del crculo vicioso de espera puede prevenirse definiendo una ordenacin lineal de los tipos de

    recursos. Si a un proceso se le han asignado recursos de tipo R, entonces slo podr realizar peticiones

    posteriores sobre los recursos de los tipos siguientes a R en la ordenacin.

    Para comprobar el funcionamiento de esta estrategia, se asocia un ndice a cada tipo de recurso. En tal caso,

    el recurso Ri antecede a Rj en la ordenacin si i

  • 8/8/2019 Guia3Fundamentos Sistemas OperativosII

    30/30

    Prediccin del Interbloqueo

    Una forma de resolver el problema del interbloqueo, que se diferencia sutilmente de la prevencin, es la

    prediccin del interbloqueo. En la prevencin de interbloqueo, se obligaba a las solicitudes de recursos a

    impedir que sucediera, por lo menos, alguna de las cuatro condiciones de interbloqueo. Esto se hace

    indirectamente, impidiendo la aparicin de una de las tres condiciones necesarias (exclusin mutua, retencin

    y espera, no apropiacin) o directamente, impidiendo la aparicin de un crculo vicioso de espera. Se llega asa un uso ineficiente de los recursos y una ejecucin ineficiente de los procesos. Con prediccin del

    interbloqueo, por otro lado, se pueden alcanzar las tres condiciones necesarias, pero se realizan elecciones

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

    concurrencia que la prevencin.

    Con prediccin del interbloqueo, se decide dinmicamente si la peticin actual de asignacin de un recurso

    podra, de concederse, llevar potencialmente a un interbloqueo. La prediccin del interbloqueo necesita, por lo

    tanto, conocer las peticiones futuras de recursos.

    Enfoques para la prediccin del interbloqueo:

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

    y

    No conceder una solicitud de incrementar los recursos de un proceso si esta asignacin puede llevara interbloqueo.