Unidad 5-Coordinacion y Sincronizacion de Procesos

October 11, 2022 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download Unidad 5-Coordinacion y Sincronizacion de Procesos...

Description

 

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

UNIDAD 4: COORDINACION Y SINCRONIZACION DE PROCESOS. TEMA Nº 1: CONCURRENCIA. 1.1. Introducción. Los conceptos claves en los que se basan los sistemas operativos modernos son el de proceso y el de hilo. Los temas fundamentales de diseño de sistemas operativos están relacionados con la gestión de procesos:  Multiprogramación: Es la gestión de varios procesos dentro de un sistema monoprocesador. La mayoría de

los computadores personales, estaciones de trabajo, sistemas monoprocesador y sistemas operativos actuales de estas máquinas, tales como Windows 7, OS/2 y el Sistema 7 de Macintosh dan soporte a la multiprogr multi programaci amación. ón. Los siste sistemas mas opera operativos tivos como UNI UNIX X y LINUX LINUX incorporan incorporan multiprograma multiprogramación ción de sistemas monoprocesador compartidos.  Multiproceso Multiproceso:: Es la gestión de varios procesos dentro de un sistema multiprocesador. Hasta no hace

mucho, los sistemas mucho, sistemas multiproc multiprocesador esador se util utilizaba izaban n únicamente únicamente en grandes grandes sistemas, sistemas, computadores computadores centrales y minicomputadores. Los sistemas operativos como MVS y VMS dan soporte de multiproceso. Más recie reciente ntemen mente, te, el multi multipro proces ceso o ha empeza empezado do a gan ganars arse e la aproba aprobació ción n de los servid servidore ores s y las estaciones de trabajo. Windows NT es un ejemplo de un sistema operativo diseñado para estos entornos.  Proceso distribuido: distribuido: Es la gestión de varios procesos que ejecutan en sistemas de computadores múltiples

y remotas.

1.2. Definición. La concurrencia es el punto clave de los tres campos anteriores y fundamentales para el di-seño de sistemas operativos. La concurrencia comprende un gran número de cuestiones de diseño, incluyendo la comunicación entre procesos, compartición y competencia por los recursos, sincronización de la ejecución de varios procesos y asignación 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: aplicaciones: La mul multip tiprog rogram ramaci ación ón se cre creó ó para para per permi mitir tir que el tie tiempo mpo de proces procesado adorr de la

máquina fuese compartido dinámicamente entre varios trabajos o aplicaciones activas.   Aplicaciones estructuradas: Como ampliación de los principios del diseño modular y la programación

estructurada, algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos concurrentes.

  • Estructura del sistema operativo: operativo : Las mismas ventajas de estructuración son aplicables a los

programadores de sistemas y se ha comprobado que algunos sistemas operativos están implementados como un conjunto de procesos.

1.3. Ejemplo Concurrencia. Para Para ilust ilustra rarr es esto tos s co conc ncep epto tos s y co comp mpar arar ar lo los s métodos presentados métodos presentados en este tema, se usan dos proble pro blemas mas clásic clásicos os de con concur curren rencia cia.. En primer  primer  lugar, se presentará el problema del productor/consumidor como ejemplo típico. El tema termina con el problema de los lectores/escritores. En un si sist stem ema a mu mult ltip ipro rogr gram amad ado o con un ún únic ico o procesador, los procesos se intercalan en el tiempo Página 1 de 15

 

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

para dar la apa para apari rienci encia a de eje ejecuc cución ión simult simultáne ánea a (figura 1.1).

Figura 1.1 - Intercalación

Aunque no se consigue un proceso paralelo real y aunque se produce una cierta sobrecarga en los inte in terc rcam ambi bios os de proc proces esos os de un si siti tio o a otro otro,, la ej ejec ecuc uciión inter nterca callada ada prod produc uce e be bene nefficio icios s importantes en la eficiencia del procesamiento y en la estructuración de los programas. En un sistema sistema con varios varios proce procesador sadores, es, no solo es po posi sibl ble e inte interc rcal alar ar los los proce proceso sos, s, si sino no tamb tambié ién n superponerlos (figura 1.2).

