Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Semana10 - Sincronizacion de Procesos

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 13

FACULTAD DE INGENIERÍA ESCUELA

PROFESIONAL DE INGENIERÍA DE SISTEMAS


CURSO:

SISTEMAS OPERATIVOS

DOCENTE:

NOÉ SILVA ZELADA

TEMA:

SINCRONIZACIÓN DE PROCESOS

INTEGRANTES:

· ALVARADO VALENZUELA, NAYELY

· CENTURIÓN GUZMÁN, JOSÉ ALEXANDER

· DIOS GONZALES, LEYDY

· GARATE CARRIÓN, JAVIER ANTONIO

CICLO

VI

CHIMBOTE - PERÚ

2023
INTRODUCCIÓN

Dentro de los sistemas operativos multiprogramados, emerge el concepto de proceso, que va


ligado a la ejecución de un programa. Por lo general, se conoce proceso como un flujo de
ejecución, que está constituido normalmente por un contador de programa, y su contexto de
ejecución, el cual puede ser más o menos extenso. De este modo, todo proceso engloba en su
contexto el estado de la pila, el estado de la memoria y el estado de E/S, mientras que un hilo
típico posee de contexto propio poco más que la pila. Existen sistemas que permiten establecer
el contexto propio de un proceso durante su creación, por ejemplo, mediante la llamada al
sistema clone() de Linux. A partir de ahora, sin perder generalidad, usaremos en todo momento
la denominación proceso, sin importar su contexto. (1)

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 (por
ejemplo, de una misma aplicación) 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, repitiéndose
este ciclo hasta la finalización del programa. Cada vez que un proceso pasa al estado preparado,
está compitiendo por el recurso CPU. El segundo objetivo del sistema operativo
multiprogramado es la planificación del uso del (de los) recurso(s) de proceso. (1)
REPRESENTACIÓN DE LOS PROCESOS
Para representar los procesos, un sistema operativo multiprogramado debe almacenar
información en base a la cual: (2)
● Identificar cada proceso: Se utiliza un identificador del proceso, que suele ser un entero.
● Representar el estado de cada proceso para mantener el grado de transición de estados.
Normalmente los estados se representan mediante colas de procesos.
● Planificar el siguiente proceso que entre en la CPU (scheduling). Se requiere
información que permita aplicar los criterios de planificación (prioridad, quantum, etc).
● Contabilizar el uso de recursos por el proceso (tiempo consumido de CPU, tiempo de
ejecución del proceso, tiempos máximos asignados, identificador de usuario).
● Gestionar el contexto de los procesos: Por cada proceso hay que almacenar el estado
del procesador, de la pila y de los otros recursos (memoria y entrada/salida).
● Gestionar la memoria.
● Soportar la entrada/salida. Peticiones pendientes, dispositivos asignados, tabla de
canales, etc.
HILOS DE EJECUCIÓN O THREAD
Un hilo de ejecución o thread, en sistemas operativos, es una característica que permite a una
aplicación realizar varias tareas concurrentemente. Los distintos hilos de ejecución comparten
una serie de recursos tales como el espacio de memoria, los archivos abiertos, situación de
autenticación, etc. Esta técnica permite simplificar el diseño de una aplicación que debe llevar
a cabo distintas funciones simultáneamente.(3)
Los hilos de ejecución que comparten los mismos recursos, sumados a estos recursos, son en
conjunto conocidos como un proceso. El hecho de que los hilos de ejecución de un mismo
proceso comparten los recursos hace que cualquiera de estos hilos pueda modificar éstos.
Cuando un hilo modifica un dato en la memoria, los otros hilos acceden a ese dato modificado
inmediatamente a en la siguiente figura podemos observar un ejemplo de un hilo de ejecución.
(3)

Fuente: AISII – Procesos, hilos y multihilos. (3)


SINCRONIZACIÓN Y COMUNICACIÓN ENTRE
PROCESOS
Los sistemas operativos proporcionan mecanismos básicos de comunicación que le permiten
transferir cadenas de bytes. Los procesos de comunicación deben ser los que interpreten el
significado de las cadenas transmitidas para coordinarlas. Los mecanismos de comunicación y
sincronización son dinámicos. Es decir, si se necesita este tipo de mecanismo, se crea, usa y
destruye, de modo que no se crean mecanismos de comunicación porque pueden tener
consecuencias indeseables. Esto significa que la comunicación tiene lugar en el tiempo.
Los servicios básicos de comunicación son: (4)
1. Crear: el proceso solicita la creación del mecanismo
2. Enviar o escribir: el proceso emisor envía información al proceso receptor
3. Recibir o leer: el proceso receptor recibe información
4. Destruir: el proceso solicita la destrucción del mecanismo de comunicación
La comunicación puede ser síncrona y asíncrona: (4)
1. Síncrona: los dos procesos han de ejecutar servicios de forma simultánea. El emisor
ha de ejecutar el servicio enviar mientras el receptor ejecuta recibir.
2. Asíncrona: el emisor hace el envío y prosigue su ejecución. El SO ofrece un
almacenamiento intermedio para guardar la información enviada, hasta que el
receptor la solicite.
Esquema de Sincronización síncrona:

