unidad 5-coordinacion y sincronizacion de procesos - copia

Upload: julio-yu-wu

Post on 06-Jul-2015

3.262 views

Category:

Documents


0 download

TRANSCRIPT

Colegio Universitario Francisco de Miranda Unidad Curricular:: SISTEMAS OPERATIVOS Modulo: SISTEMAS OPERATIVOS II Apuntes Recopilados por: Profesor Bernardo Gonzalez Rojas

UNIDAD 4: COORDINACION Y SINCRONIZACION DE PROCESOS.TEMA N 1: CONCURRENCIA. 1.1. Introduccin.Los conceptos claves en los que se basan los sistemas operativos modernos son el de proceso y el de hilo. Los temas fundamentales de diseo de sistemas operativos estn relacionados con la gestin de procesos:

Multiprogramacin: Es la gestin de varios procesos dentro de un sistema monoprocesador. La mayora delos computadores personales, estaciones de trabajo, sistemas monoprocesador y sistemas operativos actuales de estas mquinas, tales como Windows 7, OS/2 y el Sistema 7 de Macintosh dan soporte a la multiprogramacin. Los sistemas operativos como UNIX y LINUX incorporan multiprogramacin de sistemas monoprocesador compartidos.

Multiproceso: Es la gestin de varios procesos dentro de un sistema multiprocesador. Hasta no hacemucho, los sistemas multiprocesador se utilizaban nicamente en grandes sistemas, computadores centrales y minicomputadores. Los sistemas operativos como MVS y VMS dan soporte de multiproceso. Ms recientemente, el multiproceso ha empezado a ganarse la aprobacin de los servidores y las estaciones de trabajo. Windows NT es un ejemplo de un sistema operativo diseado para estos entornos.

Proceso distribuido: Es la gestin de varios procesos que ejecutan en sistemas de computadores mltiplesy remotas.

1.2. Definicin.La concurrencia es el punto clave de los tres campos anteriores y fundamentales para el di-seo de sistemas operativos. La concurrencia comprende un gran nmero de cuestiones de diseo, incluyendo la comunicacin entre procesos, comparticin y competencia por los recursos, sincronizacin de la ejecucin de varios procesos y asignacin del tiempo de procesador a los procesos. Se ver que estas cuestiones no solo surgen en entornos de multi-procesadores y proceso distribuido, sino incluso en sistemas multiprogramados con un solo procesador. La concurrencia puede presentarse en tres contextos diferentes:

Varias aplicaciones: La multiprogramacin se cre para permitir que el tiempo de procesador de lamquina fuese compartido dinmicamente entre varios trabajos o aplicaciones activas.

Aplicaciones estructuradas: Como ampliacin de los principios del diseo modular y la programacinestructurada, algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos concurrentes.

Estructura del sistema operativo: Las mismas ventajas de estructuracin son aplicables a losprogramadores de sistemas y se ha comprobado que algunos sistemas operativos estn implementados como un conjunto de procesos.

1.3. Ejemplo Concurrencia.Para ilustrar estos conceptos y comparar los mtodos presentados en este tema, se usan dos problemas clsicos de concurrencia. En primer lugar, se presentar el problema del productor/consumidor como ejemplo tpico. El tema termina con el problema de los lectores/escritores. En un sistema multiprogramado con un nico procesador, los procesos se intercalan en el tiempoPgina 1 de 15

Colegio Universitario Francisco de Miranda Unidad Curricular:: SISTEMAS OPERATIVOS Modulo: SISTEMAS OPERATIVOS II Apuntes Recopilados por: Profesor Bernardo Gonzalez Rojas

para dar la apariencia de ejecucin simultnea (figura 1.1). Aunque no se consigue un proceso paralelo real y aunque se produce una cierta sobrecarga en los intercambios de procesos de un sitio a otro, la ejecucin intercalada produce beneficios importantes en la eficiencia del procesamiento y en la estructuracin de los programas. En un sistema con varios procesadores, no solo es posible intercalar los procesos, sino tambin superponerlos (figura 1.2).

Figura 1.1 - Intercalacin

Figura 1.2 Intercalacin y Superposicin

A primera vista, podra parecer que la intercalacin y la superposicin representan formas de ejecucin muy diferentes y que introducen problemas distintos. De hecho, ambas tcnicas pueden contemplarse como ejemplos de proceso concurrente y ambas plantean los mismos problemas. En el caso de un sistema monoprocesador, los problemas creados por la multiprogramacin parten del hecho de que la velocidad relativa de ejecucin de los procesos no puede predecirse. Depende de la actividad de otros procesos, de la forma en que el sistema operativo trata las interrupciones y de las polticas de planificacin. As surgen las siguientes dificultades:

i.- La comparticin de recursos globales est llena de riesgos. Por ejemplo, si dos procesos hacen uso al mismotiempo de la misma variable global y ambos llevan a cabo tanto lecturas como escrituras sobre la variable, el orden en que se ejecuten las lecturas y escrituras es crtico. En el siguiente apartado se ofrece un ejemplo de este problema.

ii.- Para el sistema operativo resulta difcil asignar los recursos de forma ptima. Por ejemplo, el proceso A puedesolicitar el uso de un canal de E/S en particular y suspenderse antes de hacer uso del canal. Si el sistema operativo bloquea el canal e impide su uso por parte de otros procesos, se tiene una cierta ineficiencia.

iii.-

Resulta difcil localizar un error de programacin porque los resultados no son normalmente reproducibles.

Todas las dificultades anteriores se presentan tambin en los sistemas multiprocesador, ya que tambin en ellos es impredecible la velocidad relativa de ejecucin de los procesos. Un sistema multiprocesador debe solucionar, adems, los problemas originados por el hecho de que varios procesos puedan estar ejecutando a la vez. Sin embargo, los problemas son, fundamentalmente, los mismos que en el caso anterior.

1.4.- Labores del Sistema Operativo.Qu elementos de gestin y diseo surgen por causa de la concurrencia? Se pueden enumerar los siguientes:

i.-

El sistema operativo debe ser capaz de seguir la pista de los distintos procesos activos. Esto lo hace por medio de bloques de control de procesos, como se describi en la unidad anterior. se incluyen:

ii.- El sistema operativo debe asignar y quitar los distintos recursos a cada proceso activo. Entre estos recursos

Tiempo de procesador: Es funcin de la planificacin. Memoria: La mayora de los sistemas operativos emplean esquemas de memoria virtual. Archivos. Dispositivos de E/S.iii.- El sistema operativo debe proteger los datos y los recursos fsicos de cada proceso contra injerencias nointencionadas de otros procesos. Esto supone emplear tcnicas relativas a la memoria, archivos y dispositivos de E/S, que se estudian en los captulos correspondientes.

Pgina 2 de 15

Colegio Universitario Francisco de Miranda Unidad Curricular:: SISTEMAS OPERATIVOS Modulo: SISTEMAS OPERATIVOS II Apuntes Recopilados por: Profesor Bernardo Gonzalez Rojas

iv.- Los resultados de un proceso deben ser independientes de la velocidad relativa a la que se realiza laejecucin con respecto a otros procesos concurrentes. Para comprender cmo se puede abordar la independencia de la velocidad, hace falta estudiar las formas en las que los procesos pueden interactuar.

1.4.1.- Competencia entre procesos por los recursosLos procesos concurrentes entran en conflicto cuando compiten por el uso del mismo recurso. Bsicamente, es posible describir esta situacin como sigue. Dos o ms procesos necesitan acceder a un recurso durante el curso de su ejecucin. Cada proceso no es consciente de la existencia de los otros y no se ve afectado por su ejecucin. De aqu se obtiene que cada proceso debe dejar tal y como est el estado de cualquier recurso que utilice. Como ejemplos de recursos se tienen a los dispositivos de E/S, la memoria, el tiempo de procesador y el reloj. No hay intercambio de informacin entre los procesos en competencia. Sin embargo, la ejecucin de un proceso puede influir en el comportamiento de los procesos que compiten. En particular, si dos procesos desean acceder a un nico recurso, el sistema operativo le asignar el recurso a uno de ellos y el otro tendr que esperar. Por tanto, el proceso al que se niega el acceso se retrasar. En el peor caso, el proceso bloqueado puede que no consiga nunca acceder al recurso y, por tanto, no terminar con xito nunca.

1.4.2.-Cooperacin entre procesos por comparticinEl caso de cooperacin por comparticin comprende a los procesos que interactan con otros sin tener conocimiento explicito de ellos. Por ejemplo, varios procesos pueden tener acceso a variables compartidas, archivos o bases de datos compartidas. Los procesos pueden emplear y actualizar los datos compartidos sin hacer referencia a los otros procesos, pero son conscientes de que estos otros pueden tener acceso a los mismos datos. As pues, los procesos deben cooperar pasa asegurar que los datos que se comparten se gestionan correctamente. Los mecanismos de control deben garantizar la integridad de los datos compartidos.

1.4.3.- Cooperacin entre procesos por comunicacinEn los dos primeros casos expuestos, cada proceso posee su propio entorno aislado, que no incluye a los otros procesos. Las interacciones entre los procesos son indirectas. En ambos casos, existe comparticin. En caso de competencia, los procesos estn compartiendo recursos sin tener conocimiento de la existencia de otros procesos. En el segundo caso, estn compartiendo valores y, aunque cada proceso no tiene conocimiento explicito de los otros, si es consciente de la necesidad de conservar la integridad de los datos. Cuando los procesos cooperan por comunicacin, en cambio, los distintos procesos participan en una labor comn que une a todos los procesos. La comunicacin es una manera de sincronizar o coordinar las distintas actividades. Normalmente, la comunicacin puede caracterizarse por estar formada por mensajes de algn tipo. Las primitivas para enviar y recibir mensajes pueden venir dadas como parte del lenguaje de programacin o por el ncleo del sistema operativo.

TEMA N 2 SEMAFOROS. 2.1. Introduccin.Se vuelven a considerar ahora los mecanismos que se usan en el sistema operativo y en los lenguajes de programacin para dar soporte a la concurrencia. En este tema se trataran los semforos. En las dos siguientes secciones se discutir sobre los monitores y el paso de mensajes. El primer gran avance en la resolucin de los problemas de procesos concurrentes lleg en 1965, con el tratado de Dijkstra sobre la cooperacin entre procesos secunciales, Dijkstra estaba interesado en el diseo de un sistema operativo como un conjunto de procesos secunciales cooperantes y en el desarrollo de mecanismos eficientes y fiables para dar soporte a la cooperacin. Los procesos de usuario podrn utilizar estos mecanismos en tanto que el procesador y el sistema operativo los hagan disponibles. El principio fundamental es el siguiente: Dos o ms procesos pueden cooperar por medio de simples seales, de forma que se pueda obligar a detenerse a un proceso en una posicin determinada hasta que reciba una sealPgina 3 de 15

Colegio Universitario Francisco de Miranda Unidad Curricular:: SISTEMAS OPERATIVOS Modulo: SISTEMAS OPERATIVOS II Apuntes Recopilados por: Profesor Bernardo Gonzalez Rojas

especfica. Cualquier requisito complicado de coordinacin puede satisfacerse por medio de la estructura de seales adecuada. Para la sealizacin, se usan variables especiales llamados semforos. Para transmitir una seal por el Semforo s, los procesos ejecutan la primitiva signal(s). Para recibir una seal del semforo s, los procesos ejecutan la primitiva wait(s); si la seal correspondiente an no se ha transmitido, el proceso es suspendido hasta que tenga lugar la transmisin.

2.2. Funcionamiento de los Semforos.Para lograr el efecto deseado, se pueden contemplar los semforos como variables que tienen un valor entero sobre el que se definen las tres operaciones siguientes:

i.- Un semforo puede inicializarse con un valor no negativo. ii.- La operacin wait decrementa el valor del semforo. Si el valor se hace negativo, el proceso que ejecuta elwait se bloquea.

iii.-

La operacin signal incrementa el valor del semforo. Si el valor no es positivo, se des-bloquea a un proceso bloqueado por una operacin wait.

Aparte de estas tres operaciones, no hay forma de examinar o manipular los semforos.

2.3. Implementacin de Semforos.La figura 2.1 propone una definicin ms formal de las primitivas de los semforos. Las primitivas wait y signal se suponen atmicas, es decir, no pueden ser interrumpidas y cada rutina puede considerarse como un paso indivisible. En la figura 2.2 se define una versin ms limitada, conocida como semforo binario. Un semforo binario solo puede tomar los valores 0 y 1. En principio, los semforos binarios son ms sencillos de implementar y puede demostrarse que tienen la misma potencia de expresin que los semforos generales.

