Está en la página 1de 38

PROGRAMACION

CONCURRENTE
La programacin concurrente es la simultaneidad en la
ejecucin de mltiples tareas interactivas. Estas tareas
pueden ser un conjunto de procesos o hilos de ejecucin
creados por un nico programa. Las tareas se pueden
ejecutar en un sola UCP (multiprogramacin), en varios
procesadores o en una red de computadores
distribuidos. La programacin concurrente est
relacionada con la programacin paralela, pero enfatiza
ms la interaccin entre tareas. As, la correcta
secuencia de interacciones o comunicaciones entre los
procesos y el acceso coordinado de recursos que se
comparten por todos los procesos o tareas son las
claves de esta disciplina.
Multitarea, Multiprogramacion,
multiprocesos
La programacion concurrente tiene capacidad para
realziar varias tareas al mismo tiempo o muchas tareas
en una sola PC con un procesador o varios.

Multitareas
Es la capacidad de un sistema operativo para ejecutar
varios procesos al mismo tiempo corriendo sobre un
procesador.

Con los sistemas operativos DOS esto era incapaz de
realizarse.

Existen varios tipos de multitareas y son :
* Multitarea Nula
* Multitarea Cooperativa
* Multitarea Preferente
* Multitarea Real
Multitarea Nula
ES aquel sistema
operativo que carece de
multitarea. An as puede
simularla
implementndola en un
espacio de usuario o
usando trucos como los
TSR en MS-DOS.
Justamente la familia
DOS son ejemplos de
sistemas operativos de
multitarea nula.


Multitarea Cooperativa
Tipo de multitarea en donde los
procesos de usuario son quieres
ceden la CPU al sistema operativo
a intervalos regulares.


Es sumamente problemtico
porque si por algn motivo el
proceso de usuario es
interrumpido, no cede la CPU al
sistema operativo que lo ejecuta
y, por lo tanto, quedar trabado
(tildado).

Los sistemas operativos Windows
antes de la versin 1995
implementaban este tipo de
multitarea.

Multitarea Preferente
Multitarea en donde el SO se encarga de administrar uno o ms
procesadores, repartiendo el tiempo de uso del mismo entre los
distintos procesos que esperan utilizarlo (tareas en ejecucin).

En el caso de un solo procesador, cada proceso o tarea lo utiliza en
perodos cortsimos de tiempo, lo que, en la prctica, da la
sensacin de que estuviesen ejecutndose al mismo tiempo.

Los sistemas operativos que utilizan este tipo de multitareas son los
UNIX y sus clones (Linux, etc), Windows NT, etc.


Multitarea Real
Multitarea en donde el SO ejecuta los procesos realmente al mismo
tiempo haciendo uso de mltiples procesadores (ms de dos).

La ejecucin realmente se realiza en distintos procesadores para
cada proceso o tarea. Obviamente en el caso de que los procesos o
tareas sean ms que la cantidad de procesadores, stos comienzan
a ejecutarse en procesadores "en uso" en la forma de multitareas
preferente

Todos los sistemas operativos modernos soportan esta capacidad.


Multitarea Real
Multiprogramacion
MULTIPROGRAMACION Es la tcnica que permite que dos o mas
programas ocupen la misma unidad de memoria principal y que
sean ejecutados al mismo tiempo.

La multiprogramacin se refiere a dos o mas programas corriendo o
procesndose al mismo tiempo; La multiprogramacin se controla a
travs del sistema operativo, el cual observa los programas y los
vigila hasta que estn concluidos.

El numero de programas que pueden multiprogramarse en forma
efectiva, depende de una combinacin de la cantidad de memoria,
de la velocidad de la CPU y del numero y velocidad de los recursos
perifricos que tenga conectados, as como de la eficiencia del
SISTEMA OPERATIVO.
Principios de Concurrencia
En un sistema multiprogramado con un nico procesador, los
procesos se intercalan en el tiempo aparentando una ejecucin
simultnea. Aunque no se logra un procesamiento paralelo y
produce una sobrecarga en los intercambios de procesos, la
ejecucin intercalada produce beneficios en la eficiencia del
procesamiento y en la estructuracin de los programas.


Principios de Concurrencia
La concurrencia es el punto clave en los conceptos de multitarea,
multiprogramacin y multiproceso, la concurrencia comprende un
gran numero de cuestiones de diseo incluyendo la comunicacin
entre procesos, la comparticin y competencia por los recursos, la
sincronizacin de la ejecucin de varios procesos y la asignacin
del procesador a los procesos, la concurrencia puede presentarse
en tres contextos diferentes:


Varias aplicaciones:
Aplicaciones estructuradas:
Estructura del sistema operativo:


Varias aplicaciones:
En este caso el tiempo de procesador de una mquina es
compartido dinmicamente entre varios trabajos o aplicaciones
activas.

