Está en la página 1de 10

REPÚBLICA BOLIVARIANA DE VENEZUELA

MINISTERIO DEL PODER POPULAR PARA LA EDUCACIÓN UNIVERSITARIA


UNIVERSIDAD NACIONAL EXPERIMENTAL “RAFAEL MARÍA BARAL”
PROGRAMA NACIONAL DE FORMACIÓN EN INFORMÁTICA
ASIGNATURA: INGENIERÍA DEL SOFTWARE

UNIDAD 5
COORDINACIÓN Y SINCRONIZACIÓN DE
PROCESOS

Realizado por:
Luis Escorcia
C.I.: V.-27.104.669

Tramo: Trimestre 3-1


Profesor: Barazarte Eduador

San francisco, abril de 2020


ESQUEMA

CONTENIDO: UNIDAD 5 COORDINACIÓN Y SINCRONIZACIÓN DE


PROCESOS
1.-Concurrencia
2.- Semáforos
3.- Monitores
4.- Sección
5.- Critica
6.- Bloqueos

DESARROLLO

TEMA: UNIDAD 5 COORDINACIÓN Y SINCRONIZACIÓN DE PROCESOS


Los sistemas operativos modernos se basan en procesos. Cuando los
procesos se reúnen para realizar tareas en conjunto, se les llama procesos
cooperativos. Para lograr la comunicación, los procesos deben sincronizarse,
de no ser así pueden ocurrir problemas no deseados. La cooperación entre
procesos requiere la ejecución concurrente de los mismos, a través de
mecanismos de comunicación y mecanismos de sincronización.

La Coordinación de Procesos, es el hecho de ponerse de acuerdo


entre varios procesos para llevar a cabo alguna acción.

La Sincronización de Procesos es la coordinación y cooperación de


un conjunto de procesos para asegurar la comparación de recursos de
cómputo. La sincronización entre procesos es necesaria para prevenir y/o
corregir errores de sincronización debidos al acceso concurrente a recursos
compartidos.

Como ejemplo, supongamos que tenemos 3 procesos concurrentes que


quieren modificar un mismo archivo. Si los 3 acceden a éste al mismo tiempo
el archivo quedará con valores incorrectos. Para resolver problemas como
este se ideó la sección crítica, que es el segmento de código que accede a
los recursos. Sólo puede haber una sección crítica en ejecución por vez, así
nos aseguramos que los datos quedan consistentes.

1.- Concurrencia:
Cuando dos o más procesos llegan al mismo tiempo a ejecutarse, se
dice que se ha presentado una concurrencia de procesos. Para que dos o
más procesos sean concurrentes, es necesario que tengan alguna relación
entre ellos como puede ser la cooperación para un determinado trabajo o el
uso de información o recursos compartidos. 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.

Existen tres formas modelos de computadora en los que se puede


pueden ejecutar procesos concurrentes:

Multiprogramación con un único procesador. En este modelo todos los


procesos concurrentes se ejecutan sobre un único procesador. El 2 sistema
operativo se encarga de ir repartiendo el tiempo del procesador entre los
distintos procesos, intercalando la ejecución de los mismos para dar así una
apariencia de ejecución simultánea.

Multiprocesador. Un multiprocesador es una máquina formada por un


conjunto de procesadores que comparten memoria principal. En este tipo de
arquitecturas, los procesos concurrentes no sólo pueden intercalar su
ejecución sino también superponerla.
Multicomputadora. Una multicomputadora es una máquina de memoria
distribuida, en contraposición con el multiprocesador que es de memoria
compartida. Está formada por una serie de computadoras completas con su
CPU, memoria principal y, en su caso, periferia. En este tipo de arquitecturas
también es posible la ejecución simultánea de los procesos sobre los
distintos procesadores.

En general la concurrencia será aparente siempre que el número de


procesos sea mayor que el de procesadores disponibles, es decir, cuando
haya más de un proceso por procesador. La concurrencia será real cuando
haya un proceso por procesador.

A continuación, se enumeran los elementos de gestión y diseño que surgen


por causa de la concurrencia:

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.
ii. ii. El sistema operativo debe asignar y quitar los distintos recursos a
cada proceso activo. Entre estos recursos se incluyen: tiempo de
procesador, memoria, archivos y dispositivos de E/S.
iii. iii. El sistema operativo debe proteger los datos y los recursos físicos de
cada proceso contra injerencias no intencionadas de otros procesos.
iv. 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.

