Está en la página 1de 8

2.

4 Concurrencia y Secuencialidad

Los procesos son concurrentes si existen simultneamente. Los
procesos concurrentes pueden funcionar en forma totalmente independiente unos
de otros, o pueden ser asncronos, lo cual significa que en ocasiones requieren
cierta sincronizacin o cooperacin.

Cuando dos o ms procesos llegan al mismo tiempo a ejecutarse, se dice que se
ha presentado una concurrencia de procesos. Es importante mencionar que para
que dos o ms procesos sean concurrentes, es necesario que tengan alguna
relacin entre ellos como puede ser la cooperacin para un determinado trabajo o
el uso de informacin o recursos compartidos, por ejemplo: en un sistema de un
procesador, la multiprogramacin es una condicin necesaria pero no suficiente
para que exista concurrencia, ya que los procesos pueden ejecutarse de forma
totalmente independiente.
Por otro lado en un sistema de varios procesos se puede presentar la
concurrencia siempre y cuando las actividades necesiten actuar entre si ya sea
para utilizar informacin en comn o para cualquier otra cosa.

Procesos concurrentes.
Los procesos son concurrentes si existen simultneamente. Los
procesos concurrentes pueden funcionar en forma totalmente independiente
unos de otros, o pueden ser asncronos, lo cual significa que en ocasiones
requiere cierta sincronizacin y cooperacin.

Las siguientes definiciones son esenciales para comprender los
conceptos de concurrencia y secuencialidad.

* Actividad.
. Procesos: Es un programa en ejecucin.
. Tarea: Son las distintas partes de un proceso que se ejecutan
simultneamente.
* Sistemas:
. Multiprogramacin: Admiten varias actividades que comparten el procesador,
pero slo. Una puede estar ejecutndose en un momento dado.
. Multiproceso: Las actividades se ejecutan en sus propios procesadores,
conectadosa travs de una red de comunicaciones.
* Paralelismo:
Es la ejecucin de diversas actividades simultneamente en varios
procesadores. Si slo existe un procesador gestionando multiprogramacin, se
puede decir que existe pseudo-paralelismo. Se trata de un concepto fsico
producido por la existencia de varios procesadores.
* Concurrencia:
Es la existencia de varias actividades ejecutndose simultneamente, y
necesitan sincronizarse para actuar conjuntamente. Se trata, en este caso, de
un concepto lgico, ya que slo hace referencia a las actividades, sin importar
el nmero de procesadores presentes.



Existen tres formas modelos de computadora en los que se puede pueden
ejecutar procesos concurrentes:

Multiprogramacin con un nico procesador.
En este modelo todos los procesos concurrentes ejecutan sobre un nico
procesador. El sistema operativo se encarga de ir repartiendo el tiempo del
procesador entre los distintos procesos, intercalando la ejecucin de los mismos
para dar as una apariencia de ejecucin simultnea.
Multiprocesador.
Un multiprocesador es una maquina formada por un conjunto de procesadores
que comparten memoria principal. En este tipo de arquitecturas, los procesos
concurrentes no solo pueden intercalar su ejecucin sino tambin superponerla.
En este caso si existe una verdadera ejecucin simultanea de procesos, al
coincidir las fases de procesamiento de distintos procesos. En un instante dado se
pueden ejecutar de forma simultanea tantos procesos como procesadores haya.
Multicomputadora.
Una multicomputadora es una mquina de memoria distribuida, en contraposicin
con el multiprocesador que es de memoria compartida. Est formada por
una serie de computadoras completas con su UCP, memoria principal y, en su
caso, periferia. Cada uno de estos procesadores completo se denomina nodo. Los
nodos se encuentran conectados y se comunican entre s a travs de una red de
interconexin, empleando el mtodo de paso de mensajes. En este tipo de
arquitecturas tambin es posible la ejecucin simultnea de los procesos sobre los
distintos procesadores.
En general la concurrencia ser aparente siempre que el nmero de procesos sea
mayor que el de procesadores disponibles, es decir, cuando haya ms de un
proceso por procesador. La concurrencia ser real cuando haya un proceso por
procesador