Figura 1.2 – Intercalación y Superposición

A primera vista, podría parecer que la intercalación y la superposición representan formas de ejecución muy diferentes y que introducen problemas distintos. De hecho, ambas técnicas 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 multiprogramación parten del hecho de que la velocidad relativa de ejecución 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 políticas de planificación. Así surgen las siguientes dificultades:

i.- La compartición de recursos globales está llena de riesgos. Por ejemplo, si dos procesos hacen uso al mismo tiempo 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 crítico. En el siguiente apartado se ofrece un ejemplo de este problema.

ii.- Para el sistema operativo resulta difícil asignar los recursos de forma óptima. Por ejemplo, el proceso A puede solicitar 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 po r parte de otros procesos, se tiene una cierta ineficiencia.

iii.-

Resulta difícil localizar un error de programación p rogramación porque los resultados no son normalmente reproducibles.

Todas las dificultades anteriores se presentan también en los sistemas multiprocesador, ya que también en ellos es impredecible la velocidad relativa de ejecución de los procesos. Un sistema multiprocesador debe solucionar, además, 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 gestión y diseño 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.

ii.- El sistema operativo debe asignar y quitar los distintos recursos a cada proceso activo. Entre estos recursos se incluyen:  Tiempo de procesador: Es función de la planificación.  Memoria: La mayoría de los sistemas operativos emplean esquemas de memoria virtual.  Arc Archi hivo vos s.  Dispositivos de E/S. E/S.

iii.- El sistema operativo operativo debe proteger los datos y los recur recursos sos físicos de cada proceso contra injerencias injerencias no int intenc encion ionada adas s de otr otros os proces procesos. os. Est Esto o supone supone emple emplear ar técnic técnicas as rel relati ativas vas a la memori memoria, a, archiv archivos os y dispositivos de E/S, que se estudian en los capítulos correspondientes.

Página 2 de 15

 

Colegio Universitario Universitario “Francisco de Miranda” Unidad Curricular:: SISTEMAS OPERATIV OPERATIVOS OS 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 la ejecución con respecto a otros procesos concurrentes. Para comprender cómo 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 recursos Los procesos concurrentes concurrentes entran en confl conflicto icto cuando compite compiten n por el uso del mismo mismo recurso. recurso. Básicam Básicamente, ente, es posible describir esta situación como sigue. Dos o más procesos necesitan acceder a un recurso durante el curso de su ejecución. Cada proceso no es consciente de la existencia de los otros y no se ve afectado por su ejecución. 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 e l reloj. No hay intercambio de información entre los procesos en competencia. Sin embargo, la ejecución 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 retrasa retrasará. rá. En el peor caso, el proceso bloquea bloqueado do puede que no consiga nunca acceder al recurso y, por tanto, no terminará con éxito nunca.

1.4.2.-Cooperación entre procesos por compartición El caso caso de coo cooper peraci ación ón por com compar parti tició ción n compre comprende nde a los proces procesos os que in inter teract actúan úan con otros otros sin tener  tener  conocimient conoci miento o explicito explicito de ello ellos. s. Por ejemplo, varios procesos pueden tene tenerr acceso acceso a variables variables compartidas, 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í Así pu pues es,, los los proc proces esos os de debe ben n co coop oper erar ar pa pasa sa aseg asegur urar ar qu que e lo los s da dato tos s qu que e se co comp mpar arte ten n se ges gesti tion onan an correctamente. Los mecanismos de control deben garantizar la integridad de los datos compartidos.

1.4.3.- Cooperación entre procesos por comunicación En 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 compartición. En caso de competencia, los procesos están compartiendo recursos sin tener conocimiento de la existencia de otros procesos. En el segundo caso, están 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  comunicación, en cambio, los distintos procesos participan en una labor común que une a todos los procesos. La comunicación es una manera de sincronizar o coordinar las distintas actividades. Normalmente, la comunicación puede caracterizarse por estar formada por mensajes de algún tipo. Las primitivas para enviar y recibir mensajes pueden venir dadas como parte del lenguaje de programación o por el núcleo del sistema operativo.

