2.-Programación multiproceso Flashcards
2.1.- Programación concurrente, paralela y distribuida
Concurrencia. Definición
Propiedad - Sistemas - Ejecutar - Tiempo
La concurrencia es una propiedad que permite que los sistemas puedan ejecutar diferentes procesos en un mismo tiempo.
2.1.- Programación concurrente, paralela y distribuida
Proceso. Definición
Proceso - Instrucciones
Un proceso comprende todas las instrucciones que se llevarán a cabo.
2.1.- Programación concurrente, paralela y distribuida
Programación concurrente. Definición
Programación concurrente - Tareas - Ejecutar
La programación concurrente es la que se encarga de ejecutar las tareas simultáneamente.
2.1.- Programación concurrente, paralela y distribuida
Programación concurrente. Características especiales
Hay que tener en cuenta que toda ejecución simultanea debe tener unas características especiales
Hay que tener en cuenta que toda ejecución simultanea debe tener unas características especiales, como, por ejemplo, la secuencia de ejecución, las comunicaciones entre los procesos y el acceso coordinado a los recursos.
2.1.- Programación concurrente, paralela y distribuida
Programación concurrente. Ventajas
Ventajas de la programación concurrente
Ventajas de la programación concurrente:
* Facilita el diseño orientado a objetos.
* Posibilita la compartición de recursos.
* Facilita la programación de aplicaciones en tiempo real.
* Reduce los tiempos de ejecución.
2.1.- Programación concurrente, paralela y distribuida
Programas. Tipo de instrucciones
Cada programa se compone de diferentes instrucciones que pueden ser ejecutadas o no simultáneamente - Bernstein
Cada programa se compone de diferentes instrucciones que pueden ser ejecutadas o no simultáneamente. Bernstein dividió las instrucciones en dos tipos, dependiendo de la operación realizada sobre ellas: de lectura y de salida.
2.1.- Programación concurrente, paralela y distribuida
Instrucciones concurrentes. Condiciones
Para que dos instrucciones se puedan ejecutar concurrentemente, es necesario que se cumplan estas tres condiciones:
Para que dos instrucciones se puedan ejecutar concurrentemente, es necesario que se cumplan estas tres condiciones:
* L(Si) ∩ E(Sj) = Ø
* E(Si) ∩ L(Sj) = Ø
* E(Si) ∩ E(Sj) = Ø
- L –> Lectura / E –> Escritura
- El conjunto de lectura de una instrucción y el conjunto de lectura de la otra instrucción no pueden solaparse.
- El conjunta de escritura de ambas instruccionesno puede solaparse
2.1.- Programación concurrente, paralela y distribuida
Programación concurrente. Problemas
Problemas de la programación concurrente
Problemas de la programación concurrente:
* Exclusión mutua
* Abrazo mortal
* Inanición
2.1.- Programación concurrente, paralela y distribuida
Programación concurrente. Problemas. Exclusión mutua. Definición
Resultado - Procesos
Es el resultado de que dos procesos intenten acceder a la misma variable.
2.1.- Programación concurrente, paralela y distribuida
Programación concurrente. Problemas. Exclusión mutua. Problema y solución
Inconsistencia - Procesos - Recurso
Esto puede producir inconsistencia, puesto que un proceso puede estar actualizando una variable, mientras que otro proceso está leyendo la misma. Para evitar este problema, en la programación concurrente se utiliza la región crítica, que controla el número de procesos que se encuentra utilizando el recurso.
2.1.- Programación concurrente, paralela y distribuida
Programación concurrente. Problemas. Abrazo mortal. Definición
Procesos - Recursos
Dos procesos se quedan bloqueados porque están esperando a los recursos que tiene el otro proceso. También es denominado DeadLock o interbloqueo.
2.1.- Programación concurrente, paralela y distribuida
Programación concurrente. Problemas. Inanición. Definición
Procesos - Recursos
Un proceso se queda esperando a un recurso compartido, que siempre se le deniega. Sin este recurso el proceso no puede finalizar.
2.2.- Paradigmas de programación paralela y distribuida
Programación paralela. Definción
Tecnica - Programación
Es una técnica de programación en la que muchas instrucciones se ejecutan simultáneamente.
2.2.- Paradigmas de programación paralela y distribuida
Programación paralela. Solución a problemas
Tipo programación - Problemas grandes - Problemas pequeños
Este tipo de programación permite dar solución a problemas de grandes dimensiones, para ello, divide en pequeños problemas uno más grande. Estas partes se pueden resolver de forma paralela, por lo que podrán ser ejecutadas a la vez que otras.
2.2.- Paradigmas de programación paralela y distribuida
Programación paralela. Equipos multiprocesadores
Técnica - Equipos - Tareas
Esta técnica se utiliza en equipos multiprocesadores en los que cada uno de ellos es el encargado de resolver una tarea. Todos los procesos que se encuentran en ejecución deben estar comunicados entre sí.
2.2.- Paradigmas de programación paralela y distribuida
Programación paralela. Ventajas
Ventajas de la programación paralela
Ventajas de la programación paralela:
* Permite la ejecución de tareas de manera simultánea.
* Permite resolver problemas complejos.
* Disminuye el tiempo en ejecución.
2.2.- Paradigmas de programación paralela y distribuida
Programación paralela. Inconvenientes
Inconvenientes de la programación paralela
Inconvenientes de la programación paralela:
* Mayor dificultad en la programación.
* Mayor complejidad en el acceso a los datos.
2.2.- Paradigmas de programación paralela y distribuida
Programación paralela. Modelos. Definición
Mecanismos - Información
Existen diferentes mecanismos de intercambio de información, denominados modelos.
2.2.- Paradigmas de programación paralela y distribuida
Programación paralela. Modelos. Clasificación
Según su forma se pueden clasificar en
Según su forma se pueden clasificar en:
* Modelo de memoria compartida
* Modelo de paso de mensaje
2.2.- Paradigmas de programación paralela y distribuida
Programación paralela. Modelos. Modelo de memoria compartida. Definición
Tipo - Eficaz - Transferencia - Procesos - RAM
Este tipo de memoria permite ser accedida por múltiples programas, por lo que es un modo eficaz de transferencia de datos. Esto se consigue creando un espacio de acceso común por parte de cada uno de los procesos en la memoria RAM.
2.2.- Paradigmas de programación paralela y distribuida
Programación paralela. Modelos. Modelo de memoria compartida. Secciones criticas
Problemas - Punto acceso
Hay que tener en cuenta que uno de los mayores problemas se da cuando existe un punto de acceso en común, como son las secciones críticas.
.
2.2.- Paradigmas de programación paralela y distribuida
Programación paralela. Modelos. Modelo de memoria compartida. Controles
Controles - Punto acceso - Lectura - Escritura
Es necesario establecer una serie de controles dentro de un punto de acceso a datos común, puesto que estos procesos intentarán realizar lectura y escritura de datos a la vez, dando lugar a datos incoherentes.
2.2.- Paradigmas de programación paralela y distribuida
Programación paralela. Modelos. Modelo de memoria compartida. Mecanismos de control
Existen diversos mecanismos de control
Existen diversos mecanismos de control como son: semáforos, tuberías, monitores, etc
2.2.- Paradigmas de programación paralela y distribuida
Programación paralela. Modelos. Modelo de memoria compartida. Operaciones atómicas
Acceso - Hilos - Operaciones - Memoría
Estos permitirán el acceso de los hilos de manera individual, asegurando que las operaciones realizadas son de forma atómica, es decir, hasta que un hilo no termina, otro no puede acceder al mismo espacio de memoria.
2.2.- Paradigmas de programación paralela y distribuida
Programación paralela. Modelos. Modelo de paso de mensaje. Definición
Mecanismo - POO - Proceso - Funciones y Métodos - Petición
Es el mecanismo más utilizado en la programación orientada a objetos. Cada proceso tiene definidas sus funciones y métodos, por lo que cada uno de ellos ejecuta individualmente las tareas y, si necesita datos de otro, realiza una petición de los resultados que necesita al propietario.
2.2.- Paradigmas de programación paralela y distribuida
Programación paralela. Modelos. Modelo de paso de mensaje. Incovenientes
Procesos - Implementar - Mensajes
El principal inconveniente es que todos los procesos deben tener implementados métodos que puedan interpretar este intercambio de mensajes.
2.2.- Paradigmas de programación paralela y distribuida
Programacion distribuida. Definición
Tipo - Técnica - Programacion - Maquinas - Red
Este tipo de técnica de programación permite que un conjunto de máquinas separadas físicamente, que están interconectadas entre sí por una red de comunicaciones
2.2.- Paradigmas de programación paralela y distribuida
Programacion distribuida. Solución a problemas
Cada maquina trabaja como una sola para dar solución a un problema. Cada una procesa de manera independiente una parte del total. Este conjunto de máquinas que operan interconectadas se conoce como grid.
2.2.- Paradigmas de programación paralela y distribuida
Programacion distribuida. Grid. Definición
Maquina - Solución - Proceso - Conjunto
Cada maquina trabaja como una sola para dar solución a un problema. Cada una procesa de manera independiente una parte del total. Este conjunto de máquinas que operan interconectadas se conoce como grid.
2.2.- Paradigmas de programación paralela y distribuida
Programacion distribuida. Computación de altas prestaciones
Programación - Altas prestaciones - Configuración - Escenario
Esta programación se utiliza en la computación de altas prestaciones, en la que las máquinas son configuradas específicamente para cada tipo de escenario y se dan necesidades de computaciones de manera remota.
2.2.- Paradigmas de programación paralela y distribuida
Programacion distribuida. Sistemas cliente-servidor
Enfocada - Sistemas distribuidos - Independiente - Repercute
Está enfocada a sistemas distribuidos cliente-servidor que requieren de escalabilidad y con una gran capacidad de tolerancia a fallos, puesto que cada uno opera de manera independiente y en caso de fallo no repercute en el de los demás.
2.2.- Paradigmas de programación paralela y distribuida
Programacion distribuida. Comunicación máquinas
La comunicación entre estas máquinas se realiza mediante
La comunicación entre estas máquinas se realiza mediante la llamada de procedimientos remotos (RPC), invocación remota de objetos (RMI) y sockets.
2.2.- Paradigmas de programación paralela y distribuida
Programacion distribuida. Carácteristicas
Características de los sistemas distribuidos
Características de los sistemas distribuidos:
* Capacidad de balanceo
* Alta disponibilidad
2.2.- Paradigmas de programación paralela y distribuida
Programacion distribuida. Carácteristicas. Capacidad de balanceo. Definición
Maquina - Recursos - Proceso
Las propias máquinas son capaces de realizar una asignación de recursos concreta para cada proceso, de manera que otro proceso pueda hacer uso de una mayor cantidad de recursos si lo requiere.
2.2.- Paradigmas de programación paralela y distribuida
Programacion distribuida. Carácteristicas. Alta disponibilidad. Definición
Carácteristicas - Programación - Flexibilidad - Fallo
Es una de las características más usadas, que permite a este tipo de programación una flexibilidad enorme, en caso de que haya un fallo automáticamente los servicios son asignados en otros servidores.
2.2.- Paradigmas de programación paralela y distribuida
Programacion distribuida. Nuevas máquinas
De la misma manera que si la previsión de recursos necesarios se queda justa - Automática - Carácteristicas - Procesos
De la misma manera que si la previsión de recursos necesarios se queda justa, es posible que de manera automática se añada una nueva máquina con las mismas características, para poder hacer frente a la computación de distintos procesos.
2.2.- Paradigmas de programación paralela y distribuida
Programacion distribuida. Complejidad
Este tipo de programación también cuenta con algunos inconvenientes - Compejidad - Seguridad
Este tipo de programación también cuenta con algunos inconvenientes como puede ser un aumento de la complejidad, ya que es necesario un determinado tipo de software. Asimismo, se incrementa el riesgo de fallos en la seguridad, como pueden ser los ataques de denegación de servicios con sobrecargas de peticiones remotas al servidor.
2.2.- Paradigmas de programación paralela y distribuida
Programacion distribuida. Ventajas
Ventajas de la programación distribuida
Ventajas de la programación distribuida:
* Permite escalabilidad, capacidad de crecimiento.
* Permite la compartición de recursos y datos.
* Mayor flexibilidad.
* Alta disponibilidad.
2.2.- Paradigmas de programación paralela y distribuida
Programacion distribuida. Inconvenientes
Inconvenientes de la programación distribuida
Inconvenientes de la programación distribuida:
* Pérdida de mensajes.
* Está expuesta a diferentes ataques para vulnerar su seguridad.
2.3.- Estados de un proceso
Proceso. Definición
Conjunto - Instrucciones
Un proceso es un conjunto de instrucciones que se van a ejecutar dentro de la CPU
2.3.- Estados de un proceso
Procesos. Indicador. Definición
Proceso - Estado
Todo proceso está caracterizado por un indicador que define la situación o estado en el que se encuentra
2.3.- Estados de un proceso
Procesos. Estados
Al menos existen tres estados diferentes
Al menos existen tres estados diferentes:
* Activo o en ejecución
* Bloqueado
* Preparado