Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Apuntes sobre los sistemas concurrentes, Apuntes de Informática

Apunte sobre cuáles son los sistemas más concurrentes, sus principales características y los conceptos fundamentales para entenderlos.

Tipo: Apuntes

2015/2016

Subido el 12/01/2016

yerbamate
yerbamate 🇪🇸

4.2

(32)

74 documentos

1 / 31

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Sistemas Concurrentes:
Conceptos fundamentales
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f

Vista previa parcial del texto

¡Descarga Apuntes sobre los sistemas concurrentes y más Apuntes en PDF de Informática solo en Docsity!

Sistemas Concurrentes:

Conceptos fundamentales

Contenidos

  • Concurrencia y paralelismo
  • Sistema concurrente
  • Programación concurrente
  • Lenguaje concurrente
  • Arquitectura paralela
  • Sistema distribuido

Paralelismo vs concurrencia

  • El paralelismo es un caso particular de la concurrencia.
  • Se habla de paralelismo cuando ocurre la ejecución simultánea de instrucciones:  arquitecturas paralelas  procesamiento paralelo  algoritmos paralelos  programación paralela

Procesos y concurrencia

  • Una forma de ver la concurrencia es como un conjunto de actividades que se desarrollan de forma simultánea.
  • En informática, cada una de esas actividades se suele llamar proceso.

¿Qué es un sistema concurrente?

  • Es un sistema informático en el que la concurrencia desempeña un papel importante.
  • Ejemplos:  sistemas operativos  sistemas de gestión de bases de datos (DBMS)  sistemas de tiempo real  sistemas distribuidos

Concurrencia inherente o potencial

  • Sistemas inherentemente concurrentes:  el entorno con el que interactúan, o el entorno que modelan tiene forzosamente actividades simultáneas  p.ej. red de cajeros automáticos
  • Sistemas potencialmente concurrentes:  no es estrictamente necesario que haya concurrencia, pero se puede sacar partido de ella  p.ej. para aumentar la velocidad de ejecución

Conclusiones

  • La concurrencia está presente en la Naturaleza y en los sistemas informáticos.
  • El hardware multiprocesador permite realizar más trabajo en menos tiempo.
  • De ahí se derivan dos grandes objetivos:  aprovechar la concurrencia existente en el hardware  facilitar al programador su misión de modelar sistemas concurrentes

Técnicas para producir actividades

concurrentes en el computador

  • De forma manual  Trabajar directamente sobre el hardware  Usar llamadas al sistema o bibliotecas de software (ejs. PVM, pthreads)  Expresarla en un lenguaje de alto nivel
  • De forma automática  El sistema operativo se encarga automáticamente (ej. multiprogramación)  El compilador detecta la concurrencia implícita en nuestros programas secuenciales

Programación concurrente:

definición

  • Conjunto de técnicas y notaciones para expresar el paralelismo potencial de una aplicación, tratando los problemas de sincronización y comunicación entre procesos.
  • La programación concurrente, en sentido

amplio, no trata de la implementación del

paralelismo en el hardware.

Motivación de la programación

concurrente

  • Aprovechar el hardware multiprocesador
  • Aumentar la productividad de la CPU
  • Facilitar la escritura de aplicaciones donde la concurrencia sea un elemento importante

Lenguajes de alto nivel

  • A lo largo de la historia, se han inventado abstracciones en los LAN que han resultado muy útiles para la comunidad informática:  abstracción de expresiones (FORTRAN...)  abstracción del flujo de control: programación estructurada secuencial (Algol...)  abstracción de la lógica y el álgebra (Lisp, Prolog...)  abstracción de datos (Algol, Pascal...)  modelado de objetos (Smalltalk, C++...)  ¿abstracción de la concurrencia?

Lenguajes concurrentes

  • Aquellos que incorporan características que permiten expresar la concurrencia directamente, sin recurrir a servicios del s.o., bibliotecas, etc.
  • Normalmente incluyen mecanismos de sincronización y comunicación entre procesos
  • Ejemplos: Ada, Java, SR, Occam, PARLOG...

Sincronización y comunicación

  • Los procesos concurrentes tendrán necesidad de comunicarse información.
  • Además, será necesario en ocasiones detener a un proceso hasta que se produzca un determinado evento o se den ciertas condiciones  sincronización
  • Los lenguajes concurrentes deben proporcionar mecanismos de sincronización y comunicación.

Mecanismos clásicos de

sincronización

  • Mecanismos de señalización  Semáforos  Cerrojos y variables condición  Señales, eventos  Retardos temporales
  • Recursos compartidos  Regiones críticas  Monitores  Objetos protegidos