TEMA N° 2 SEMAFOROS. 2.1. Introducción. Se vuelven a considerar ahora los mecanismos que se usan en el sistema operativo y en los lenguajes de programación para dar soporte a la concurrencia. En este tema se trataran los semáforos. En las dos siguientes secciones se discutirá sobre los monitores y el paso de mensajes. El primer gran avance en la resolución de los problemas de procesos concurrentes llegó en 1965, con el tratado de Dijkstra sobre la cooperación entre procesos secuénciales, Dijkstra estaba interesado en el diseño de un sistema operativo como un conjunto de procesos procesos secuénciales cooperantes y en el desarrollo de mecanismos eficientes y fiables para dar soporte a la cooperación. Los procesos de usuario podrán utilizar estos mecanismos en tanto que el procesador y el sistema operativo los hagan disponibles. El principio fundamental es el siguiente: Dos o más procesos pueden cooperar por medio de simples señales, de forma que se pueda obligar a detenerse a un proceso en una posición determinada hasta que reciba una señal Página 3 de 15

 

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

específica. Cualquier requisito complicado de coordinación puede satisfacerse por medio de la estructura de señales señal es adecu adecuada. ada. Para la señal señalizaci ización, ón, se usan variable variables s especi especiales ales llamados semáforos. semáforos. Para transmitir una señal por el Semáforo s, s , los proces procesos os ejecu ejecutan tan la prim primitiv itiva a signal(s) signal(s).. Para recibir una señal del semáforo s, los procesos proce sos ejecu ejecutan tan la prim primitiv itiva a wait(s) wait(s); si la señ señal al corres correspon pondie diente nte aún no se ha transm transmit itido ido,, el proces proceso o es suspendido hasta que tenga lugar la transmisión.

2.2. Funcionamiento de los Semáforos.

Para lograr el efecto deseado, se pueden contemplar los semáforos como variables que tienen un valor entero sobre el que se definen las tres operaciones o peraciones siguientes:

i.- Un semáforo puede inicializarse con un valor no negativo. ii.- La oper operación ación wait wait   decrementa el valor del semáforo. Si el valor se hace negativo, el proceso que ejecuta el wait  se bloquea. wait

iii.-

La operación operación signal signal   incrementa el valor del semáforo. Si el valor no es positivo, se des-bloquea a un proceso bloqueado por una operación wait. wait .

Aparte de estas tres operaciones, no hay forma de examinar o manipular los semáforos.

2.3. Implementación de Semáforos. La figura 2.1 propone una definición más formal de las primitivas de los semáforos. Las primitivas wait wait   y signal  signal  se supone sup onen n ató atómi micas cas,, es dec decir, ir, no pue pueden den ser interr interrump umpida idas s y cada cada rutina rutina puede puede consid considera erarse rse com como o un paso paso indivisib indiv isible. le. En la figura 2.2 se defin define e una versión más lim limitada itada,, conocida conocida como semáforo semáforo binario. binario. Un semáforo binario solo puede tomar los valores 0 y 1. En principio, los semáforos binarios son más sencillos de implementar y puede demostrarse que tienen la misma potencia de expresión que los semáforos generales.

Figura 2.1 – Una Definición Primitivas Primitivas Semáforos Figura 2.2 – Una Definición Primitivas Primitivas Semáforos Binarios

Página 4 de 15

 

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

Tanto Tan to en los semáf semáforo oros s como como en los semáf semáforo oros s bi binar narios ios se emplea emplea una cola cola para para manten mantener er los procesos procesos esperando en el semáforo. La definición no dicta el orden en el que se quitan los procesos de dicha cola. La política más equitativa es la FIFO: el proceso que ha estado bloqueado durante más tiempo se libera de la cola. La única exigencia estricta es que un proceso no debe quedar retenido en la cola de un semáforo indefinidamente porque otros procesos tengan preferencia. _ 

