domingo, 25 de octubre de 2015

2.4 Concurrencia y secuencialidad

La concurrencia comprende un gran número de cuestiones de diseño, incluyendo la comunicación entre procesos, 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 2 o más y llegan al mismo tiempo a ejecutarse.

La concurrencia puede presentarse en tres contextos diferentes: 

  Varias aplicaciones: (multiprogramación) para permitir que el cpu sea compartido entre varios trabajos • Aplicaciones estructuradas: Como ampliación 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 sistemas operativos que están implementados como un conjunto de procesos. 

Tipos de computadora en los que puede haber concurrencia: 

  Multiprogramación con un CPU. El sistema operativo se encarga de repartir el CPU entre los procesos, intercalando su ejecución  para dar una apariencia de ejecución simultánea. 
  Multiprocesador. Máquina formada por más de un CPU que comparten memoria principal. Los procesos no sólo intercalan su ejecución sino también la superponer.
  Multicomputadora. Es una máquina de memoria distribuida formada por una serie de computadoras, es posible la ejecución simultánea de los procesos en los diferentes CPU’s.
La concurrencia será aparente siempre que el número de procesos sea mayor que el de procesadores disponibles y será real cuando haya un proceso por procesador (Paralelismo). 

Pros: 
  Facilita la programación de aplicaciones: permite que se estructuren como un conjunto de procesos que cooperan entre sí para alcanzar un objetivo común.  •Acelera los cálculos: Dividiendo una tarea en varios procesos, ejecutándolos en “paralelo”. 
  Posibilita            el             uso         interactivo            a             múltiples               usuarios                que         trabajan                de              forma    simultánea. • Permite un mejor aprovechamiento de los recursos, en especial del CPU, ya que pueden aprovechar las fases de entrada-salida de unos procesos para realizar las fases de procesamiento de otros. 

Contras: 
  Inanición e interrupción de procesos
  Ocurrencia de bloqueos
  Que 2 o más procesos requieran el mismo recurso 

Tipos de procesos concurrentes:

Proceso independiente: El que se ejecuta sin cooperación de otros. Ejemplo: varias ventanas de una misma aplicación de forma simultánea.
Procesos cooperantes: Los que están diseñados para trabajar conjuntamente, deben  comunicarse e interactuar. (Aplicaciones en red) Tipos de interacción: 
  Motivada porque los procesos comparten o compiten por el acceso a recursos. Ejemplo: dos procesos independientes compiten por el acceso a disco o para modificar una base de datos.  • Motivada porque los procesos se comunican y sincronizan entre sí para alcanzar un objetivo común. Ejemplo: compilador con varios procesos que trabajan conjuntamente para obtener un solo archivo de salida. 

Aspectos de un sistema operativo para  gestionar la concurrencia.
1.        Debe                             seguir     la            pista       de           los           distintos                procesos                activos, por          medio        de           PBC’s
2.        Debe asignar y quitar recursos a cada proceso activo: 
  Tiempo de procesador. 
  Memoria: (virtual, swapping) • Archivos
  E/S: 
3. Debe proteger datos y recursos de cada proceso contra injerencias no intencionadas de otros procesos. 




No hay comentarios.:

Publicar un comentario