lunes, 25 de septiembre de 2017

Concurrencia y secuencialidad

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.
Imagen relacionada
 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