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
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.
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