Proceso, Procesamiento concurrente y Procesamiento paralelo - ALIPSO.COM: Monografías, resúmenes, biografias y tesis gratis.
Aprende sobre marketing online, desarrollo de sitios web gratis en Youtube
Suscribite para recibir notificaciones de nuevos videos:
Sábado 20 de Abril de 2024 |
 

Proceso, Procesamiento concurrente y Procesamiento paralelo

Imprimir Recomendar a un amigo Recordarme el recurso

Agregado: 12 de ABRIL de 2000 (Por ) | Palabras: 2187 | Votar |
2 votos | Promedio: 10
| Sin comentarios | Agregar Comentario
Categoría: Apuntes y Monografías > Computación > Varios >
Material educativo de Alipso relacionado con Proceso Procesamiento concurrente Procesamiento paralelo
  • Planificación de Procesos, sincronización, monitores.: Administración del procesador, planificación de multiprocesadores. Concurrencia de procesos: exclusión mutua y sincronización.
  • Proceso penal: designacion de codefensor.:
  • Proceso penal: pide cese de prision.:

  • Enlaces externos relacionados con Proceso Procesamiento concurrente Procesamiento paralelo

    2.- Administración de Procesos

    Los conceptos de Proceso, Procesamiento concurrente y Procesamiento paralelo son fundamentales para el entendimiento y comprensión de los sistemas operativos modernos. Un proceso es una abstracción de un programa en ejecución y es la unidad de trabajo del sistema. El sistema, a su vez, está formado por un conjunto de procesos que se ejecutan concurrentemente, y básicamente el sistema maneja tanto procesos del sistema operativo (aquellos que ejecutan código del sistema), como procesos de los usuarios (aquellos que ejecutan el código de los usuarios). En este capítulo hablaremos del concepto de proceso como modelo e identificaremos los estados posibles en que éste se puede encontrar.

    Otro de los conceptos importantes de los sistemas operativos modernos, está muy relacionado con el concepto de proceso, este concepto se le conoce como Hebra de control o bien Proceso Liviano. Este concepto ha surgido en los últimos años, y viene incorporado en algunos sistemas , en su núcleo o bien son paquetes que se montan en modo usuario.

    Además, este capítulo contempla la exposición de varios métodos que se utilizan para la administración de procesos, planificación de la CPU, la comunicación y siscronización de procesos.

    2.1.- Conceptos fundamentales

    El primer concepto que analizaremos en esta sección corresponde a proceso, que es la base para entender muchos otros conceptos que se manejan en el sistema operativo.

    Proceso

    Como ya se mencionó en el capítulo anterior, un proceso es una abstracción de un programa en ejecución, compuesto por el código ejecutable, una sección de datos que contiene las variables globales, una sección de stack o pila que contiene datos temporales, tales como parámetros de subrutinas, direcciones de retornos y variables temporales; y el estado de los registros del procesador. El programa corresponde a una entidad pasiva, en cambio el proceso corresponde a una entidad activa.

    Hablando de los recursos que utilizan ambos conceptos, podemos decir, que el programa utiliza únicamente memoria secundaria, em cambio el proceso utiliza memoria principal y procesador.

    En la siguiente figura se aprecian ambos conceptos.

    En los sistemas multiprogramados, de tiempo compartido que operan sobre un computador con un procesador se produce el fenómeno denominado Procesamiento concurrente. Este fenómeno, consiste en que la CPU alterna la ejecución de los procesos en porciones fijas de tiempo, este fenómeno se le conoce como Seudoparalelismo, en el sentido que ante los ojos de los usuarios dueños de los procesos, la ejecución de sus procesos es paralela; esta ilusión es producto de que el tiempo fijo que asigna el sistema a cada uno de los procesos es muy pequeño, y por lo tanto difícil de ser percibido por el hombre. Cuando el sistema computacional está provisto de varios procesadores, entonces él puede realizar lo que se denomina Procesamiento paralelo, esto implica que los procesos pueden ser ejecutados efectivamente en distintos procesadores en forma paralela.

    concurrenia:

    La alternanacia de los procesos en el sistema es regulada por el administrador de procesos y obedece a un algoritmo de planificación.

    Estados de procesos

    Dado que en un sistema de tiempo compartido coexisten en forma concurrente un conjunto de procesos en el sistema, en donde se incluyen procesos del sistema y procesos de los usuarios. Esta concurrencia produce que los procesos se puedan encontrar en diferentes estados, ya que por ejemplo, en un momento dado solo un proceso puede estar en ejecución. A continuación se presenta una figura que refleja la relación entre los distintos estados posibles que puede presentar un proceso.

    Los tres estados básicos son:

    1. En ejecución: Proceso esta utilizando la CPU, las instrucciones se están ejecutando.
    2. Listo: Proceso está en condiciones de ejecutarse, pero esta esperando que se le asigne tiempo de CPU.
    3. Bloqueado: Proceso está esperando que ocurra un evento externo ( como la terminación de una E/S).

    Los procesos pueden tomar cualquiera de los estados mencionados y la transición entre uno y otro estado tiene su explicación. Las siguientes son las transiciones posibles:

    1. Ejecución - Bloqueado: Un proceso pasa de ejecución a bloqueado cuando ejecuta una instrucción que implica la espera de un evento, por ejemplo debe esperar que ocurra efectivamnete la E/S, espera por la activación de un semáforo, etc.
    2. Ejecución - Listo: Un proceso pasa de ejecución a listo, cuando se le acaba el tiempo asignado por el planificador de procesos del sistema, en este momento el sistema debe asignar el procesador a otro proceso.
    3. Listo - Ejecución: Un proceso pasa de listo a ejecución cuando el sistema le otorga un tiempo de CPU.
    4. Bloqueado - Listo: Un proceso pasa de bloqueado a listo cuando el evento externo que esperaba sucede.

    Tabla de Procesos

    Para manejar la información de todos los procesos, el sistema operativo maneja una tabla de procesos, la que contiene una entrada por la información de cada proceso, a cada una de estas entradas en la tabla de procesos se le conoce con el nombre de PCB (Process Control Block). Por lo general esta estructura posee diversa información asociada al proceso, en general esta información incluye:

    • Estado del proceso: El estado puede ser en ejecución, listo o bloqueado.
    • Contador de programas: El PC contiene la dirección de la siguiente instrucción a ejecutar por el proceso.
    • Información de planificación: Esta información incluye prioridad del proceso, apuntadores a colas de planificación, etc.
    • Información contable: Esta información incluye cantidad de tiempo de CPU asignado, hora de inicio del proceso, etc.
    • Información de planificación de memoria: Esta información incluye información de registros límites de acceso, punteros a segmentos de datos, códigos, etc.
    • Información del Sistema de archivos: Esta información incluye protecciones, identificación de usuario, grupo, etc.
    • Información del estado de E/S: Esta información incluye, solicitudes pendientes de E/S, dispositivos de E/S asignados al proceso,etc.

    Cambio de Contexto

    Otro concepto muy importante que incluye el concepto de proceso, es el denominado cambio de contexto. Este concepto esta directamente relacionado con la idea de los sistemas de tiempo compartido. En un sistema de tiempo compartido, existen muchos procesos ejecutándose concurrentemente, el sistema se encarga de asignar a cada uno de los procesos un tiempo fijo de ejecución, cuando el proceso no termina de ejecutarse en ese tiempo el sistema debe guardar la información que le corresponde a dicho proceso para poder recuperarla posteriormente cuando le asigne otra cantidad de tiempo de ejecución.

    Se denomina conmutación de contexto al mecanismo mediante el cual el sistema almacena la información del proceso que se está ejecutando y recupera la información del proceso que ejecutará enseguida. A continuación se presenta un esquema explicativo de este mecanismo.

    Jerarquía de Procesos

    El diseño y funcionamiento de un sistema operativo que maneje el concepto de proceso debe ser flexible y ofrecer capacidades a los programadores. En este sentido, debe proveer los mecanismos mediante los cuales los programadores puedan crear aplicaciones en donde puedan trabajar con más de un proceso. Para lograr esto, el sistema operativo proporciona llamados a sistema mediante los cuales los programadores pueden crear o destruir procesos.

    Particularmente, el sistema operativo UNIX proporciona la llamada a sistema fork(), la cual permite crear un proceso, que se ejecuta concurrentemente con el proceso que lo creó. Cuando un proceso crea a otro, al proceso creado se le denomina proceso hijo y al proceso que creó, se le denomina proceso padre. El nuevo proceso hijo tambien puede crear otros procesos. De esta manera es posible tener una jerarquía de procesos en donde se tienen (entre comillas), procesos abuelos, procesos padres y procesos hijos; o alguna jerarquía de mayor anidación.

    EL sistema Unix, proporciona varias llamadas a sistema que le permite a los programadores desarrollar aplicaciones que manejen varios procesos. La llamada fork(), crea un proceso hijo, copiando toda la caracterización del proceso padre en el hijo (en otro espacio de dirección), es decir, el hijo resulta ser una copia del padre, con el mismo código, datos, pila y conjunto de registros.

    Cuando se ejecuta el fork() retorna el valor 0 para el hijo y un valor mayor que cero para el padre, este valor corresponde al identificador del proceso (pid) hijo.

    Una vez que el proceso hijo es creado, tanto el padre como el hijo comienzan a ejecutarse en forma concurrente. Luego si alguno de estos procesos modifica sus respectivos datos, estos cambios no son reflejados en el otro proceso. Sin embargo, los recursos obtenidos por el padre son heredados al hijo, así por ejemplo, si el padre antes de crear al hijo tenía un archivo abierto, éste permanecerá abierto en el hijo.

    Si el proceso padre desea cambiar la imagen del proceso hijo, es decir, quiere asignarle otra tarea, entonces debe ejecutar otra llamada a sistema que le permita hacerlo. Esto es posible mediante la llamada exec y sus variantes.

    Hay un punto importante en la relación de procesos padres e hijos. El proceso padre no debe terminar antes que cualquiera de sus hijos, si esto sucede, entonces los procesos hijos quedan huérfanos (defunct o zombie). Este tipo de proceso no es posible de eliminar el sistema, sólo se pueden matar bajando el sistema. Existe otras llamadas a sistema que les permite a los procesos padres esperar por la muerte de sus hijos: wait, wait3 y waitpid. Por otro lado, cada hijo le avisa a su padre cuando termina a través de una llamada a sistema exit.

    Tambien en Unix es frecuente encontrar procesos denominados demonios (daemon), los cuales se ejecutan cuando el sistema parte y se ejecutan en forma asíncrona, permanecen en estado bloqueado esperando por la ocurrencia de un evento, por tiempo (cron), por la llegada o salida de mensajes, por trabajos para imprimir, etc.

    Desde el punto de vista de procesos padres y procesos hijos, el intérprete de comados, Shell, es un programa que cuando se ejecuta proporciona un interfaz mediante la cual los usuarios pueden interactuar con el. Cuando un usuario utiliza el comando cp para copiar archivos, la shell crea un proceso hijo y le asigna la tarea de copiar, así si el usuario le especificó que se ejcutara en background entonces tanto el proceso padre (shell) como el hijo (cp) se ejecutan concurrentemente, si no se le indica ejecución background entonces el proceso shell espera a que el proceso cp termine.

    Dado que los procesos poseen espacios de dirección independientes si se desean comunicar deben hacerlo a través de algún mecanismo, como los tubos (pipes), señales (Signal), memoria compartida, colas de mensajes, socket , etc.

    Hebras de Control

    Como se mencionó anteriormente un proceso consta básicamente de una parte estática (código y datos), y una parte dinámica formada por el estado del conjunto de registros y la pila asociados al tiempo de ejecución. Tradicionalmente un proceso tiene una hebra de control, sin embargo es posible asociarle a un proceso más de una hebra. La hebras pertenecientes a un mismo proceso se pueden comunicar a través de la sección de datos que almacena las variables globales.

    Dado que las hebras pertenecen a un mismo proceso, se dice que ellas comparten el mismo espacio de dirección a través del cual se pueden comunicar. Este tipo de mecanismo proporciona una concurrencia a nivel de proceso, que permite realizarla con menos costo asociado al sistema.

    Las hebras de control, pueden ser apoyadas por el núcleo (como en el sistema operativo Match o en Solaris), en este caso el sistema operativo proporciona llamadas a sistema que permiten ser utilizadas por los programadores. O bien pueden ser apoyadas en modo usuario, através de un conjunto de llamadas de biblioteca (como en el sistema Linux).

    A continuación se presenta una figura que ilustra los conceptos de proceso y de hebra de control:

    En cuanto a los recursos que utilizan las hebras respecto a los procesos a continuación se presenta la siguiente tabla:

    Elementos por Hebra

    Elementos por Proceso

     

    PC

    Espacio de Dirección

     

    Pila

    Datos (Variables globales)

     

    Cjto de Registros

    Archivos Abiertos

     

    Estado

    Procesos Hijos

     

    Hebras de los hijos

    Semáforos

     

    L

     

    Señales

    La utilización de las Hebras se incluye en variados modelos de coperación. Entre los modelos mas utilizados se encuentran:

    • Modelo Servidor/Trabajador. Este consiste en que el servidor es el encargado de analizar los requerimientos y elige a un trabajador para que realice la tarea.
    • Modelo Equipo. Este consiste en que existe un conjunto de hebras iguales, donde cada una obtiene y procesa sus propias solicitudes, no hay servidor. En este caso, se puede utilizar una cola de trabajo, la cual contiene todos los trabajos pendientes. Con este esquema cada hebra debe verificar primero la cola de trabajo, antes de ver los requerimientos actuales.
    • Modelo Pipeline. En este caso se tiene una coperación directa entre las hebras. Primero una hebra procesa ciertos datos que luego proporciona a la siguiente hebra que los requiere, esta siguiente hebra tambien procesará datos que luego pasará a una siguiente hebra.

    A continuación se presenta un esquema de estos 3 modelos:

    Con respecto a la implementación de hebras, actualmente se encuentran dos tipos:

    • Implementación como biblioteca. En este caso las hebras se implementan en modo usuario. Ejemplo, Pthreads de Linux
    • Implementación en el núcleo. En este caso la implementación opera en modo supervisor. Ejemplo, Hebras de Solaris.

    Cecilia Hernández Rivas (chernand @inf )

    Programa Curso

    Votar

    Ingresar una calificación para del 1 al 10, siendo 10 el máximo puntaje.

    Para que la votación no tenga fraude, solo se podrá votar una vez este recurso.

    Comentarios de los usuarios


    Agregar un comentario:


    Nombre y apellido:

    E-Mail:

    Asunto:

    Opinión:



    Aún no hay comentarios para este recurso.
     
    Sobre ALIPSO.COM

    Monografias, Exámenes, Universidades, Terciarios, Carreras, Cursos, Donde Estudiar, Que Estudiar y más: Desde 1999 brindamos a los estudiantes y docentes un lugar para publicar contenido educativo y nutrirse del conocimiento.

    Contacto »
    Contacto

    Teléfono: +54 (011) 3535-7242
    Email:

    Formulario de Contacto Online »