2.4.- Exclusión Mutua La figura 2.3 muestra una solución sencilla al problema de la exclusión mutua por medio de un semáforo s. Sean n procesos, identificados por el array P(s). En cada proceso, p roceso, se ejecuta un wait(s) justo antes de su sección crítica. Si el valor valor de s s   es negativo, se suspende el proceso. Si el valor es 1, se decrementa a 0 y el proceso entra inmediatamente en su sección critica; puesto que s ya no es positivo, no se permitirá a ningún otro proceso entrar  en su sección critica. program exclusion_mutua; El semáforo se inicializa a 1. De este modo, el const n = …; (* número de procesos p rocesos *); var s: semáforo pr prim imer er pr proc oces eso o qu que e ejec ejecut ute e un wa wait it   podrá (:= 1); entrar inmediatamente en la sección crítica, procedure P (i: entero); poniendo el valor de s a 0. Cualquier otro begin pr proc oces eso o qu que e in inte tent nte e entr entras as en la se secc cció ión n repeat critica La encontrará ocupada y se bloqueara, wait(s) poniendo el valor de s a -1. Cualquier número de procesos puede intentar entrar; cada uno de esto estos s inte intent ntos os infr infruc uctu tuos osos os orig origin ina a un nuevo decremento del valor de s. El semáforo se inicializa a 1. De este modo, el pr prim imer er pr proc oces eso o qu que e ejec ejecut ute e un wa wait it   podrá entrar inmediatamente en la sección crítica, poniendo el valor de s a 0. Cualquier otro pr proc oces eso o qu que e in inte tent nte e entr entras as en la se secc cció ión n critica La encontrará ocupada y se bloqueara, poniendo el valor de s a -1. Cualquier número de procesos puede intentar entrar; cada uno de esto estos s inte intent ntos os infr infruc uctu tuos osos os orig origin ina a un nuevo decremento del valor de s.

; signal(s); forever  end; begin (* programa principal *) parbegin P(1); P(2); … P(n); parend end. Figura 2.3 – Exclusión Mutua por Medio de Semáforos

Cuando el proceso que entró al principio en su sección critica salga, se incrementará s y se eliminará uno de los procesos bloqueados (si los hay) de la cola de procesos asociada al semáforo, poniéndolo en el estado listo. Cuando sea planificado de nuevo por el sistema operativo, podrá entrar en la sección critica.

Página 5 de 15

 

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

El algoritmo de exclusión mutua por medio de semáf áfo oros se pue puede ilustrar ilust rar con el modelo del iglú (figura 2.4). Además de la pizar pizarra, ra, el iglú tiene un potent potente e con congel gelado ador. r. Un proc proces eso o entr entra a pa para ra realizar un wait, decrementa el valor de la pizarra en 1. Si el valor  que hay ahora en la pi piza zarr rra a no es ne nega gati tivo vo,, puede entrar en su secció sec ción n cri critic tica. a. En otr otro o caso, entra en hibernación en el congelador. Figura 2.4 – Un Iglu Semáforo Esto vacía el interior del iglú, permitiendo que otros procesos entren. Cuando un proceso ha completado su el puede valor de la pizarra Si el el requisito valor no de es secci sección ón crítica, entra al iglú realizar un signal signal, incrementando positivo, libera un proceso delpara congelador. El programa de la figura 2.3 manejar igualen de1. bien que más de un proceso pueda entrar en su sección crítica en un instante. Este requisito se satisface simplemente inicializando el semáforo con un valor específico. De este modo, en cualquier instante, el valor de s.contador puede interpretarse como sigue:  

s.contador _ 0: s.contador es el número de procesos que pueden ejecutar un wait(s)  wait(s) sin bloquearse (si no se ejecuta ningún signal(s) mientras tanto).

 

s.contador
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF