Concurrencia y Secuencialidad

SISTEMAS OPERATIVOS INTEGRANTES Hurtado Durand Génesis Alexandra Alemán Jiménez José Damián Ortega Mayra Yadira Rojas

Views 201 Downloads 1 File size 387KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

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