Para que dos actividades, sean concurrentes, es necesario que tengan relacin
entre s, como puede ser la cooperacin en un trabajo determinado o el uso de
informacin compartida.

En un sistema monoprocesador, la existencia de multiprogramacin es
condicin necesaria, pero no suficiente para que exista concurrencia, ya que los
procesos pueden ejecutarse independientemente. Por ejemplo, un editor y un
compilador pueden estar ejecutndose simultneamente en una computadora sin
que exista concurrencia entre ellos. Por otro lado si un programa se est
ejecutando y se encuentra grabando datos en un archivo, y otro programa tambin
en ejecucin est leyendo datos de ese mismo archivo, s existe concurrencia
entre ellos, pues el funcionamiento de uno interfiere en el funcionamiento de otro.
Si un sistema es multiprocesador, tambin pueden presentarse situaciones de
concurrencia siempre y cuando las actividades necesiten actuar entre s, bien por
utilizar informacin comn, o por cualquier otra causa.
Los procesos del sistema pueden ejecutarse concurrentemente, puede haber
mltiples tareas en el CPU con varios procesos. Existen varias razones para
permitir la ejecucin concurrente:

* Compartir recursos fsicos.
Ya que los recursos del hardware de la computadora son limitados, nos
podemos ver obligados a compartirlos en un entorno multiusuario.
* Compartir recursos lgicos.
Puesto que varios usuarios pueden interesarse en el mismo elemento de
informacin (por ejemplo un archivo compartido), debemos proporcionar un
entorno que permita el acceso concurrente a estos tipos de recursos.
* Acelerar los clculos.
Si queremos que una tarea se ejecute con mayor rapidez, debemos
dividirla en subtareas, cada una de las cuales se ejecutara, en paralelo con las
dems.

* Modularidad.
Podremos construir el sistema en forma modular, dividiendo las
funciones del sistema en procesos separados.
* Comodidad.
Un usuario puede tener que ejecutar varias tareas a la vez, por ejemplo
puede editar, imprimir y compilar en paralelo.
La ejecucin concurrente que requiere la cooperacin entre procesos
necesita un mecanismo para la sincronizacin y comunicacin de procesos,
exclusin mutua y sincronizacin.

Problemas de Concurrencia En los sistemas de tiempo compartido (aquellos
con varios usuarios, procesos, tareas, trabajos que reparten el uso de CPU
entre estos) se presentan muchos problemas debido a que los procesos
compiten por los recursos del sistema. Imagine que un proceso est
escribiendo en la unidad de cinta y se le termina su turno de ejecucin e
inmediatamente despus el proceso elegido para ejecutarse comienza a
escribir sobre la misma cinta. El resultado es una cinta cuyo contenido es un
desastre de datos mezclados. As como la cinta, existen una multitud de
recursos cuyo acceso debe der controlado para evitar los problemas de la
concurrencia.

El sistema operativo debe ofrecer mecanismos para sincronizar la ejecucin de
procesos: semforos, envo de mensajes, 'pipes', etc. Los semforos son
rutinas de software (que en su nivel ms interno se auxilian del hardware) para
lograr exclusin mutua en el uso de recursos. Para entender este y otros
mecanismos es importante entender los problemas generales de concurrencia,
los cuales se describen enseguida.
Condiciones de Carrera o Competencia: La condicin de carrera (race
condition) ocurre cuando dos o ms procesos accesan un recurso compartido
sin control, de manera que el resultado combinado de este acceso depende
del orden de llegada. Suponga, por ejemplo, que dos clientes de un banco
realizan cada uno una operacin en cajeros diferentes al mismo tiempo.
El usuario A quiere hacer un depsito. El B un retiro. El usuario A comienza
la transaccin y lee su saldo que es 1000. En ese momento pierde su turno de
ejecucin (y su saldo queda como 1000) y el usuario B inicia el retiro: lee el
saldo que es 1000, retira 200 y almacena el nuevo saldo que es 800 y termina.
El turno de ejecucin regresa al usuario A el cual hace su depsito de 100,
quedando saldo = saldo + 100 = 1000 + 100 = 1100. Como se ve, el retiro se
perdi y eso le encanta al usuario A y B, pero al banquero no le convino esta
transaccin. El error pudo ser al revs, quedando el saldo final en 800.
Postergacin o Aplazamiento Indefinido(a): Esto se mencion en el apartado
anterior y consiste en el hecho de que uno o varios procesos nunca reciban el
suficiente tiempo de ejecucin para terminar su tarea. Por ejemplo, que un
proceso ocupe un recurso y lo marque como 'ocupado' y que termine sin
marcarlo como 'desocupado'. Si algn otro proceso pide ese recurso, lo ver
'ocupado' y esperar indefinidamente a que se 'desocupe'.
Condicin de Espera Circular: Esto ocurre cuando dos o ms procesos
forman una cadena de espera que los involucra a todos. Por ejemplo, suponga
que el proceso A tiene asignado el recurso 'cinta' y el proceso B tiene asignado
el recurso 'disco'. En ese momento al proceso A se le ocurre pedir el recurso
'disco' y al proceso B el recurso 'cinta'. Ah se forma una espera circular entre
esos dos procesos que se puede evitar quitndole a la fuerza un recurso a
cualquiera de los dos procesos.
Condicin de No Apropiacin: Esta condicin no resulta precisamente de la
concurrencia, pero juega un papel importante en este ambiente. Esta condicin
especifica que si un proceso tiene asignado un recurso, dicho recurso no
puede arrebatrsele por ningn motivo, y estar disponible hasta que el
proceso lo 'suelte' por su voluntad.
Condicin de Espera Ocupada: Esta condicin consiste en que un proceso
pide un recurso que ya est asignado a otro proceso y la condicin de no
apropiacin se debe cumplir.
Entonces el proceso estar gastando el resto de su time slice checando si el
recurso fue liberado. Es decir, desperdicia su tiempo de ejecucin en esperar.
La solucin ms comn a este problema consiste en que el sistema operativo
se d cuenta de esta situacin y mande a una cola de espera al proceso,
otorgndole inmediatamente el turno de ejecucin a otro proceso.

Condicin de Exclusin Mutua: Cuando un proceso usa un recurso del
sistema realiza una serie de operaciones sobre el recurso y despus lo deja de
usar. A la seccin de cdigo que usa ese recurso se le llama 'regin crtica'. La
condicin de exclusin mutua establece que solamente se permite a un
proceso estar dentro de la misma regin crtica. Esto es, que en cualquier
momento solamente un proceso puede usar un recurso a la vez. Para lograr la
exclusin mutua se ideo tambin el concepto de 'regin crtica'. Para logar la
exclusin mutua generalmente se usan algunas tcnicas para lograr entrar a la
regin crtica: semforos, monitores, el algoritmo de Dekker y Peterson, los
'candados'. Para ver una descripcin de estos algoritmos consulte
Condicin de Ocupar y Esperar un Recurso: Consiste en que un proceso pide
un recurso y se le asigna. Antes de soltarlo, pide otro recurso que otro proceso
ya tiene asignado.
Los problemas descritos son todos importantes para el sistema operativo, ya
que debe ser capaz de prevenir o corregirlos. Tal vez el problema ms serio
que se puede presentar en un ambiente de concurrencia es el 'abrazo mortal',
tambin llamado 'trabazn' y en ingls deadlock.
El deadlock es una condicin que ningn sistema o conjunto de procesos
quisiera exhibir, ya que consiste en que se presentan al mismo tiempo cuatro
condiciones necesarias: La condicin de no apropiacin, la condicin de
espera circular, la condicin de exclusin mutua y la condicin de ocupar y
esperar un recurso. Ante esto, si el deadlock involucra a todos los procesos del
sistema, el sistema ya no podr hacer algo productivo. Si el deadlock involucra
algunos procesos, stos quedarn congelados para siempre.

También podría gustarte