Libro2_Capitulo9

Click here to load reader

download Libro2_Capitulo9

of 69

Transcript of Libro2_Capitulo9

Sincronizacin de Procesos

Capitulo 9 - Sistemas Operativos Autor (es): Dhananjay M. Dhamdhere

Introducciny Los procesos interactivos con el fin de cumplir una meta en

comn, necesitan compartir datos o coordinar actividades entre s. La sincronizacin para acceder a datos garantiza que aquellos que se comparten no pierdan consistencia cuando son actualizados por varios procesos.y Esto se realiza asegurndose de que los accesos a datos

compartidos sean efectuados de manera mutuamente exclusiva.y Los

sistemas de cmputo proporcionan instrucciones indivisibles(tambin llamadas instrucciones atmicas) para apoyar el acceso a datos y la sincronizacin de controles.

Sincronizacin de Acceso a Datosy Las condiciones de ejecucin surgen si varios procesos

acceden a datos compartidos sin que exista coordinacin. Las condiciones de ejecucin no son reproducible y, por ende, la depuracin es difcil.y Se usa la sincronizacin de acceso a datos para acceder a

datos compartidos de manera mutuamente exclusiva. Esto evita las condiciones de ejecucin y salvaguarda la consistencia de los datos compartidos.

Sincronizacin de Controles

y La sincronizacin de controles es necesaria si un proceso

ejecuta alguna accin ai, slo despus de que algunos otros procesos han ejecutado una serie de acciones {aj} o slo cuando se tiene una serie de condiciones {ck}.

Implementando la Sincronizaciny La tcnica bsica que se usa para realizar la sincronizacin

consiste en bloquear un proceso hasta que una accin apropiada es ejecutada por otro, o hasta que se cumpla una condicin.y As,

la sincronizacin de acceso a datos se realiza bloqueando un proceso hasta que el otro termina su acceso a los datos compartidos.

y La sincronizacin de controles se realiza bloqueando un

proceso hasta que otro efecte una accin especfica.

Secciones Crticasy Una seccin crtica (SC) para un tem de dato ds, es una

seccin de cdigo que no debe ser ejecutada consigo misma ni con otras secciones crticas para ds.y Si algn proceso Pi, est ejecutando una seccin crtica para

ds, otro proceso que desea ejecutar una seccin crtica para ds, tendr que esperar hasta que Pi termine la ejecucin de su seccin crtica.y De este modo, una SC para un tem de dato ds, es una

regin de exclusin mutua con respecto a los accesos a ds; a lo sumo, un proceso puede ejecutar una SC para ds en cualquier momento.

Secciones Crticasy Las condiciones de ejecucin en un tem de dato se evitan

cuando se realizan todas sus operaciones de actualizacin dentro de una SC para el tem de dato. Adems, para asegurar que los procesos vean valores consistentes de un tem de dato, todos sus usos tambin debern ocurrir dentro de una SC para el tem de dato.y Sealamos una SC en una parte de cdigo mediante un

recuadro de lneas discontinuas. Observe que los procesos podrn compartir una sola copia de cdigo.

Secciones Crticasy En este caso, una sola SC para ds, podr existir una

aplicacin. En forma alternativa, el cdigo para cada proceso podr contener una o varias SC para ds.y De un proceso que ejecuta una SC se dice que esta en una

SC. Tambin usamos los trminos entrar en una SC y salir de una SC para situaciones donde un proceso inicia y termina la ejecucin de una SC, respectivamente.

Secciones Crticas

y La figura muestra un proceso que tiene varias SC. stas se

podrn usar para acceder a los mismos o a distintos tems de datos compartidos. De este modo un proceso podr contener varias SC para el mismo tem de dato.

Secciones Crticasy La ausencia de condiciones de ejecucin se puede mostrar

de la siguiente manera:

y Partiendo de la definicin de SC, se deduce que solo uno de

ellos puede ejecutar su SC en cualquier momento dado, as que el valor resultando de nextseatno ser fi(fj(nextseatno)) o fj(fi(nextseatno))

Propiedades de una implementacin de una SCy Una implementacin de SC para un tem de dato ds, es como

un planificador para un recurso.y Debe estar al corriente de todos los procesos que quieren

