Concurrencia y Secuencialidad
-
Upload
erick-velasco -
Category
Documents
-
view
916 -
download
3
Transcript of Concurrencia y Secuencialidad
SISTEMAS
OPERATIVOS
INTEGRANTES
Hurtado Durand Génesis Alexandra
Alemán Jiménez José
Damián Ortega Mayra Yadira
Rojas Torres Neyfi
Morales Salgado Guillermo
CONCURRENCIA Y
SECUENCIABILIDAD
Introducción La concurrencia es la simultaneidad en la ejecución
de múltiples tareas interactivas. Estas tareas pueden
ser un conjunto de procesos o hilos de
ejecución creados por un único programa. Las tareas
se pueden ejecutar en una sola unidad central de
proceso (multiprogramación), en varios
procesadores o en una red de computadores
distribuidos. 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.
La concurrencia comprende un gran número de cuestiones de diseño, incluyendo la comunicación entre procesos, comparación y competencia por los recursos, sincronización de la ejecución de varios procesos y asignación del tiempo de procesador a los procesos y es fundamental para que existan diseños como Multiprogramación, Multiproceso y Proceso
distribuido.
Los procesos son concurrentes si existen simultáneamente. Cuando dos o más procesos llegan al mismo tiempo a ejecutarse, se dice que se ha presentado una concurrencia de procesos. Es importante mencionar que para que dos o más procesos sean concurrentes, es necesario que tengan alguna relación entre ellos.
La concurrencia puede presentarse en tres contextos diferentes:
• Varias aplicaciones: La multiprogramación se creó para permitir que el tiempo de procesador de la máquina fuese compartido dinámicamente entre varios trabajos o aplicaciones activas.
• Aplicaciones estructuradas: Como ampliación de los principios del diseño modular y la programación estructurada, algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos concurrentes.
• Estructura del sistema operativo: Las mismas ventajas de estructuración son aplicables a los programadores de sistemas y se ha comprobado que algunos sistemas operativos están implementados como un conjunto de procesos.
Existen tres modelos de computadora en los que se pueden ejecutar procesos concurrentes:
• Multiprogramación con un único procesador. El sistema operativo se encarga de ir repartiendo el tiempo del procesador entre los distintos procesos, intercalando la ejecución de los mismos para dar así una apariencia de ejecución simultánea.
• Multiprocesador. Es una maquina formada por un conjunto de procesadores que comparten memoria principal. En este tipo de arquitecturas, los procesos concurrentes no sólo pueden intercalar su ejecución sino también superponerla.
• Multicomputadora. Es una maquina de memoria distribuida, que está formada por una serie de computadoras. En este tipo de arquitecturas también es posible la ejecución simultánea de los procesos sobre los diferentes procesadores.
Existen diversas razones que motivan la ejecución de procesos concurrentes en un sistema: • Facilita la programación de aplicaciones al permitir que éstas se estructuren como un conjunto de procesos que cooperan entre sí para alcanzar un objetivo común. • Acelera los cálculos. Si se quiere que una tarea se ejecute con mayor rapidez, lo que se puede hacer es dividirla en procesos, cada uno de los cuales se ejecuta en paralelo con los demás. • Posibilita el uso interactivo a múltiples usuarios que trabajan de forma simultánea. • Permite un mejor aprovechamiento de los recursos, en especial de la CPU, ya que pueden aprovechar las fases de entrada-salida de unos procesos para realizar las fases de procesamiento de otros.
Así como existen las razones que motivan la ejecución de procesos concurrentes, también existen sus contras:
• Inanición e interrupción de procesos • Ocurrencia de bloqueos • Que dos o mas procesos requieran el mismo recurso (No apropiativo)
PROGRAMAS
CONCURRENTES. • Son programas que tienen múltiples líneas de flujo de control.
• • Las sentencias de un programa concurrente se ejecutan de
• acuerdo con un orden no estricto.
• • La secuencialización de un programa concurrente es entre
• hitos o puntos de sincronización.
• • Un programa concurrente se suele concebir como un conjunto
• de procesos que colaboran y compiten entre sí.
• • Para validar un programa concurrente:
• Las operaciones se pueden validar individualmente si las variables no
• son actualizadas concurrentemente.
• El resultado debe ser independiente de los tiempos de ejecución de las
• sentencias.
• El resultado debe ser independiente de la plataforma en que se ejecuta.
PROGRAMAS
SECUENCIALES. • Es el estilo de programación que corresponde al modelo
• conceptual de Von Newmann.
• • Un programa secuencial tiene una línea simple de control de
• flujo.
• • Las operaciones de un programa secuencial están ordenadas
• de acuerdo con un orden estricto.
• • El comportamiento de un programa es solo función de las
• sentencias que lo componen y del orden en que se ejecutan.
• • El tiempo que tarda en ejecutarse cada operación no influye
• en el resultado de un programa secuencial.
• • La verificación de un programa secuencial es sencilla:
• Cada sentencia da la respuesta correcta.
• Las sentencias se ejecutan en el orden adecuado.
APLICACIONES DE LOS
PROGRAMAS CONCURRENTES • Aplicaciones clásicas:
• Programación de sistemas multicomputadores.
• Sistemas operativos.
• Control y monitorización de sistemas físicos.
• • Aplicaciones actuales:
• Servicios WEB.
• Sistemas multimedia.
• Cálculo numérico.
• Procesamientos entrada/salida.
• Simulación de sistemas dinámicos.
• Interacción operador/máquina (GUIs)
• Tecnologías de componentes.
• Código móvil.
• Sistemas embebidos.
TIPOS DE PROCESOS
CONCURRENTES
La computación distribuida supone el uso de programación concurrente, que consiste en la ejecución simultanea de procesos.
Hay tres tipos:
• Procesos concurrentes ejecutados en múltiples computadoras.
• Procesos concurrentes ejecutados en una sola computadora.
• Programación concurrente dentro de un proceso.
Procesos concurrentes ejecutados en múltiples computadoras
• Son procesos separados ejecutándose concurrentemente en computadoras independientes interconectados a través de una red.
• Interactúan con otros procesos mediante el intercambio de datos sobre la red, pero su ejecución es completamente independiente.
Procesos concurrentes ejecutados en una sola computadora.
• La concurrencia puede ser real o virtual.
• La concurrencia multitarea solo es posible si el computador tiene múltiples CPU, de manera que cada CPU pueda ejecutar un proceso.
• Se utiliza tiempo compartido, lo que permite que los procesos puedan ejecutarse por turnos, creando una ilusión que se ejecutan en paralelo.
Programación concurrente dentro de un proceso
La programación concurrente dentro de un proceso se lleva a cabo a través de dos tipos de herramientas, proporcionadas por el sistema operativo.
• Procesos padres e hijos
• Threads o hilos
Procesos padres e hijos
En tiempo de ejecución, un proceso puede crear procesos subordinados o procesos hijos. A través de la multitarea real o virtual, el proceso original, denominado proceso padre, continua ejecutándose simultáneamente con el proceso hijo. Un proceso hijo es un proceso completo que cosiste en un programa en ejecución, con valores propios, información de estado, que hereda del proceso padre.
Threads o hilos
En ves de procesos hijos, también son conocidos como procesos ligeros.
Los hilos poseen una mínima información de estado, comportándose por lo demás de la misma forma que los procesos.
CONCLUSIÓN la concurrencia será aparente siempre que el número de procesos sea mayor que el de procesadores disponibles, es decir, cuando haya más de un proceso por procesador. La concurrencia será real cuando haya un proceso por procesador. Aunque puede parecer que la intercalación y la superposición de la ejecución de procesos presentan formas de ejecución distintas, se verá que ambas pueden contemplase como ejemplos de procesos concurrentes