Logo Studenta

Serna_Jose_SO - Jose SernaS (6)

¡Este material tiene más páginas!

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

Continuar navegando

Materiales relacionados

9 pag.
39 pag.
procesos[SO]

UNAM

User badge image

campuzanobeni3

2 pag.