Aplicaciones estructuradas:
Como consecuencia del diseo modular de una aplicacin y la
divisin de la misma en tareas explcitas estas pueden ser
ejecutadas de forma concurrente.
En programacin, un lenguaje estructurado es aquel que soporta la
divisin en bloques (procedimientos y funciones) que pueden o no
comunicarse entre s.

Es contrario a inestructurado, de poco uso, que no tiene ninguna
estructura, es simplemente un bloque, como por ejemplo, los
archivos batch (.bat).

Estructura del sistema operativo:
Como resultado de la aplicacin de la estructuracin en el diseo
del propio SO, de forma que este se implemente como un conjunto
de procesos.

LABORES DEL SISTEMA
OPERATIVO
Elementos de gestin y diseo que surgen por causa de la
concurrencia:
1) El sistema operativo debe seguir a los distintos procesos activos

2) El sistema operativo debe asignar y retirar los distintos recursos a
cada proceso activo, entre estos se incluyen:
_Tiempo de procesador
_Memoria
_Archivos
_Dispositivos de E/S

3) El sistema operativo debe proteger los datos y los recursos
fsicos de cada proceso contra injerencias no intencionadas de otros
procesos.

4) Los resultados de un proceso deben ser independientes de la
velocidad a la que se realiza la ejecucin de otros procesos
concurrentes.
Puede verse la concurrencia de procesos como una
ejecucin simultnea de varios procesos. Si tenemos
un multiprocesador la concurrencia parece clara, en
un momento dado cada procesador ejecuta un
proceso.

Se puede ampliar el concepto de concurrencia si
entendemos por procesado concurrente del sistema
en conjunto,

varios procesos se vean en un estado intermedio
entre su estado inicial y final. Esta ltima definicin
incluye los sistemas multiprogramados de un nico
procesador que estudiamos en los temas anteriores.




Cooperacin entre Procesos

La velocidad de un proceso depende de la frecuencia de la
interrupcin asociada a cada uno de ellos que un proceso
se ejecuta asncronamente con respecto a otro, es decir,
sus ejecuciones son independientes. Sin embargo, hay
ciertos instantes en lo que los procesos deben
sincronizar sus actividades. Son estos puntos a partir de
los cuales un proceso no puede progresar hasta que
otro haya completado algn tipo de actividad
Posibilidad de interaccion de
procesos

Las posibilidadades de interaccion de los procesos pueden
clasicarse en funcion del nivel de conocimiento que cada
proceso requieren la existencia de los demas.

1. Un proceso no tiene en absoluto conocimiento de la
existencia de los demas

1. Que los procesos tengan un conocimiento indirecto de los
otros procesos.

1. Tiene lugar cuando los procesos tienen conocimiento directo
unos de otros por haber sido diseados para trabajar
conjuntamente el alguna actividad
Comunicacin y sincronisacion
de proceso
1. Necesidad de exclusion mutua. Es decir, los procesos
deberan acceder de forma exclusiva a ciertos recursos o
zonas de memoria considerados como crticos.

2. Interbloqueos: tienen lugar cuando ninguno de los procesos
en competencia puede
continuar su ejecucion normal por carecer de alguno de los
recursos que necesita.

3. 3. ejecucion incompleto: este problema tiene lugar cuando
la ejecucion de un proceso queda
siempre pospuesta a favor de algun otro de los procesos en
competencia.
Necesidad de sincronizacion de los
procesos: region crtica y
exclusion mutua
La sincronizacin entre procesos puede definirse
como la necesidad que tienen algunos procesos de
bloquearse en determinadas circunstancias y ser
despertados cuando ocurren ciertos eventos. Un caso
tpico que muestra la necesidad de sincronizacin
entre procesos es cuando un proceso inicia una
lectura y va a utilizar en la siguiente instruccin la
informacin leda. En este caso el proceso debe
esperar a que se termine la operacin de
Entrada/Salida para continuar.
Gestion de procesos
ejecucion
La exclusin mutua la podramos definir como una
operacin de control que permite la coordinacin de
procesos concurrentes (Comunicacin requerida entre
dos o mas procesos), y que tiene la capacidad de
prohibir a los dems procesos realizar una accin
cuando un proceso haya obtenido el permiso.
LA EXCLUSION MUTUA
SOLUCIONES SOFTWARE PARA LA EXCLUSION MUTUA
Soluciones por Software. Una manera es dejar la responsabilidad
a los procesos que deseen ejecutar concurrentemente, de esta
manera los procesos deben coordinarse unos con otros para cumplir
la exclusin mutua sin ayuda alguna, aunque estas soluciones son
propensas a errores y a una fuerte carga de proceso (Algunos ejemplos
de estas son: Algoritmo de Dekker y Algoritmo de Peterson).
Algoritmo de Dekker
Algoritmo de Peterson
Semforos
Monitores
Paso de Mensajes
Soluciones Hardware para la exclusin mutua
Algoritmo de Dekker
es un algoritmo de programacin concurrente para exclusin mutua,
que permite a dos procesos o hilos de ejecusion compartir un recurso
sin conflictos. Fue uno de los primeros algoritmos de exclusin mutua
inventados, implementado por Edsger Diikstra.

