Concurrencia y secuencialidad en sistemas operativos
Concurrencia
Los procesos son concurrentes si existen simultáneamente. La concurrencia comprende un gran número de
cuestiones de diseño, incluyendo la comunicación entre procesos,
comparició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. 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.

En un sistema monoprocesador, la
existencia de multiprogramación es condición necesaria, pero no
suficiente para que exista concurrencia, ya que los procesos pueden
ejecutarse independientemente. Por ejemplo, un editor y un compilador
pueden estar ejecutándose simultáneamente en una computadora sin que
exista concurrencia entre ellos. Por otro lado si un programa se está
ejecutando y se encuentra grabando datos en un archivo, y otro programa
también en ejecución está leyendo datos de ese mismo archivo, sí existe
concurrencia entre ellos, pues el funcionamiento de uno interfiere en el
funcionamiento de otro.
Los
procesos del sistema pueden ejecutarse concurrentemente, puede haber
múltiples tareas en el CPU con varios procesos. Existen varias razones
para permitir la ejecución concurrente:
* Compartir recursos físicos.
Ya
que los recursos del hardware de la computadora son limitados, nos
podemos ver obligados a compartirlos en un entorno multiusuario.
* Compartir recursos lógicos.
Puesto que varios usuarios
pueden interesarse en el mismo elemento de información (por ejemplo un
archivo compartido), debemos proporcionar un entorno que permita el
acceso concurrente a estos tipos de recursos.
* Acelerar los cálculos.
Si
queremos que una tarea se ejecute con mayor rapidez, debemos dividirla
en subtareas, cada una de las cuales se ejecutara, en paralelo con las
demás.
* Modularidad.
Podremos construir el sistema en forma modular, dividiendo las funciones del sistema en procesos separados.
* Comodidad.
Un usuario puede tener que ejecutar varias tareas a la vez, por ejemplo puede editar, imprimir y compilar en paralelo.
La
ejecución concurrente que requiere la cooperación entre procesosnecesita un mecanismo para la sincronización y comunicación de procesos, xclusión mutua y sincronización, pueden ser señales,tuberías, semáforos, mutex y variables condicionales o paso de mensajes.
Secuencialidad
Según la forma de realizar el elemento de memoria nos podemos encontrar
distintos tipos de sistemas secuenciales, principalmente dos:
- Sistemas Secuenciales Síncronos, en los que su comportamiento puede definirse en instantes de discretos de tiempo, se necesita una sincronización de los elementos del sistema mediante una señal de reloj, que no es más que un tren de pulsos periódico. Las variables internas no cambian hasta que no llega un pulso del reloj.
- Sistemas Secuenciales Asíncronos, actúan de forma continua en el tiempo, un cambio de las entradas provoca cambios en las variables internas sin esperar a la intervención de un reloj. Son sistemas más difíciles de diseñar.
El cambio de las variables internas se puede producir de dos maneras en un sistema secuencial síncrono:
- Por niveles, cuando permiten que las variables de entrada actúen sobre el sistema en el instante en el que la señal de reloj toma un determinado nivel lógico (0 ó 1).
- Por flancos, o cambios de nivel, cuando la acción de las variables de entrada sobre el sistema se produce cuando ocurre un flanco activo del reloj. Este flanco activo puede ser de subida (cambio de 0 a 1) o de bajada (cambio de 1 a 0).
http://florysel.blogspot.mx/2012/11/24-concurrencia-y-secuenciabilidad.html
mitecnologico.com/Main/ConcurrenciaYSecuenciabilidad
https://sites.google.com/site/materiasisoperativo/unidad-2-administrador-del-proceso-y-del-procesador/2-4-concurrencia-y-secuenciabilidad
No hay comentarios:
Publicar un comentario