Anda di halaman 1dari 6

Unidad

Temas

1.

Introduccin a los
Sistemas
Concurrentes

2.

Primitivas de
Sincronizacin
Basadas en Variables
Compartidas

3.

Primitivas de
Sincronizacin
Basadas en el Paso
de Mensajes

4.

Interbloqueos en los
Sistemas
Concurrentes
5

Modelos de Lenguajes
para la Programacin

Subtemas
1.1. Introduccin a la Programacin
Concurrente.
1.2. Concepto de concurrencia
1.3. Relaciones de interaccin entre
procesos
1.4. Caractersticas de la
programacin concurrente
1.5. Propiedades de correccin de un
sistema concurrente
1.6. Grafos de precedencia
2.1. Mecanismos para implementar
los tipos de sincronizacin
2.2. Espera-ocupada
2.3. Algoritmos no eficientes
2.4. Algoritmo incorrecto de Hyman
2.5. Algoritmo de Dekker
2.6. Algoritmo de Peterson
2.7. Semforos
2.8. Resolucin de problemas usando
semforos
2.9. Implementacin de semforos
2.10. Inconvenientes del mecanismo
de los semforos
3.1. Mecanismos de bajo nivel para el
paso de mensajes
3.2. Introduccin
3.3. Caractersticas bsicas de la
comunicacin
3.4. Especificacin de canales de
comunicacin
3.5. Sincronizacin
3.6. Exclusin mutua en Sistemas
Distribuidos
3.7. Construcciones de alto nivel para
paso de mensajes
3.8. Llamadas a procedimientos
remotos
4.1. Interbloqueos en los Sistemas
Concurrentes.
4.2. Interbloqueos en Sistemas
Centralizados
4.3. Prevencin de interbloqueos
4.4. Interbloqueos en Sistemas
Distribuidos
5.1. Caracterizacin de los lenguajes
concurrentes
5.2. Clasificacin de los lenguajes
concurrentes

Concurrente

Modela de Sistemas
Concurrentes

5.3. Lenguajes de programacin


orientados a mensajes
5.4. Lenguajes de programacin
orientados a operaciones
6.1. Redes de Petri
6.2. Caractersticas de una red de
Petri
6.3. Ejemplos de redes de Petri

Unidad 1 Introduccin a los Sistemas Concurrentes

1.1. Introduccin a la Programacin Concurrente.

Introduccin
La idea de programacin concurrente siempre estuvo asociada al mundo de los
Sistemas Operativos (SSOO). No en vano, los primeros programas concurrentes
fueron los propios Sistemas Operativos de multiprogramacin en los que un
solo procesador de gran capacidad deba repartir su tiempo entre muchos
usuarios. Para cada usuario, la sensacin era que el procesador estaba
dedicado para l. Durante la dcada de los sesenta y setenta esto fue as. La
programacin de sistemas con capacidades de concurrencia se haca a bajo
nivel, en ensamblador, pues aparte de no disponer de lenguajes de alto nivel
con capacidades de concurrencia, se primaba la supuesta eficiencia del cdigo
escrito directamente en ensamblador. La aparicin en 1972 del lenguaje de alto
nivel Concurrent Pascal [Brinch-Hansen,
1975], desarrollado por Brinch
Hansen, se encarg de romper este mito y abrir la puerta a otros lenguajes de
alto nivel que incorporaban concurrencia.
Desde entonces la programacin concurrente ha ido ganando inters y
actualmente se utiliza muy a menudo en la implementacin de
numerosos sistemas. Tres grandes hitos se nos antojan importantes para que la
programacin concurrente actualmente sea tan importante:
La aparicin del concepto de thread o hilo que hace que los programas
puedan ejecutarse con mayor velocidad comparados con aquellos
que utilizan el concepto de proceso.
La aparicin ms reciente de lenguajes como Java, lenguaje orientado a
objetos de propsito general que da soporte directamente a la
programacin concurrente mediante la inclusin de primitivas
especficas.
La aparicin de Internet que es un campo abonado para el desarrollo y la
utilizacin de programas concurrentes. Cualquier programa de Internet
en el que podamos pensar tales como un navegador, un chat, etc, estn
programados usando tcnicas de programacin concurrente.

1.2. Concepto de concurrencia

Segn el diccionario de la Real Academia Espaola, una de las acepciones de la