Si ambos procesos intentan acceder a la seccin crtica simultneamente,
el algoritmo elige un proceso segn una variable turno. Si el otro proceso
est ejecutando en su seccin crtica, deber esperar su finalizacin.
Existen cinco versiones del algoritmo Dekker, teniendo ciertos fallos los
primeros cuatro. La versin 5 es la que trabaja ms eficientemente, siendo
una combinacin de la 1 y la 4.
Versin 1: Alternancia estricta. Garantiza la exclusin mutua, pero
su desventaja es que acopla los procesos fuertemente, esto significa
que los procesos lentos atrasan a los procesos rpidos.

Versin 2: Problema interbloqueo. No existe la alternancia, aunque
ambos procesos caen a un mismo estado y nunca salen de ah.

Versin 3: Colisin regin crtica no garantiza la exclusin mutua.
Este algoritmo no evita que dos procesos puedan acceder al mismo
tiempo a la regin critica.

Versin 4: Postergacin indefinida. Aunque los procesos no estn en
interbloqueo, un proceso o varios se quedan esperando a que suceda
un evento que tal vez nunca suceda.


Peterson desarroll el primer algoritmo (1981) para dos procesos que
fue una simplificacin del algoritmo de Dekker para dos procesos.
Posteriormente este algoritmo fue generalizado para que funcione para
N procesos .En el algoritmo para N procesos las variables c[i] adems
de valer "verdadero" y "falso", pueden valer "en seccin critica" y turno
desde 1 hasta N.
El procedimiento es una generalizacin de este .c[i], que es un array y
turno, que solo puede valer 1o 2 .
.Este algoritmo garantiza la exclusin mutua debido al uso de una
variable compartida , turno, que se chequea cada vez.
Inicialmente, c[0]=c[1]= falso, y el valor de turno no tiene relevancia
(pero de be ser 0 o 1). Para entrar en la seccin crtica, el proceso Pi
primero asigna el valor verdadero a c[i] y luego afirma que es el turno
del otro proceso para entrar si as lo desea (turno = j). Si ambos
procesos tratan de entrar a la vez, se asignar turno como i y j
aproximadamente al mismo tiempo. Slo una de estas asignaciones
durar; la otra ocurrir, pero ser reemplazada de inmediato. El valor
eventual de turno decide a cul de los dos procesos se le permitir
entrar primero en su seccin crtica.
Los semforos pueden contemplarse como variables que
tienen un valor entero sobre
las que se definen las tres operaciones siguientes:
Un semforo puede inicializarse con un valor no negativo.
Un semforo puede inicializarse con un valor no negativo.
La operacin WAIT decremento el valor del semforo. Si el
valor se hace negativo,
el proceso que ejecuta WAIT queda bloqueado.
La operacin SIGNAL incrementa el valor del semforo. Si el
valor no es positivo,
se desbloquea a un proceso bloqueado previamente por una
operacin WAIT.
Veamos cual sera la implementacin de un semforo.


Un monitor es, esencialmente, una coleccin de datos y de procedimientos para su
manipulacin junto con una secuencia de inicializacin. Las variables de datos
globales
son generalmente privadas al monitor por lo que solo son accesibles a los
procedimientos
de este. Los procedimientos del monitor podrn ser pblicos o privados. Un monitor
puede considerarse como una estructura esttica que se activa nicamente cuando
alguno
de sus procedimientos pblicos es llamado por un proceso en ejecucin y se dice,
entonces,
que el proceso en cuestin entra o tiene acceso al monitor.
Solamente un proceso puede estar ejecutndose en el monitor en un instante
determinado.
Una estructura de datos compartida puede as protegerse situndola dentro de
un monitor que ofrecer un servicio de exclusin mutua para dicha estructura. Para
que
resulten tiles en el procesamiento concurrente, los monitores deben incluir alguna
herramienta
de sincronizacin de forma que se impida el acceso al monitor a un proceso
cuando otro esta ejecutando dentro de el. Esta sincronizacin se consigue por medio

PASO

DE

MENSAJES
Los mensajes constituyen
relativamente sencillo y adecuado
para la comunicacin y para la
sincronizacin entre procesos que
trabajan en entornos

LA CABECERA


EL CUERPO DEL MENSAJE

Denominacin o direccionamiento

Copia

Intercambio sincrono vs. intercambio
asncrono

Longitud


SOLUCIONES HADWARE PARA
LA EXCLUSION MUTUA
Estrategias pesimistas

Estrategias obtimistas
Habilitacin / deshabilitacion
de interrupciones

instruccin comprobar y fijar
(test and set)


instruccin comparar e
intercambiar
(compare and swap)


el problema de la cena de los
filsofos

También podría gustarte