Fuente: Sistemasoper2 – Sincronización y comunicación entre procesos. (4)


SECCIÓN CRÍTICA
En la programación concurrente, se define como una pieza de código en un programa de
computadora que accede a un recurso compartido (una estructura de datos o un dispositivo) al
que no deben acceder varios subprocesos en ejecución (thread). Una sección crítica
generalmente termina en un momento determinado, y un hilo, proceso o tarea solo tiene que
esperar una cierta cantidad de tiempo antes de ingresar. Se requiere un mecanismo de
sincronización en la entrada y salida de la sección crítica para asegurar el uso exclusivo de
recursos, como semáforos. (5)
Modelo de sección crítica
El modelo de sección crítica que vamos a utilizar sigue el siguiente protocolo genérico: (5)
Entrar_SC(esta_SC) /* Solicitud de ejecutar esta_SC */
/* código de esta_SC */
Dejar_SC(esta_SC) /* Otro proceso puede ejecutar esta_SC */
Es decir, cuando un proceso quiere entrar a la sección crítica: ejecuta Entrar_SC(), y si la
sección crítica está ocupada el proceso espera; se ejecuta la sección crítica; Dejar_SC(),
permitiendo que entre uno de los procesos en estado de espera. La decisión de qué proceso es
el seleccionado para entrar en el paso puede tener consecuencias importantes, como se
comentará más adelante. En general, puede asumirse disciplina FIFO. (5)
Un aspecto fundamental es cómo se realiza la espera en Entrar_SC(), lo que determina el tipo
de mecanismo de sincronización que se debe utilizar. Esto dependerá del tiempo que el proceso
deba esperar para entrar a la sección crítica. La imagen muestra un ejemplo de utilización de
una sección crítica para implementar sincronización productor-consumidor. Hay que advertir
que este ejemplo sólo es válido para un productor y un consumidor. Con n productores y m
consumidores se producirían condiciones de carrera. Se propone como ejercicio la
modificación de este código para el caso general. (5)

Fuente: Sistemasoper2 – Sección critica. (5)


Propiedades del acceso exclusivo a secciones críticas: (5)
Como criterios de validez de un mecanismo de sincronización nos referiremos al cumplimiento
de las siguientes condiciones enunciadas por Dijkstra para el acceso exclusivo a una sección
crítica.
● Exclusión mutua. No puede haber más de un proceso simultáneamente.
● No interbloqueo. Ningún proceso fuera de la SC puede impedir que otro entre a la SC.
● No inanición. Un proceso no puede esperar por tiempo indefinido para entrar a la SC.
● Independencia del hardware. No se pueden hacer suposiciones acerca del número de
procesadores o de la velocidad relativa de los procesos.

MODELO DE SINCRONIZACIÓN MUTEX (MUTUAL EXCLUSIÓN OBJECT)


EXCLUSIÓN MUTUA
Los algoritmos de exclusión mutua (comúnmente abreviada como mutex por mutual exclusion)
se usan en programación concurrente para evitar que fragmentos de código conocidos como
secciones críticas accedan al mismo tiempo a recursos que no deben ser compartidos a mayor
parte de estos recursos son las señales, contadores, colas y otros datos que se emplean en la
comunicación entre el código que se ejecuta cuando se da servicio a una interrupción y el
código que se ejecuta el resto del tiempo. Se trata de un problema de vital importancia porque,
si no se toman las precauciones debidas, una interrupción puede ocurrir entre dos instrucciones
cualquiera del código normal y esto puede provocar graves fallos. (6)
La técnica que se emplea por lo común para conseguir la exclusión mutua es inhabilitar las
interrupciones durante el conjunto de instrucciones más pequeño que impedirá la corrupción
de la estructura compartida (la sección crítica). Esto impide que el código de la interrupción se
ejecute en mitad de la sección crítica. (6)
En un sistema multiprocesador de memoria compartida, se usa la operación indivisible test-
and-set sobre una bandera, para esperar hasta que el otro procesador la despeje. La operación
test-and-set realiza ambas operaciones sin liberar el bus de memoria a otro procesador. Así,
cuando el código deja la sección crítica, se despeja la bandera. Esto se conoce como spin lock
o espera activa.
Algunos ejemplos de algoritmos clásicos de exclusión mutua son: (6)
● El algoritmo de Dekker. El algoritmo de Dekker es un algoritmo de programación
concurrente para exclusión mutua, que permite a dos procesos o hilos de ejecución
compartir un recurso sin conflictos. Fue uno de los primeros algoritmos de exclusión
mutua inventados, implementado por Edsger Dijkstra. Si ambos procesos intentan
acceder a la sección crítica simultáneamente, el 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 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.
● Algoritmo de la panadería de Lamport Es un algoritmo de computación creado por el
científico en computación Dr Leslie Lamport, para implementar la exclusión mutua de
N procesos o hilos de ejecución.

MODELO DE SINCRONIZACIÓN POR SEMÁFOROS


Dijkstra dio en 1968 una solución al problema de la exclusión mutua con
la introducción del concepto de semáforo binario. Está técnica permite resolver la mayoría de
los problemas de sincronización entre procesos y forma parte del diseño de muchos sistemas
operativos y de lenguajes de programación concurrentes. (7)
Un semáforo binario es un indicador (S) de condición que registra si un recurso está disponible
o no. Un semáforo binario sólo puede tomar dos valores: 0 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. Los semáforos se implementan con una cola de tareas o
de condición a la cual se añaden los procesos que están en espera del recurso. Sólo se permiten
tres operaciones sobre un semáforo: (7)
● Inicializar
● Espera (wait)
● Señal (signal)
En algunos textos, se utilizan las notaciones P y V para las operaciones de espera y señal
respectivamente, ya que ésta fue la notación empleada originalmente por Dijkstra para referirse
a las operaciones. Así pues, un semáforo binario se puede definir como un tipo
de datos especial que sólo puede tomar los valores 0 y 1, con una cola de tareas asociada y con
sólo tres operaciones para actuar sobre él. (7)
Las operaciones pueden describirse como sigue:
● Inicializa (S: SemaforoBinario; v:integer)
Poner el valor del semáforo S al valor de v (0 o 1)
● Espera (S)
if S = 1 then S := 0
else suspender la tarea que hace la llamada y
ponerla en la cola de tareas
● Señal (S)
if la cola de tareas está vacía
then S = 1 else reanudar la primera tarea de la cola de tareas
Modelo de Sincronización de Exclusión Mutua Con Semáforos
La exclusión mutua se realiza fácilmente utilizando semáforos. La operación de espera se usará
como procedimiento de bloqueo antes de acceder a una sección crítica y la operación señal
como procedimiento de desbloqueo. Se utilizarán tantos semáforos como clases de secciones
críticas se establezcan. (7)

MODELO DE SINCRONIZACIÓN POR MENSAJES

Los mensajes dan solución al problema de concurrencia de procesos, integrando sincronización


y comunicación entre procesos, y son adecuados para sistemas centralizados y distribuidos.
Esto significa que están incluidos en casi todos los sistemas operativos modernos, y en muchos
sistemas operativos se utilizan como base para toda la comunicación del sistema, tanto dentro
como entre computadoras. (8)

La comunicación a través de mensajes siempre requiere un proceso de envío y un proceso de


recepción, y la información a intercambiar. Por lo tanto, las operaciones básicas para la
comunicación de mensajes proporcionadas por todos los sistemas operativos son: enviar y
recibir. Las acciones de transferencia y sincronización de información se consideran
actividades indivisibles. La comunicación de mensajes requiere el establecimiento de un
vínculo entre el receptor y el remitente, y la forma del vínculo varía de un sistema a otro. Los
aspectos importantes a considerar en la vinculación son: la forma y el número de vínculos que
se pueden establecer entre procesos, la capacidad de mensajes y los tipos de mensajes de los
vínculos. (8)

Su implementación depende de tres cosas: (8)

- Cómo se nombra el proceso.

- Modelo de sincronización.
- Almacenamiento y estructura de mensajes.

Modos de nombrar los mensajes

El proceso de denominación de tareas para la comunicación de mensajes se consigue efectuar