entrar a una SC para ds y debe seleccionar un proceso para la entrada en una SC de acuerdo con las nociones de exclusin mutua, eficiencia e imparcialidad.y La exclusin mutua garantiza que no habr mapas de un

proceso en una SC para ds en un momento dado.

Propiedades esenciales de una implementacin de SCPropiedad Descripcin

Correccin En cualquier momento dado, a lo sumo un proceso podr ejecutar una SC para un tem de dato ds. Cuando una SC no est en uso, uno de los procesos que Progreso desean entrar en ella recibir permiso de entrar en la SC. Despus de que un proceso Pi haya indicado su deseo Espera de entrar en una SC para ds, la cantidad de veces que Limitada otros procesos puedan obtener la entrada en un SC para ds antes de Pi est limitada por un nmero entero finito.

El problema de Espera Activay Un proceso puede implementar una SC para un tem de dato

ds usando el siguiente cdigo sencillo:

y En el bucle mientras, el proceso revisa si algn otro proceso

est en una SC para el mismo tem de dato.

Condiciones de Ejecucin en la Sincronizacin de Controlesy Los procesos usan la sincronizacin de controles para

coordinar sus actividades entre s. Un requerimiento frecuente en la sincronizacin de procesos es que un proceso Pi deber ejecutar una accin ai solo despus de que el proceso Pj haya ejecutado una accin aj.

Pseudocdigo de este tipo de procesos.

Sealizaciny Sealizacin por variables booleanas

Sealizaciny La figura mostrada en la diapositiva anterior muestra como

se realiza la sealizacin. Los datos de Sincronizacin consisten en dos variables booleanas. La variable action_aj_performed es una seal para indicar si el proceso Pj ha ejecutado la accin aj.y La variable pi_blocked es una seal para indicar si el

proceso Pi se ha bloqueado a si mismo en espera de la ejecucin de la accin aj por parte del proceso Pj.

Condiciones de Ejecucin en la Sealizacin de Procesosy Segn la grafica considere las instrucciones if en los

procesos Pi y Pj como las operaciones fi y fj en el estado del sistema. El resultado de su ejecucin deber ser uno de los siguientes: el proceso Pi se bloquea a si mismo, es activado por Pj y ejecuta la accin ai. Sin embargo Pi se bloquea a si mismo y no es activado.

Operacin Indivisibley Una operacin indivisible es un conjunto de tems de datos

{ds} es una operacin que no se puede ejecutar en forma concurrente con cualquier otra operacin que involucra un tem de dato incluido en {ds}.

Implementacin de Secciones Crticas y Operaciones indivisiblesy La sincronizacin de procesos requiere secciones crticas u

operaciones de sealizacin que son indivisibles. stas se realizan usando instrucciones indivisibles proporcionadas por sistemas de computo, as como variables de bloqueo.

Implementacin de Secciones Crticas y Operaciones indivisiblesy Instrucciones Indivisibles:

Si un sistema de cmputo contiene ms de un CPU, pueden presentarse condiciones de ejecucin incluso durante la ejecucin de una sola instruccin que toma ms de un acceso a una ubicacin de memoria; por ejemplo, una instruccin que incrementa el valor de una variable.

Implementacin de Secciones Crticas y Operaciones indivisiblesy Uso de una variable de bloqueo:

Se usa para puentear el espacio entre secciones crticas u operaciones indivisibles y las instrucciones indivisibles proporcionadas en un sistema de cmputo. La idea bsica es poner un cerrojo al inicio de una seccin crtica o de una operacin indivisible, y abrirlo al final de la seccin crtica o de la operacin indivisible.

Implementacin de Secciones Crticas y Operaciones indivisiblesy Uso

de una instruccin indivisible para realizar una instruccin crtica:

Problemas clsicos de la Sincronizacin de Procesosy La solucin para un proceso de sincronizacin de procesos

deber usar una combinacin adecuada de estos elementos. Tambin deber poseer tres propiedades importantes:1. Correccin 2. Mxima Concurrencia 3. No existencia de Esperas Activas y Los criterios de correccin dependen de la naturaleza de un

