Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Universidad de Guadalajara Centro Universitario de Ciencias Exactas e Ingenierías Ingeniería en Computación Departamento De Ciencias Computacionales Asignatura: Sistemas Operativos Profesor: Martha del Carmen Gutiérrez Salmerón Ingeniería en Computación Nombre: Jose Luis Serna Serna Código: 218292327 Ingeniería en Computación Tarea 10: Concurrencia. Exclusión mutua y sincronización. Sección: D02 04/11/20 1 Índice Introducción 2 Reporte 4 Principios de la concurrencia 4 Condición de carrera. 5 Preocupaciones del sistema operativo. 5 Interacción de procesos 6 Problemas de control 6 Requisitos para la exclusión mutua 7 Exclusión mutua: soporte hardware 8 Deshabilitar interrupciones: 8 Instrucciones maquina especiales: 8 Algoritmo de Dekker y algoritmo de Peterson 9 Primera tentativa 9 Segunda tentativa 9 Tercera tentativa 10 Cuarta tentativa 10 Semáforos 11 1.Semáforo general. 12 2 2.Semáforo binario. 12 3.Semáforo contador. 12 4.Semáforos fuertes. 12 5.Semáforos débiles. 12 Monitores 12 Paso de mensajes 13 El problema de los lectores/escritores. 13 Conclusión 14 Bibliografía 15 Introducción Un proceso es la unidad de trabajo en un sistema. Un sistema consta de una colección de procesos, algunos de los cuales son procesos del sistema operativo (los que ejecutan el código del sistema) y el resto son procesos del usuario (los que ejecutan el código del usuario). Todos estos procesos pueden potencialmente ejecutarse al mismo tiempo, multiplexando en una sola CPU, por ejemplo. El sistema operativo es responsable de las siguientes actividades en relación con la gestión de procesos: I. Programar procesos y subprocesos en las CPU II. Crear y eliminar procesos de usuario y del sistema III. Suspender y reanudar procesos IV. Proporcionar mecanismos para la sincronización de procesos. V. Proporcionar mecanismos para la comunicación de procesos. En un sistema con varios núcleos, la simultaneidad significa que los subprocesos pueden ejecutarse en paralelo, porque el sistema puede asignar un subproceso separado a cada núcleo, por otro lado, en un sistema multiprogramado con un único procesador los procesos se van intercambiando cada cierto tiempo con 3 algoritmos tales como FIFO, RR, SJF entre otros, para dar una apariencia de ejecución simultánea. Uno de los objetivos del sistema operativo es la representación de los procesos y el soporte de los cambios de contexto entre procesos, que posibilitan la compartición del recurso CPU. El acceso a otros recursos compartidos y la comunicación entre procesos relacionados hacen necesaria la utilización de mecanismos de sincronización dentro del sistema operativo. Típicamente, un proceso requiere la CPU durante un periodo de tiempo, realiza alguna operación de E/S, y vuelve a requerir la CPU, repitiendo este ciclo hasta la finalización del programa. Cada vez que un proceso pasa al estado preparado, está compitiendo por el recurso CPU. Un segundo objetivo del sistema operativo multiprogramado es la planificación del uso de los recursos de proceso. Uno de los grandes problemas que nos podemos encontrar es que el hecho de compartir recursos está lleno de problemas, por ejemplo, si dos procesos hacen uso al mismo tiempo de una variable global y ambos llevan a cabo tanto operaciones de lectura como de escritura sobre dicha variable, el orden en que se ejecuten estas lecturas y escrituras es crítico, puesto que se verá afectado el valor de la variable. Condiciones de Carrera: I. Situaciones en las que dos o más procesos leen o escriben en un área de memoria compartida y el resultado final depende de los instantes de ejecución de cada uno. II. Esto se soluciona impidiendo que más de un proceso acceda simultáneamente a las variables compartidas. III. Se soluciona garantizando la exclusión mutua. Exclusión mutua y Sección Crítica I. Consiste en que un solo proceso excluye temporalmente a todos los demás para usar un recurso compartido de forma que garantice la integridad del sistema. 4 II. Es la parte del programa con un comienzo y un final claramente marcados que generalmente contiene la actualización de una o más variables compartidas. III. Para que una solución al problema de la exclusión mutua sea válida, se tienen que cumplir una serie de condiciones: A. Hay que garantizar la exclusión mutua entre los diferentes procesos a la hora de acceder al recurso compartido. No puede haber en ningún momento dos procesos dentro de sus respectivas secciones críticas. B. No se deben hacer suposiciones en cuanto a la velocidad relativa de los procesos en conflicto. C. Ningún proceso que esté fuera de su sección crítica debe interrumpir a otro para el acceso a la sección crítica. D. Cuando más de un proceso desee entrar en su sección crítica, se le debe conceder la entrada en un tiempo finito, es decir, que nunca se le tendrá esperando en un bucle que no tenga final. Reporte Principios de la concurrencia En un sistema multiprogramado de procesador único, los procesos se entrelazan en el tiempo para ofrecer la apariencia de ejecución simultánea. Aunque no se consigue procesamiento paralelo real, e ir cambiando de un proceso a otro supone cierta sobrecarga, la ejecución entrelazada proporciona importantes beneficios en la eficiencia del procesamiento y en la estructuración de los programas. En un sistema de múltiples procesadores no solo es posible entrelazar la ejecución de múltiples procesos sino también solapar. En primera instancia, puede parecer que el entrelazado y el solapamiento representan modos de ejecución fundamentalmente diferentes y que presentan diferentes problemas. De hecho, ambas técnicas pueden verse como ejemplos de procesamiento concurrente y ambas presentan los mismos problemas. En el caso de un monoprocesador, los problemas surgen de una característica básica de los sistemas multiprogramados: no puede predecirse la velocidad relativa de ejecución de los procesos. Está depende de la actividad de otros procesos, de la forma en que el sistema operativo maneja las interrupciones y 5 de las políticas de planificación del sistema operativo. Todas las dificultades que puedan presentarse posteriormente también se presentan en un sistema multiprocesador, porque aquí tampoco es predecible la velocidad relativa de ejecución de los procesos. Un sistema multiprocesador debe bregar también con problemas derivados de la ejecución simultánea de múltiples procesos. Sin embargo, fundamentalmente los problemas son los mismos que aquellos en un sistema monoprocesador. Condición de carrera. Una condición de carrera sucede cuando múltiples procesos o hilos leen y escriben datos de manera que el resultado final depende del orden de ejecución de las instrucciones en los múltiples procesos. Un ejemplo de esto es, suponga dos procesos P1 y P2, comparten la variable local a. En algún punto de su ejecución, P1 actualiza a al valor 1 y, en el mismo punto en su ejecución P2 actualiza a al valor 2. Así, las dos tareas compiten en una carrera por escribir la variable a. En este ejemplo el “perdedor” de la carrera (el proceso que actualiza al último) determina el valor de a. Preocupaciones del sistema operativo. ¿Qué aspectos de diseño y gestión surgen por la existencia de la concurrencia? Se pueden enumerar como: 1.- El sistema operativo debe de ser capaz de seguir la pista de varios procesos. Esto se consigue con el uso de bloques de control de proceso. 2.- El sistema operativo debe ubicar y desubicar varios recursos para cada proceso activo, esto incluye: -Tiempo de procesador -Memoria -Ficheros -Dispositivos de E/S 3.- El sistema operativo debe proteger los datos y recursos físicos de cada proceso frente a interferencias involuntariasde otros procesos. Esto involucra técnicas que relacionan memoria, ficheros y dispositivos E/S. 4.- El funcionamiento de un proceso y el resultado que produzca, debe ser independiente de la velocidad a la que suceda su ejecución en relación con la velocidad de otros procesos concurrentes. 6 Interacción de procesos Podemos clasificar las formas en que los procesos interaccionan en base al grado en que perciben la existencia de cada uno de los otros. Se enumeran tres posibles grados de percepción: 1.- Procesos que no se perciben entre sí. 2.- Procesos que se perciben indirectamente entre sí. 3.- Procesos que se perciben directamente entre sí. Las condiciones no siempre serán tan claras. Mejor dicho, algunos procesos pueden exhibir aspectos tanto de competición como de cooperación. No obstante, es constructivo examinar cada uno de los tres casos de la lista precedente y determinar sus implicaciones para el sistema operativo. Competencia entre procesos por recursos. Los procesos concurrentes entran en conflicto entre ellos cuando compiten por el uso del mismo recurso. En su forma pura, pueden describirse la situación como sigue. Dos o más procesos necesitan acceso a un recurso durante el curso de ejecución. Ningún proceso se percata de la existencia de los otros procesos y ninguno debe verse afectado por la ejecución de los otros procesos. Esto conlleva que cada proceso debe dejar inalterado el estado de cada recurso que utilice. Ejemplos de recursos son los dispositivos de E/S, la memoria, el tiempo de procesador y el reloj. Cooperación entre procesos vía compartición. El caso de cooperación via compartición cubre procesos que interaccionan con otros procesos sin tener conocimiento explícito de ellos. Por ejemplo, múltiples procesos pueden tener acceso a variables compartidas o ficheros o bases de datos compartidas. Los procesos pueden usar y actualizar los datos compartidos sin referenciar otros procesos, pero saben que otros procesos pueden tener acceso a los mismos datos. Así los procesos deben cooperar para asegurar que los datos que comparten son manipulados adecuadamente. Cooperación entre procesos vía comunicación. Cuando los procesos cooperan vía comunicación, los diversos procesos involucrados participan en un esfuerzo común que los vincula a todos ellos. La comunicación proporciona una manera de sincronizar o coordinar varias actividades. Problemas de control Competencia entre procesos por recursos Los procesos concurrentes entran en conflicto cuando están compitiendo por el uso de un mismo recurso, p.ej. dispositivos E/S, memoria, tiempo de procesador, entre otros. 7 Los problemas de control a los que se enfrentan son los siguientes: ● Exclusión mutua ● Interbloqueo (deadlock) ● Inanición Cooperación entre procesos vía compartición La concurrencia de procesos se refiere a las situaciones en las que dos o más procesos puedan coincidir en el acceso a un recurso compartido o, dicho de otra forma, que requieren coordinarse en su ejecución. Para evitar dicha coincidencia, el sistema operativo ofrece mecanismos de arbitraje que permiten coordinar la ejecución de los procesos. En este caso, los procesos interaccionan con otros procesos sin tener conocimiento explícito de ellos. Es decir, los procesos pueden usar y actualizar los datos compartidos sin referenciar otros procesos, pero saben que otros procesos pueden tener acceso a los mismos datos. Aunque los mecanismos de control deben asegurar la integridad de los datos compartidos, los datos siguen estando en recursos (dispositivos E/S, memoria), y los siguientes problemas se siguen presentando: ● Exclusión mutua ● Interbloqueo (deadlock) ● Inanición Cooperación entre procesos vía comunicación Cuando los procesos cooperan vía comunicación, los diversos procesos involucrados participan en un esfuerzo común. Es decir, la comunicación proporciona una manera de sincronizar o coordinar actividades. Y ya que el acto de pasar mensajes, los procesos no comparten nada, la exclusión mutua no es un requisito de control, pero los problemas siguientes persisten: ● Interbloqueo (deadlock) ● Inanición Requisitos para la exclusión mutua 1. Sólo un proceso, de todos los que poseen secciones críticas por el mismo recurso compartido, debe tener permiso para entrar en ella en un momento dado. 8 2. Un proceso que se interrumpe en una sección no crítica debe hacerlo sin interferir con los otros procesos. 3. Un proceso no debe poder solicitar acceso a una sección crítica para después ser demorado indefinidamente, no puede permitirse el interbloqueo o la inanición. 4. Si ningún proceso está en su sección crítica, cualquier proceso que solicite entrar en la suya debe poder hacerlo sin demora. 5. No se debe suponer sobre la velocidad relativa de los procesos o el número de procesadores. 6. Un proceso permanece en su sección crítica por un tiempo finito. Una manera de satisfacer los requisitos de exclusión mutua es dejar la responsabilidad a los procesos que deseen ejecutar concurrentemente. Tanto si son programas del sistema como de aplicación, los procesos deben coordinarse unos con otros para cumplir la exclusión mutua, sin ayuda del lenguaje de programación o del sistema operativo. Estos métodos se conocen como soluciones por software. Exclusión mutua: soporte hardware Se han desarrollado ciertos tipos de algoritmos software para conseguir exclusión mutua, de los cuales el más conocido es el algoritmo de Dekker. La solución software es fácil que tenga una alta sobrecarga de procesamiento y es significativo el riesgo de errores lógicos. No obstante, el estudio de estos algoritmos ilustra muchos de los conceptos básicos y de los potenciales problemas del desarrollo de programas concurrentes. Deshabilitar interrupciones: En una máquina monoprocesador, los procesos concurrentes no pueden solaparse, solo pueden entrelazarse. Es más, un proceso continuará ejecutando hasta que invoque un servicio del sistema operativo o hasta que sea interrumpido. Por tanto, para garantizar la exclusión mutua, basta con impedir que un proceso sea interrumpido. Esta técnica puede proporcionarse en forma de primitivas definidas por el núcleo del sistema para habilitar y deshabilitar las interrupciones. Instrucciones maquina especiales: En una configuración multiprocesador, varios procesadores comparten acceso a una memoria principal común. En este caso no hay relación maestro/esclavo; en cambio los procesadores se comportan independientemente en una relación de 9 igualdad. No hay mecanismo de interrupción entre procesadores en el que pueda basarse la exclusión mutua. Algoritmo de Dekker y algoritmo de Peterson Algoritmo de Dekker El algoritmo de Dekker es un algoritmo de programación concurrente para la exclusión mutua, el cual permite a dos procesos compartir un recurso sin conflicto. Si ambos procesos intentan acceder a la sección crítica simultáneamente, este algoritmo elige un proceso según una variable turno. Si el otro proceso está ejecutando en su sección crítica, deberá esperar su finalización. Existen cinco versiones del algoritmo Dekker, teniendo ciertos fallos los primeros cuatro. La versión 5 es la que trabaja más eficientemente, siendo una combinación de la 1 y la 4. Primera tentativa Como solo un proceso puede acceder a una ubicación de memoria a la vez. Se reserva una ubicación de memoria global llamada turno. Un proceso (P1) que necesite ejecutar su sección crítica examina el contenido de la variable turno, si el valor de la variable es igual al número del proceso, entonces este puede acceder a su sección crítica. En caso contrario el proceso tendrá que esperar. Cuando un proceso es forzado a esperar este lee el valor de la variable turno hasta que ésta le permita accederen la sección. Esto se conoce como espera activa. El proceso en espera debe permanecer comprobando periódicamente la variable; lo cual consume tiempo del procesador. Después de que unos procesos obtienen acceso a su sección crítica y después de que ha completado su sección, debe de actualizar el valor de la variable turno para el resto de los procesos. Segunda tentativa Cada proceso debe de tener su propia llave para entrar en la sección crítica de forma que, si uno falla, el otro pueda continuar accediendo a su sección crítica. Para lograr este requisito, se declara un vector booleano llamado estado, con estado[0] para P0 y estado[1] para P1. Cada proceso examina el estado del otro proceso, pero no alterarlo. Cuando un proceso desea entrar en la sección crítica, comprueba el estado del otro hasta que su índice en estado tenga valor de false, lo que indica que el otro proceso no se encuentra en su sección crítica. El proceso que está realizando la comprobación inmediatamente establece su propio estado a true y procede a acceder a su sección crítica. Cuando deja la sección crítica, establece su estado a false. 10 Tercera tentativa En el caso anterior si un proceso falla dentro de su sección crítica, el otro proceso se bloquea, y si un proceso falla fuera de su sección crítica, el otro proceso no se bloquea. Una vez que P0 establece estado[0] a true. P1 no puede entrar en su sección crítica hasta que P0 haya abandonado su sección crítica. Podría ocurrir que P1 ya se encuentre en su sección crítica cuando P0 estable su estado. En tal caso P0 quedará bloqueado hasta que P1 haya abandonado su sección crítica. Esto garantiza la exclusión mutua, pero crea otro nuevo problema. Si ambos procesos establecen su estado verdadero antes de ejecutar la sentencia while, cada uno pensará que entró a la sección crítica causando un interbloqueo. Cuarta tentativa Cada proceso establece su estado para indicar su deseo de entrar en la sección crítica, pero está preparado para cambiar su estado si otro desea entrar. Si se considera el siguiente caso P0 establece estado[0] a verdadero. P1 establece un estado[1] verdadero. P0 comprueba estado[1] . P1 comprueba estado[0] . P0 establece estado[0] falso. P1 establece estado[1] falso. P0 establece estado[0] a verdadero. P1 establece un estado [1] verdadero. Esto se podría extender de manera indefinida, y ningún proceso podría entrar en su sección crítica. Esto se conoce como círculo vicioso ya que cualquier alteración a la velocidad relativa del proceso rompería este ciclo. Algoritmo de Peterson El algoritmo de Peterson es un algoritmo de programación concurrente para exclusión mutua, que permite a dos o más procesos o hilos de ejecución compartir un recurso sin conflictos, utilizando sólo memoria compartida para la comunicación. Garantiza que ambos procesos usarán de forma consecutiva el recurso en el caso de que lo soliciten a la vez y se impedirá el cierre del otro proceso. 11 En este Algoritmo, las variables que se utilizan son c1, c2 y Turno. Inicialmente, c1= c2= False. Esto significa que ninguno de los dos procesos desea entrar en la sección crítica. El valor de Turno se asigna a cada proceso cuando desea entrar (1 si el Proceso1 desea entrar, 2 si el Proceso2 quiere entrar). Para entrar en nuestra sección crítica, tenemos en primer lugar, fijar nuestro c-i (i=1,2) en True respectivamente, y anunciar que es el turno del otro proceso, si desea entrar (Turno=j, donde j=2,1). Si ambos procesos tratan de entrar al mismo tiempo, «Turno» será fijado tanto para i como para j aproximadamente al mismo tiempo. Solamente una de estas asignaciones permanecerá, la otra tendrá lugar, pero esta se sobrescribirá inmediatamente. El valor final de Turno decide cuál de los dos procesos se permite entrar en su sección crítica primero. Ventajas: · Es aplicable para cualquier número de procesos con memoria compartida, tanto del monoprocesador como del procesador. · Es simple y fácil de verificar. · Puede usarse para varias secciones críticas. Desventajas: · La espera activa consume mucho tiempo de procesador. · Puede producirse inanición cuando un proceso abandona la sección crítica y hay procesos esperando. · Interbloqueo: procesos de baja prioridad contra procesos de alta prioridad. Semáforos Un semáforo es una variable especial que constituye una serie de opciones elementales para poder restringir o garantizar el acceso a los recursos compartidos en un Sistema Operativo con un entorno de multiprocesamiento. Existen dos métodos o funciones elementales: 12 1. Wait() – denominado P 2. Signal – denominado V Hay distintos tipos de semáforos, se clasifican de acuerdo a su comportamiento, por ejemplo: 1.Semáforo general. Un semáforo es una variable especial que constituye una serie de opciones elementales para poder restringir o garantizar el acceso a los recursos compartidos en un Sistema Operativo con un entorno de multiprocesamiento. 2.Semáforo binario. Es un indicador de condición (S) que registra si un recurso está disponible o no. sólo puede tomar dos valores: O y 1. Si, para un semáforo binario. S=1 entonces el recurso está disponible y la tarea lo puede utilizar; si S=0 el recurso no está disponible y el proceso debe esperar. 3.Semáforo contador. Tiene múltiples variables, se inicializa con el número total de recursos disponibles (n) y las operaciones de WAIT y SIGNAL se diseñan de modo que se impida el acceso al recurso protegido por el semáforo cuando el valor de éste es menor o igual que cero. En los tipos de semáforos existe una cola que mantiene los procesos esperando. El orden en que se retiran los procesos de la cola define dos categorías de semáforos: 4.Semáforos fuertes. Funcionan como una cola FIFO, el que ha estado bloqueado más tiempo es el que sale de la cola. 5.Semáforos débiles. No se especifica el orden en el que se retiran los semáforos. Monitores El monitor es una construcción del lenguaje de programación que proporciona una funcionalidad equivalente a la de los semáforos, pero es más fácil de controlar. El concepto se definió formalmente por primera vez en [HOAR74]. La construcción del monitor ha sido implementada en cierto número de lenguajes de programación, incluyendo Pascal-Plus, Modula-2, Modula-3 y Java. También 13 ha sido implementada como una biblioteca de programas. Esto permite a los programadores poner cerrojos monitor sobre cualquier otro objeto. Paso de mensajes Cuando los procesos interactúan entre sí, deben satisfacerse dos requisitos fundamentales: sincronización y comunicación. Los procesos necesitan ser sincronizados para conseguir exclusión mutua; los procesos cooperantes pueden necesitar intercambiar información. Un enfoque que proporciona ambas funciones es el paso de mensajes. El paso de mensajes tiene la ventaja añadida de que se presta a ser implementado tanto en sistemas distribuidos como en multiprocesadores de memoria compartida y sistemas monoprocesadores. Este método de comunicación entre procesos utiliza dos primitivas SEND y RECEIVE que, al igual que los semáforos y a diferencia de los monitores, son llamadas al sistema y no construcciones del lenguaje. Como tales, es fácil colocarlas en procedimientos de biblioteca como: send(destino, &mensaje): y receive(origen, &mensaje); La primera llamada envía un mensaje a un destino dado, y la segunda recibe un mensaje de un origen dado (o de cualquier [ANY] si al receptor no le importa). Si no hay un mensaje disponible el receptor podría bloquearse hasta que uno llegue. Como alternativa, podría regresar de inmediato con un código de error. El problema de los lectores/escritores. Este problema modela el acceso a una base de datos. Supóngase una basede datos, con muchos procesos que compiten por leer y escribir en ella. Se puede permitir que varios procesos lean de la base de datos al mismo tiempo, pero si uno de los procesos está escribiendo la base de datos, ninguno de los demás debería tener acceso a ésta, ni siquiera los lectores. La solución de este problema puede ser utilizando semáforos el primer lector que obtiene el acceso a la base de datos pone en espera el semáforo de la base de datos. Los lectores siguientes sólo incrementan un contador. Al salir los lectores, éstos decrementan el contador, y el último en salir realiza una señal sobre el semáforo, lo que permite entrar a un escritor bloqueado, si existe. Suponiendo que los lectores tienen prioridad sobre los escritores. Si surge un escritor mientras varios lectores se encuentran en la base de datos el escritor debe esperar. Pero si aparecen nuevos lectores, y queda al menos un lector accediendo a la base de datos, el escritor deberá esperar hasta que no haya más lectores interesados en la base de datos. 14 Conclusión Esta actividad comprende todos los requisitos que tiene que cumplir el SO para poder trabajar con procesos de forma simultánea, así como los diferentes algoritmos que administran los recursos de la memoria, así como del procesador. Conceptualice todas las tareas y trabajos que se ejecutan para planear el procedimiento de ejecución, desde la memoria aleatoria, y de los núcleos e hilos del procesador. A lo largo del presente escrito, se pudieron apreciar varios problemas que pueden presentarse en el uso de la concurrencia al momento de tratar la exclusión mutua y sincronización. Esta clase de problemas podrían causar que los procesos que se estén realizando generen errores y resultados no esperados y es por esto que se aprecia la importancia de los mecanismos, algoritmos y recursos planteados a lo largo de la actividad para evitar que estos errores ocurran. Tanto la técnica de un sistema multiprogramado de procesador único como en la de un sistema de múltiples procesadores pueden verse como ejemplos de procesamiento concurrente y ambas presentan los mismos problemas. Una condición de carrera sucede cuando múltiples procesos o hilos leen o escriben datos de manera que el resultado final depende del orden de ejecución de las instrucciones en los múltiples procesos. Al existir concurrencia surgen aspectos de diseño y gestión como lo son: 1) El S.O. debe ser capaz de seguir la pista de varios procesos. 2) El S.O. debe ubicar y desubicar varios recursos para cada proceso activo. 3) El S.O. debe proteger los datos y recursos físicos de cada proceso frente a interferencias involuntarias de otros procesos. 4) El funcionamiento de un proceso y el resultado que produzca debe ser independiente de la velocidad a la que suceda su ejecución en relación con la velocidad de otros procesos concurrentes. Los procesos concurrentes entran en conflicto entre ellos cuando compiten por el uso del mismo recurso. Los problemas de control a los que se enfrentan son los siguientes: - Exclusión mutua. -Interbloqueo. -Inanición. El algoritmo de Dekker es el algoritmo más conocido para la exclusión mutua. Para garantizar la exclusión mutua en una máquina monoprocesador basta con impedir que un proceso sea interrumpido. Si ambos procesos intentan acceder 15 a la sección crítica simultáneamente, este algoritmo elige un proceso según una variable turno. Si el otro proceso está ejecutando en su sección crítica, deberá esperar su finalización. El algoritmo Petersen es un algoritmo de programación concurrente para la exclusión mutua, que permite a dos o más procesos o hilos de ejecución compartir un recurso sin conflictos, utilizando sólo memoria compartida para la comunicación. Garantiza que ambos procesos usarán de forma consecutiva el recurso en el caso de que lo soliciten a la vez y se impedirá el cierre del otro proceso. Un semáforo es una variable especial que constituye una serie de opciones elementales para poder restringir o garantizar el acceso a los recursos compartidos en un S.O. como un entorno de multiprocesamiento. Hay distintos tipos de semáforos: -Semáforo general. -Semáforo binario. -Semáforo contador. -Semáforos fuertes. -Semáforos débiles. El monitor es una construcción del lenguaje de programación que proporciona una funcionalidad equivalente a la de dos semáforos, pero es más fácil de controlar. Bibliografía Genesis Valeria Peña, Arellys del Cramen Rodriguez, Elleany Martinez, Josue Lopez. (2014). Algoritmo de Peterson. 01 de noviembre del 2020, de Universidad Centroamericana Sitio web: http://docshare02.docshare.tips/files/24875/248756767.pdf Stallings, W. (2012). Operating Systems Internals and Design Principles (Séptima ed.). Lake Street, Upper Saddle River 07458, New Jersey, Estados Unidos: Prentince Hall. Recuperado el 29 de septiembre de 2020 Tanenbaum, A. S. (2008) Modern Operating Systems Pearson Educación, México. 16 Peña Matus, G. V., Rodríguez Vargas, A., Martínez Hondoy, E. A., & López Ramírez, J. A. (03 de octubre de 2014). Obtenido de http://docshare02.docshare.tips/files/24875/248756767.pdf
Compartir