de dos formas: directa e indirecta. En la comunicación directa, tanto el proceso de envío como
el proceso de recepción nombran explícitamente el proceso con el que se están comunicando.
Este método de comunicación establece un vínculo entre dos procesos que desean comunicarse,
brindando seguridad en el intercambio de mensajes, ya que cada proceso debe conocer la
identidad de su interlocutor de comunicación, sin embargo, por las mismas razones, no es muy
adecuado para implementar Rutinas de Servicio de sistema operativo. (8)

En la comunicación indirecta, los mensajes se envían y reciben a través de entidades


intermedias llamadas buzones o puertos. Como sugiere el nombre, un buzón es un objeto en el
que los procesos dejan mensajes de los que otros procesos pueden recuperar mensajes. Ofrecen
una mayor versatilidad que las citas directas porque permiten comunicaciones de uno a uno, de
uno a muchos, de muchos a uno y de muchos a muchos. Cada buzón tiene un identificador que
lo distingue. En este caso, la operación básica de comunicación toma la siguiente forma: (8)

enviar(buzónA, mensaje): envía un mensaje al buzón A

recibir(buzónA, mensaje): recibe un mensaje del buzón A.

Los buzones establecen un vínculo que pueden utilizar más de dos procesos y permiten que un
proceso se comunique con otro a través de diferentes buzones.

Modelos de sincronización

La diferencia en los modelos utilizados para la sincronización de procesos se debe a las


diferentes formas que pueden tomar las operaciones de envío de mensajes: (8)

a) Síncrona. El proceso de envío continúa su tarea solo después de recibir el mensaje. El


método síncrono requiere que dos procesos, el emisor y el receptor, se comuniquen entre
sí, por lo que a menudo se le llama encuentro.

b) Asíncrona. El proceso que envió el mensaje continúa ejecutándose sin preocuparse por
recibir el mensaje. En el modelo asíncrono, el sistema operativo se encarga de recoger el
mensaje del remitente y almacenarlo, a la espera de la operación de recepción para recibirlo.
c) Invocación remota. El proceso que envió el mensaje no continuará hasta que reciba una
respuesta del receptor. La invocación remota también se conoce como encuentro extendido
porque el receptor puede ejecutar un número de cálculos antes de enviar la respuesta.

Almacenamiento y estructura del mensaje

En la transferencia de información a través de un enlace, se debe considerar la forma en que se


produce y la capacidad o número de mensajes que soporta el enlace. El intercambio de
información se puede realizar de dos formas: por valor o por referencia. En la transferencia por
valor, se hace una copia del mensaje del espacio de direcciones del remitente al espacio de
direcciones del destinatario, mientras que, en la transferencia por referencia, se pasa un puntero
al mensaje. La ventaja de la transferencia por valor es que mantiene desacoplada la información
procesada por el emisor y el receptor, lo que brinda mayor seguridad en cuanto a la integridad
de la información. Su desventaja es que consume memoria y tiempo al copiar, y el uso de la
memoria intermedia suele aumentar la memoria y el tiempo. (8)

Estas desventajas son precisamente las ventajas de la transferencia por referencia, que tiene
como desventaja, requerir mecanismos de seguridad adicionales para compartir información
entre procesos. Teniendo en cuenta la estructura de los mensajes, estos mensajes se pueden
dividir en tres tipos: (8)

a) Longitud fija. Son la implementación física que admite una asignación eficaz y sencilla
en las “transferencias por valor”.

b) Longitud variable. Son adecuados en los sistemas cuya transferencia se efectúa por
punteros, debido a que el tamaño del mensaje puede ser parte de la misma información
transferida.

c) De tipo definido. Son apropiados en la comunicación con buzones. A cada buzón que
utilice un proceso se le puede asignar el tipo de dato adecuado para dicho mensaje y sólo
mensajes con esa estructura pueden ser enviados por ese enlace.
PROBLEMAS DE SINCRONIZACIÓN

En los sesentas Edsger Dijkstra y cinco de sus colegas desarrollaron uno de los primeros
sistemas operativos que soportaban la multiprogramación. El sistema fue diseñado en la
Universidad Tecnológica de Eindhoven en Holanda, y fue llamado sistema multiprogramación
THE. Una de las principales aportaciones de este sistema fue la incorporación del concepto de
semáforos, como herramienta para implementación de la exclusión mutua. (9)

Por ese mismo tiempo Dijkstra escribió un artículo sobre la cooperación de procesos.
Demostraba como utilizar los semáforos para resolver una variedad de problemas de
sincronización, como el de los productores/consumidores, los filósofos que cenan y el del
barbero dormilón. (9)

En su artículo sobre monitores Tony Hoare introdujo el concepto de semáforos binarios