problema. stos proyectan requerimientos referentes a la sincronizacin de accesos a datos y a la sincronizacin de controles de procesos interactivos.

Productores/Consumidores con buffers acotadosy Consiste

en un numero no especifico de procesos productores y consumidores, as como un rea central de memoria finita para buffers.

y Cada buffer es capaz de contener un registro de informacin;

se dice que est lleno cuando un productor graba en el, y vacio cuando un productor copia u registro contenido en l; en un inicio el buffer esta vacio.

Productores/Consumidores con buffers acotados

y Productores y Consumidores

Productores/Consumidores con buffers acotadossistema de productores/consumidores con buffers acotados es una abstraccin de muchos problemas prcticos de sincronizacin. y Una Solucin para el problema de productores/consumidores debe cumplir con las siguientes condiciones: 1. Un productor de debe sobre escribir en un buffer lleno. 2. Un consumidor no debe consumir de un buffer vacio. 3. Productores y Consumidores deben acceder a buffers de manera mutuamente exclusiva. 4. Las informaciones deben consumirse en el mismo orden aplicado para colocar en los buffers, es decir, en orden FIFO.y Un

Lectores y Escritoresy Un sistema de lectores/escritores consiste en una serie de

procesos que usan algunos datos compartidos.y Un proceso que solo lee datos es un lector; uno que los

modifica o actualiza es el escritor.y Usamos trminos de lectura y escritura para referirnos a

accesos a los datos compartidos realizados por procesos de lectores y escritores, respectivamente.

Lectores y Escritoresy Las

condiciones de correccin para el problema de lectores/escritores son las siguientes:1. Muchos lectores pueden realizar la lectura en forma

concurrente. 2. La lectura esta prohibida mientras un lector escribe. 3. Slo un lector puede realizar escritura en cualquier momento dado. 4. Un lector tiene una prioridad no preferente sobre escritores, es decir, obtendr acceso a los datos compartidos antes que un escritor en espera, pero no tendr preferencia sobre un escritor activo.

Ejemplo de Lectores y Escritoresy Los lectores y escritores comparten una cuenta bancaria. Los

procesos de lectores print statement y stat analysis nicamente leen los datos de la cuenta bancaria; por ende, pueden ejecutar en forma concurrente.

Estructura de Sistemas Concurrentesy Un sistema concurrente es aquel que contiene procesos

concurrentes; tiene tres componentes clave: 1. Datos compartidos. 2. Operaciones con datos compartidos. 3. Procesosy

Los datos compartidos pueden ser de dos tipos: datos usados y manipulados por procesos y datos definidos y usados para la sincronizacin de procesos. Una operacin de sincronizacin, es aquella con datos de sincronizacin.

y

Estructura de Sistemas Concurrentesy Instantnea de un sistema concurrente: Una instantnea

de un sistema concurrente es una vista (fotogrfica) del sistema en un momento especfico. sta muestra las relaciones entre datos compartidos, operaciones y procesos en ese momento.

y Convenciones pictricas para instantneas concurrentes

El planteamiento algortmico para la implementacin de secciones crticasy Este tipo de planeamiento emplea un ordenamiento de

condiciones lgicas para cumplir con los requerimientos de sincronizacin deseados.y Todos los sistemas que usan el planteamiento algortmico

para la implementacin de SC tiene algunas caractersticas y debilidades comunes.y Un proceso que desea usar una SC verifica unas cuantas

condiciones para decidir si puede entrar en la SC.

El planteamiento algortmico para la implementacin de secciones crticas1. La estructura de control Parbegin-Parend se usa para

encerrar el cdigo que se deber ejecutar en paralelo. Esta estructura de control tiene la sintaxis Parbegin Parend. Si contiene n instrucciones, la ejecucin de la estructura de control Parbegin-Parend crea n procesos, y cada uno consiste en la ejecucin de una instruccin en .y Por ejemplo, Parbegin S1, S2, S3, S4 Parend inicia cuatro

procesos que ejecutan S1, S2, S3 y S4 , respectivamente

El planteamiento algortmico para la implementacin de secciones crticas2. Las instrucciones de variables compartidas se colocan

antes de un Parbegin. 3. Las instrucciones de variables locales se colocan al principio de un proceso. 4. Los comentarios estn cerrados entre llaves { }. 5. El sangrado se usa para mostrar el anidamiento de las estructuras de control.y

Empezamos por la discusin de realizaciones de SC para ser usadas por dos procesos. Posteriormente ampliamos algunos de estos sistemas para ser usada por n procesos.

Dos algoritmos de Procesoy

ALGORITMO 9.1

Dos algoritmos de Procesoy

ALGORITMO 9.2

Dos algoritmos de Procesoy

ALGORITMO 9.3

Dos algoritmos de Proceso

Algoritmos de n Procesos

Algoritmo Bakery

Semforosy

Un semforo es una variable entera compartida con valores no negativos que slo pueden estar sujetos a las siguientes operaciones:1. Inicializacin

(especificada

como

parte

de

su

declaracin). 2. Las operaciones indivisibles wait y signal.

Semforosy

A continuacin se muestra la semntica de operaciones wait y signal en un semforo.

Uso de Semforos en sistemas concurrentesExclusin Mutua La exclusin mutua puede ser implementada usando un semforo que es inicializado en 1. Un proceso ejecuta una operacin wait en el semforo antes de entrar en una SC, y ejecuta una operacin signal cuando sale de ella. Un tipo especial de semforo llamado semforo binario simplifica la implementacin de SC an ms.

Concurrencia La concurrencia acotada implica que una funcin puede ser ejecutada Acotada concurrentemente por n procesos, 1 n c, donde c es una constante. Un Semforo inicializado a c puede ser usado para realizar la concurrencia acotada. Sealizacin La sealizacin se usa cuando un proceso Pi desea realizar una accin ai solo despus de que el proceso Pj haya realizado una accin aj. Se realiza usando un semforo inicializado en 0 . Pi realiza un signal en el semforo despus de realizar la accin aj. Este arreglo asegura que Pi ejecute ai slo despus de que Pj ejecuta aj.

Semforosy

A continuacin se detalla la implementacin de SC mediante semforos.

Semforosy

Instantneas del sistema concurrente detallado en la diapositiva anterior:

Semforosy

Semforos Binarios: Es una forma especial de semforo usada para realizar la exclusin mutua. Por tanto, frecuentemente se le llama mutex. Este tipo de Semforo es inicializado en 1 y solo toma los valores de 0 y 1 durante la ejecucin del programa. Concurrencia Acotada: Este termino se usa para referirnos a la situacin en la que hasta c procesos pueden ejecutar en forma concurrente una operacin opi, donde c es una contante 1.

y

Semforosy

En las siguientes lneas de cdigo se muestra cmo una serie de procesos concurrentes comparte cinco impresoras.

Productores/Consumidores usando semforos

Sealizacin Usando Semforos

Productores/Consumidores usando semforosy

Productores/Consumidores con un solo buffer

Productores/Consumidores usando semforosy

Instantneas de Productores/Consumidores con un solo buffer usando semforos:

Productores/Consumidores usando semforosy

Buffers acotados usando semforos

Lectores/Escritores usando semforosy

Caractersticas clave del problema de Lectores/escritores:1. Cualquier nmero de lectores puede leer en forma

concurrente. 2. Lectores y escritores deben esperar si un escritor esta escribiendo. Cuando el escritor sale, se debern activar todos los lectores en espera o se deber activar un lector en espera. 3. Un escritor debe esperar si hay lectores que estn leyendo. Se debe activar cuando el ltimo lector salga.

Lectores/Escritores usando semforosy

Implementamos estas caractersticas manteniendo la cuenta del nmero de lectores y escritores que desean leer o escribir en algn momento dado. Se introducen los siguientes contadores para este propsito:1. Runread

conteo de lectores que estn actualmente

leyendo. 2. Totread conteo de lectores esperando para leer o leyendo concurrentemente. 3. Runwrite conteo de escritores que estn actualmente escribiendo. 4. Totwrite conteo de escritores esperando para escribir o escribiendo concurrentemente.

Lectores/Escritores usando semforosy

A continuacin se muestra el esquema de solucin definida para lectores/escritores sin prioridad de lectores.

Lectores/Escritores usando semforosy

Implementacin de Semforos:

Lectores/Escritores usando semforosy

Implementacin de Operaciones wait y signal:

Regiones Crticas Condicionadasy

La regin crtica condicionada (RCC) es una estructura de control en un lenguaje de programacin de alto nivel.

y

FIGURA 9.32 (Programa usan RCC)

Regiones Crticas Condicionadas

y

Buffer acotado usando RCC

Monitoresy

Un monitor es un constructor de lenguaje de programacin que soporta tanto la sincronizacin de acceso de datos como la de controles. Un tipo de monitor se parece a una clase en un lenguaje C++ o Java. Un programa concurrente crea objetos de monitor, y los usa para ejecutar operaciones con datos compartidos y para realizar operaciones de sincronizacin de procesos.

y

Aspectos de un Tipo MonitorAspecto Declaracin de Datos Descripcin Aqu se declaran datos compartidos y variables de condicin. Copias de estos datos existen en cada objeto de un tipo de monitor. Se inicializan datos cuando un monitor, es decir, un objeto de un tipo de monitor, es creado. Las operaciones con datos compartidos son codificadas como compartidos procedimientos del tipo de monitor. El monitor asegura que estas operaciones sean ejecutadas en forma mutuamente exclusiva. Los procedimientos del tipo monitor prefieren el uso de operaciones de sincronizacin wait y signal sobre variables de condicin para sincronizar la ejecucin de procesos.

Inicializacin de Datos Operaciones de Datos

Operacin de Sincronizacin

Monitoresy

Implementacin de monitor de un semforo binario

Monitoresy

Un monitor realizando un semforo binario.

Planificador de disco: un caso de estudioy

Los procesos del usuario comparten un discode cabeza mvil. Se usa un monitor para iniciar operaciones de E/S en el disco. Un proceso de usuario llama a un procedimiento del monitor para transmitir los detalles de una operacin de E/S. 1. Datos compartidos: Datos en relacin con operaciones de E/S pendientes. 2. Operaciones con datos compartidos: Se pueden identificar las siguientes operaciones: a. Agregar una operacin de E/S a una lista I/O_list. b. Borrar una operacin de E/S de una lista I/O_list. c. Analizar operaciones de E/S en I/O_list y ejecutar planificacin.

Planificador de disco: un caso de estudioy

Un monitor para la implementacin del planificador de discos.

Monitor de Discoy

Toma instantnea del monitor de disco:

Monitores en Javay

Una clase de Java se convierte en un tipo de monitor cuando el atributo synchronized es asociado con uno o varios mtodos de su clase. Un objeto de una de estas clases es un monitor. La mquina virtual de Java asegura la exclusin mutua por medio de los mtodos synchronized en un monitor. Cada monitor contiene una sola variable de condicin sin nombre.

y

Sincronizacin de procesos en Unixy

El sistema V de Unix ofrece la implementacin de semforos en el nivel de kernel. El kernel realiza las operaciones de wait y signal y los procesos invocan a estas operaciones por medio de llamadas al sistema. Unix SVR4 ofrece una caracterstica interesante para hacer ms confiables los programas que usan semforos. Mantiene pendientes todas las operaciones ejecutadas por un proceso en cada semforo que usa, y realiza un deshacer en estas operaciones cuando termina el proceso.

y

Sincronizacin de procesos en Linuxy

Linux ofrece un semforo parecido al de Unix para ser usado por parte de los procesos de usuario. Tambin ofrece dos tipos de semforos para su empleo por parte de un kernel: uno convencional y uno de lectores/escritores. La puesta en funcionamiento del semforo convencional para el kernel es anloga al esquema de implantacin en el nivel de kernel. Para este tipo de SO las operaciones wait y signal emplean instrucciones indivisibles para reducir e incrementar el valor del semforo.

y

Sincronizacin de procesos en Windowsy

Windows es un sistema orientado a objetos. Todas las entidades del sistema estn representadas por ellos. El kernel proporciona objetos llamados dispatcher objects para la sincronizacin de hilos. Cada uno de los objetos que representan procesos, archivos y eventos implanta un objeto de despachador. De este modo, estos objetos pueden usarse para la sincronizacin de hilos. Mutexes y semforos tambin son representados por objetos.

y