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