separados y muestra cómo usarlos para implementar monitores.

INTERBLOQUEO
El interbloqueo se puede definir como el bloqueo permanente de un conjunto de procesos que
compiten por los recursos del sistema o bien se comunican unos con otros. Un proceso está
interbloqueado si se está esperando por un evento determinado que nunca va a ocurrir. No
existe una solución eficiente para el caso general. (10)
El bloqueo es permanente hasta que el sistema realice una operación extraordinaria, como
puede ser matar a uno o más procesos u obligar a uno o más procesos a retrasar su ejecución.

Fuente: Sistemasoper2 – Interbloqueo. (10)


RECURSOS REUTILIZABLES
Un recurso reutilizable es aquel que puede ser usado con seguridad por un proceso y no se
agota con el uso. Los procesos obtienen unidades de recursos que liberan posteriormente para
que otros procesos las reutilicen. Ejemplo, los procesadores, canales E/S, memoria principal y
secundaria, dispositivos y estructuras de datos tales como archivos, bases de datos y semáforos.
(11)
RECURSOS CONSUMIBLES
Un recurso consumible es aquel que puede ser creado (producido) y destruido (consumido).
Normalmente, no hay límite en el número de recursos consumibles de un tipo en particular. Un
proceso productor que no está bloqueado puede liberar cualquier número de recursos
consumibles. Como ejemplos de recursos consumibles están las interrupciones, señales,
mensajes e información en buffers de E/S. (11)
EJEMPLO DE SINCRONIZACIÓN DE PROCESOS - BARBERO DORMILÓN
Por ejemplo, si estamos tratando el problema de la barbería que se ve en teoría, y tenemos un
barbero y varios clientes, un cliente no se puede sentar en la silla del barbero ANTES DE que
el cliente anterior se haya levantado.

SOLUCION - CODIFICACIÓN

.
REFERENCIAS BIBLIOGRAFICAS:

1. Fernandez MAP. Sincronización entre procesos [Internet]. Monografias.com. 2007 [citado el


17 de febrero de 2023]. Disponible en: https://www.monografias.com/trabajos51/sincro-
comunicacion/sincro-comunicacion
2. Edu.uy. [citado el 17 de febrero de 2023]. Disponible en:
https://www.fing.edu.uy/inco/cursos/sistoper/recursosTeoricos/5-SO-Teo-Procesos.pdf
3. Procesos, hilos y multihilos [Internet]. Uam.mx. [citado el 17 de febrero de 2023]. Disponible
en: http://aisii.azc.uam.mx/areyes/archivos/licenciatura/sd/U2/ConceptoHilos.pdf
4. Sincronizacion y comunicacion entre procesos [Internet]. sistemasoper2. 2014 [citado el 17 de
febrero de 2023]. Disponible en:
https://sistemasoper2.wordpress.com/2014/10/21/sincronizacion-y-comunicacion-entre-
procesos/
5. Sección crítica [Internet]. sistemasoper2. 2014 [citado el 17 de febrero de 2023]. Disponible
en: https://sistemasoper2.wordpress.com/2014/10/21/seccion-critica/
6. Nacional U, Sistemas O. Edu.co. [citado el 17 de febrero de 2023]. Disponible en:
https://dis.unal.edu.co/~capedrazab/material_cursos/20221/os/procesos/guia_mutex.pdf
7. Modelo de sincronizacion por semaforos [Internet]. sistemasoper2. 2014 [citado el 17 de
febrero de 2023]. Disponible en: https://sistemasoper2.wordpress.com/2014/10/21/modelo-
de-sincronizacion-por-semaforos/
8. Modelo de sincronizacion por mensaje [Internet]. sistemasoper2. 2014 [citado el 17 de febrero
de 2023]. Disponible en: https://sistemasoper2.wordpress.com/2014/10/21/modelo-de-
sincronizacion-por-mensaje/
9. Problemas de Sincronizacion de Procesos [Internet]. calameo.com. [citado el 17 de febrero de
2023]. Disponible en: https://www.calameo.com/read/005990980c46ae0b6ac31
10. Interbloqueo [Internet]. sistemasoper2. 2014 [citado el 17 de febrero de 2023]. Disponible en:
https://sistemasoper2.wordpress.com/2014/10/21/interbloqueo/
11. Tarea 6 [Internet]. Angelfire.com. [citado el 17 de febrero de 2023]. Disponible en:
https://shad3xx.angelfire.com/tarea6.htm

ANEXO – TURNITIN

También podría gustarte