Figura 2.1 Una Definicin Primitivas Semforos Figura 2.2 Una Definicin Primitivas Semforos Binarios

Pgina 4 de 15

Colegio Universitario Francisco de Miranda Unidad Curricular:: SISTEMAS OPERATIVOS Modulo: SISTEMAS OPERATIVOS II Apuntes Recopilados por: Profesor Bernardo Gonzalez Rojas

Tanto en los semforos como en los semforos binarios se emplea una cola para mantener los procesos esperando en el semforo. La definicin no dicta el orden en el que se quitan los procesos de dicha cola. La poltica ms equitativa es la FIFO: el proceso que ha estado bloqueado durante ms tiempo se libera de la cola. La nica exigencia estricta es que un proceso no debe quedar retenido en la cola de un semforo indefinidamente porque otros procesos tengan preferencia. _

2.4.- Exclusin MutuaLa figura 2.3 muestra una solucin sencilla al problema de la exclusin mutua por medio de un semforo s. Sean n procesos, identificados por el array P(s). En cada proceso, se ejecuta un wait(s) justo antes de su seccin crtica. Si el valor de s es negativo, se suspende el proceso. Si el valor es 1, se decrementa a 0 y el proceso entra inmediatamente en su seccin critica; puesto que s ya no es positivo, no se permitir a ningn otro proceso entrar en su seccin critica. program exclusion_mutua; El semforo se inicializa a 1. De este modo, el const n = ; (* nmero de procesos *); var s: semforo primer proceso que ejecute un wait podr (:= 1); entrar inmediatamente en la seccin crtica, procedure P (i: entero); poniendo el valor de s a 0. Cualquier otro begin proceso que intente entras en la seccin repeat critica La encontrar ocupada y se bloqueara, poniendo el valor de s a -1. Cualquier nmero wait(s) de procesos puede intentar entrar; cada uno ; de estos intentos infructuosos origina un signal(s); nuevo decremento del valor de s. forever El semforo se inicializa a 1. De este modo, el end; primer proceso que ejecute un wait podr entrar inmediatamente en la seccin crtica, begin (* programa principal *) poniendo el valor de s a 0. Cualquier otro parbegin proceso que intente entras en la seccin P(1); critica La encontrar ocupada y se bloqueara, P(2); poniendo el valor de s a -1. Cualquier nmero de procesos puede intentar entrar; cada uno P(n); de estos intentos infructuosos origina un parend nuevo decremento del valor de s. end. Figura 2.3 Exclusin Mutua por Medio de Semforos Cuando el proceso que entr al principio en su seccin critica salga, se incrementar s y se eliminar uno de los procesos bloqueados (si los hay) de la cola de procesos asociada al semforo, ponindolo en el estado listo. Cuando sea planificado de nuevo por el sistema operativo, podr entrar en la seccin critica.

Pgina 5 de 15

Colegio Universitario Francisco de Miranda Unidad Curricular:: SISTEMAS OPERATIVOS Modulo: SISTEMAS OPERATIVOS II Apuntes Recopilados por: Profesor Bernardo Gonzalez Rojas

El algoritmo de exclusin mutua por medio de semforos se puede ilustrar con el modelo del igl (figura 2.4). Adems de la pizarra, el igl tiene un potente congelador. Un proceso entra para realizar un wait, decrementa el valor de la pizarra en 1. Si el valor que hay ahora en la pizarra no es negativo, puede entrar en su seccin critica. En otro caso, entra en hibernacin en el congelador. Figura 2.4 Un Iglu Semforo Esto vaca el interior del igl, permitiendo que otros procesos entren. Cuando un proceso ha completado su seccin crtica, entra al igl para realizar un signal, incrementando el valor de la pizarra en 1. Si el valor no es positivo, libera un proceso del congelador. El programa de la figura 2.3 puede manejar igual de bien el requisito de que ms de un proceso pueda entrar en su seccin crtica en un instante. Este requisito se satisface simplemente inicializando el semforo con un valor especfico. De este modo, en cualquier instante, el valor de s.contador puede interpretarse como sigue:

s.contador _ 0: s.contador es el nmero de procesos que pueden ejecutar un wait(s) sin bloquearse (si no seejecuta ningn signal(s) mientras tanto).

s.contador