palabra concurrencia es

Accin y efecto de concurrir.


Conjunto de personas que asisten a un acto o reunin.
Coincidencia, concurso simultneo de varias circunstancias.
Asistencia, participacin.

Si en esta definicin sustituimos la palabra suceso por proceso ya tenemos una


primera aproximacin a lo que va a ser la concurrencia en computacin.
Puesto que en la definicin anterior y en la que daremos posteriormente de
programacin concurrente aparece la palabra proceso y sta est basada en el
concepto de programa, se hace necesario dejar claro en este punto qu se va a
entender tanto por programa como por proceso.
Conceptos Fundamentales
La programacin concurrente es la disciplina que se encarga del estudio de las
notaciones que permiten especificar la ejecucin concurrente de las acciones
de un programa, as como las tcnicas para resolver los problemas inherentes
a la ejecucin concurrente, que son bsicamente comunicacin y
sincronizacin.
Como puede intuirse, el trabajar con procesos concurrentes va a aadir
complejidad a la tarea de programar
La idea de programacin concurrente siempre ha estado asociada a los
sistemas operativos: Un slo procesador de gran capacidad deba repartir su
tiempo entre muchos usuarios.
La programacin de estos sistemas se haca a bajo nivel (ensamblador).
Posteriormente apareceran lenguajes de alto nivel con soporte para este tipo
de programacin.
Su utilizacin y potencial utilidad se apoya en: threads o hilos, java e internet.
Definicin: Se habla de concurrencia cuando ocurren varios sucesos de manera
contempornea.
En base a esto, la concurrencia en computacin est asociada a la ejecucin
de varios procesos que coexisten temporalmente.
Programacin Concurrente
Para definirla correctamente, debemos diferencias entre programa y proceso.
Programa:
Conjunto
de
sentencias/instrucciones
que
se
ejecutan
secuencialmente. Se asemeja al concepto de clase dentro de la POO.
Es por tanto un concepto esttico.
Proceso: Bsicamente, se puede definir como un programa en ejecucin. Lneas
de cdigo en ejecucin de manera dinmica. Se asemeja al concepto de objeto
en POO.

1.3. Relaciones de interaccin entre procesos


Una primera definicin incompleta de proceso sera la de un programa en
ejecucin. Es decir, un proceso es algo ms que las lneas de cdigo de un
programa. Un proceso es algo dinmico. Est representado por el valor del contador de
programa, el contenido de los registros del procesador, un pila y una seccin de datos
que contiene variables globales. Un proceso es una entidad dinmica. Puede
compararse con el concepto de objeto en el mbito de la POO.
De igual manera que en POO puede haber mltiples objetos de una clase
determinada, aqu puede haber mltiples procesos que corresponden al mismo
programa. Como ejemplo consideremos un servidor de aplicaciones donde reside una
aplicacin de navegador de Internet y existen varios usuarios ejecutando ese
navegador, cada uno de ellos navegando por un sitio diferente. Cada instancia del
programa es un proceso. Cada proceso tendr su propio contador de programa, as
como sus propios registros, pila y variables.

1.4. Caractersticas de la programacin concurrente

Caractersticas de los sistemas concurrentes


La ejecucin de sistemas concurrentes tiene algunas caractersticas que los diferencian
claramente de los sistemas secuenciales. Destacamos dos:
1.4.1 Orden de ejecucin de las instrucciones
En los programas secuenciales hay un orden total en la ejecucin de las lneas de
cdigo. Ante un conjunto de datos de entrada se sabe siempre por dnde va a ir el
programa (su flujo de ejecucin). en el orden parcial por muchas veces que se ejecute
el programa, el hilo de ejecucin siempre tendr el mismo recorrido, es decir, las
instrucciones siempre se ejecutarn en el mismo orden.

En los programas concurrentes, sin embargo, hay un orden parcial. Ante el mismo
conjunto de datos de entrada no se puede saber cul va a ser el flujo de ejecucin. En
cada ejecucin del programa el flujo puede ir por distinto sitio. Orden parcial, donde se
supone que todas las instrucciones pueden ejecutarse concurrentemente, podemos ver
cmo en dos ejecuciones distintas el orden en el que se ejecutan las instrucciones
puede variar.
1.5. Propiedades de correccin de un sistema concurrente
1.6. Grafos de precedencia

Anda mungkin juga menyukai