2.- Semáforos:
Las diversas soluciones hardware al problema de la sección critica, son
complicadas de utilizar por los programadores de aplicaciones. Para superar
esta dificultad, podemos usar una herramienta de sincronización denominada
semáforo.

Un semáforo S es una variable entera a la que, dejando aparte la


inicialización, solo se accede mediante dos operaciones atómicas estándar:
wait () y signal ().

La definición de wait () es la que sigue:

Todas las modificaciones del valor entero del semáforo en las


operaciones wait () y signal () deben ejecutarse de forma indivisible. Es decir,
cuando un proceso modifica el valor del semáforo, ningún otro proceso
puede modificar simultáneamente el valor de dicho semáforo. Además, en el
caso de wait (), la prueba del valor entero de S (S <= 0), y su posible
modificación (S--) también se deben ejecutar sin interrupción.

Utilización:
Los sistemas operativos diferencian a menudo entre semáforos
contadores y semáforos binarios. El valor de un semáforo contador puede
variar en un dominio no restringido, mientras que el valor de un semáforo
binario solo puede ser 0 o 1. En algunos sistemas, los semáforos binarios se
conocen como cerrojos mutex, ya que son cerrojos que proporcionan
exclusión mutua. Podemos usar semáforos binarios para abordar el
problema de la sección crítica en el caso de múltiples procesos. Los n
procesos comparten un semáforo, mutex, inicializado con el valor 1.

Los semáforos contadores se pueden usar para controlar el acceso a


un determinado recurso formado por un número finito de instancias. El
semáforo se inicializa con el número de recursos disponibles. Cada proceso
que desee usar un recurso ejecuta una operación wait () en el semáforo
(decrementando la cuenta). Cuando un proceso libera un recurso, ejecuta
una operación signal () (incrementando la cuenta). Cuando la cuenta del
semáforo llega a 0, todos los recursos estarán en uso. Después, los
procesos que deseen usar un recurso se bloquearan hasta que la cuenta sea
mayor que 0.

También podemos usar los semáforos para resolver diversos problemas


de sincronización. Por ejemplo, considere dos procesos que se estén
ejecutando de forma concurrente: P1 con una instrucción S1 y P2 con una
instrucción S2. Suponga que necesitamos que S2 se ejecute solo después
de que Sl se haya completado. Podemos implementar este esquema dejando
que P1 y P2 compartan un semáforo común synch, inicializado con el valor 0,
e insertando las instrucciones:
3.- Monitores:
Los monitores son estructuras de un lenguaje de programación que
ofrecen una funcionalidad equivalente a la de los semáforos y que son más
fáciles de controlar. La estructura de monitor se ha implementado en varios
lenguajes de programación, incluido Pascal Concurrente, Pascal-plus,
Modula-2 y Modula-3. Más recientemente, se han implementado como una
biblioteca de programas. Esto permite poner cierres de monitor a objetos
cualesquiera. En particular, para algo parecido a una lista enlazada, se
puede querer bloquear todas las listas enlazadas con un solo cierre o bien
tener un cierre para cada elemento de cada lista.

4.- Sección Critica:

Se denomina sección crítica, en programación concurrente, a la porción


de código de un programa de computador en la cual se accede a un recurso
compartido (estructura de datos o dispositivo) que no debe ser accedido por
más de un hilo en ejecución. Se necesita un mecanismo de sincronización en
la entrada y salida de la sección crítica para asegurar la utilización en
exclusiva del recurso.
El acceso concurrente se controla teniendo cuidado de las variables
que se modifican dentro y fuera de la sección crítica.

5.- Bloqueo:

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 está
esperando por un evento determinado que nunca va a ocurrir. No existe una
solución eficiente para el caso general. Todos los interbloqueos suponen
necesidades contradictorias de recursos por parte de dos o más procesos.

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 retrazar su ejecución. El interbloqueo puede involucrar a
recursos tanto consumibles como reutilizables. Un recurso consumible es
aquel que se destruye al ser adquirido por un proceso; por ejemplo, los
mensajes, la información de los buffers de e/s. Un recurso reutilizable es
aquel que no se destruyó o se desgasto con el uso como ser un canal de e/s
o zona de memoria.

REFERENCIAS BIBLIOGRÁFICAS
 https://es.scribd.com/document/138877285/2do-Grupo-Coordinacion-
y-Sincronizacion-de-Procesos

 https://es.scribd.com/doc/60305478/Unidad-5-Coordinacion-y-
Sincronizacion-de-Procesos-Copia

También podría gustarte