Está en la página 1de 5

República Bolivariana de Venezuela

Ministerio del Poder Popular para la Educación Superior


UPT José Antonio Anzoátegui

CONSIDERACI
ÓN Y
SINCRONIZACI
ON DE
Prof:
PROCESOS Estudiante:
Dulce Paraguan Doriana Choy Franco
27.226.800

Barcelona, mayo de 2021


En los sistemas operativos multiprogramados surge el concepto de proceso, asociado a la
ejecución de un programa. En general, un proceso es un flujo de ejecución, representado
básicamente por un contador de programa, y su contexto de ejecución, que puede ser
más o menos amplio. Así, un proceso incluye en su contexto el estado de la pila, el estado
de la memoria y el estado de la E/S, mientras que un thread típico tiene como contexto
propio poco más que la pila. En algunos sistemas es posible determinar el contexto propio
de un proceso en el momento de su creación, como ocurre con la llamada al sistema
clone() de Linux. En adelante, sin perder generalidad, utilizaremos siempre el término
proceso, independientemente de cuál sea su contexto.

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. El proceso
pasa por diversos estados entre los que se definen transiciones, como representa, en su
forma más sencilla, el grafo de la Figura siguiente.

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 del (de los) recurso(s) de proceso. Los criterios que se siguen para la planificación y
las políticas que se usan se estudiarán mas adelante en el desarrollo de la presente
investigación.

Para realizar el estudio de dichas políticas se realiza una sintetizada referencia a la


representación de los procesos, para luego definir hilos de ejecución o threads,
estableciendo diferencias entre procesos y hilos de ejecución, sus ventajas desventajas,
estados, sincronización y tipos, para luego empezar a estudiar el fenómeno de la
sincronización de procesos, estableciendo su definición y características, se esboza la
definición, modelo, propiedades de la sección critica, así como la descripción detallada de
algunos de los principales modelos de sincronización tales como el de exclusión mutua
(mutex), semáforos y mensajes, para después describir los diferentes problemas de
sincronización tales como; el fumador de cigarrillos, la panadería de Lamport, los filósofos
que cenan (sabios), el barbero dormilón, lectores y escritores, y productor consumidor y
finalmente se estudia el interbloqueo estableciendo su definición, características,
condiciones necesarias y suficientes para su existencia, en cuanto a su detección y
recuperación
Concurrencia
Es aparente que las nociones de procesos y recursos están estrechamente vinculadas.
Un proceso es una tarea, identificada como una secuencia de instrucciones ejecutándose,
o una colección de instrucciones formando un programa. Un recurso, por otra parte, es un
término incluido en el sistema operativo, como también impresoras, discos, cintas de
discos, procesos y repartos de la capacidad de memoria. Sin embargo, los recursos no
son tratados en forma igualitaria por el S.O. y dependiendo de su cinta, tratará los
procesos en forma diferente.

Los recursos no expropiables (No Preemption) son usados por los procesos que requieren
una utilización de recursos ininterrumpidos. Los recursos expropiables (Preemption)
requieren un control del S.O. para cambiar correctamente la utilización de los recursos.

En un sistema multiprogramado (se llama multiprogramación a la gestión de varios


procesos dentro de un sistema monoprocesador), los procesos se intercalan en el tiempo
para dar la apariencia de ejecución simultánea, aunque no se consigue un proceso
paralelo real y aunque se produce una cierta sobrecarga en los intercambios de procesos
de un sitio a otro, la ejecución intercalada produce beneficios importantes en la eficiencia
del procesamiento y en la estructuración de los programas.

En un sistema con varios procesadores, no sólo es posible intercalar los procesos, sino
también superponerlos. Ambas técnicas, la intercalación y la superposición, 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.

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.

Semáforos
Fueron introducidos por Dijkstra en 1965. Un semáforo es un entero no negativo sobre el
que puede actuarse sólo a través de las operaciones WAIT y SIGNAL tras su
inicialización.
WAIT (s) : SI (s?0) ENTONCES s = s – 1

DE LO CONTRARIO añadir proceso a la cola del semáforo y

hacerlo no ejecutable (bloqueado)

SIGNAL (s) : SI (cola del semáforo vacía) ENTONCES s = s + 1

DE LO CONTRARIO sacar proceso de cola del semáforo

y ponerlo en estado preparado.

El proceso que ejecute un WAIT sobre un semáforo a 0 quedará bloqueado hasta que
otro proceso ejecute una operación SIGNAL sobre el mismo semáforo. Si hay varios
procesos bloqueados en el mismo semáforo, sólo uno de ellos podrá desbloquearse
(normalmente, en orden FIFO). Las operaciones WAIT y SIGNAL son indivisibles, por lo
que no existe posibilidad alguna de que dos procesos actúen al mismo tiempo sobre el
mismo semáforo. Los semáforos se utilizan para la sincronización entre procesos.

Valor del semáforo:


val (sem) = C (sem) + ns (sem) - nw (sem)
donde C = valor inicial
ns = número de operaciones SIGNAL llevadas a cabo
nw = nº de operaciones WAIT llevadas a cabo con éxito
Con val (sem) >= 0 tenemos que:
nw (sem) <= C (sem) + ns (sem)
La igualdad sólo se cumple cuando val (sem) = 0.

Esta relación es invariante frente al número de operaciones WAIT y SIGNAL efectuadas.


Mediante el uso de semáforos puede ocurrir que un proceso quede bloqueado
temporalmente. Por tanto, debemos reflejar este nuevo estado de los procesos:

Bloqueado: Cuando un proceso se encuentra esperando en la cola de un


semáforo a que se realice una operación SIGNAL sobre dicho semáforo.
Transiciones:
wait: Cuando el proceso en ejecución ha ejecutado una operación WAIT sobre un
semáforo cuyo valor es 0.
signal: Cuando un proceso en ejecución ejecuta una operación SIGNAL sobre un
semáforo cuya cola de procesos no está vacía.

Regiones críticas:
Son sistemas que permiten establecer protecciones contra una mala
utilización de los usuarios. Para ello sólo permiten que los datos compartidos se
puedan acceder desde determinadas regiones quedando transparentes desde el
resto.

Tiene inconvenientes relacionados con la sincronización y no permite que


varias actividades puedan realizar operaciones de lectura simultánea.

Regiones criticas condicionales:


Es una mejora del método anterior tratando de resolver algunos problemas de
sincronización que se presentan.

Monitores:
Uno de los problemas en los mecanismos anteriores es que el programador
tiene que proporcionar de forma explícita el modo de sincronización. Para evitarlo
B. Hansen y C.A.R. Hoare desarrollaron un nuevo mecanismo denominado
Monitor que debe ser soportado por el lenguaje correspondiente