Social Icons

miércoles, 12 de diciembre de 2012

CONCEPTO DE PROCESO

Un proceso puede informalmente entenderse como un programa en ejecución. Formalmente un proceso es "Una unidad de actividad que se caracteriza por la ejecución de una secuencia de instrucciones, un estado actual, y un conjunto de recursos del sistema asociados".
Para entender lo que es un proceso y la diferencia entre un programa y un proceso, A. S. Tanenbaum propone la analogía "Un científico computacional con mente culinaria hornea un pastel de cumpleaños para su hija; tiene la receta para un pastel de cumpleaños y una cocina bien equipada con todos los ingredientes necesarios, harina, huevo, azúcar, leche, etcétera." Situando cada parte de la analogía se puede decir que la receta representa el programa (el algoritmo), el científico computacional es el procesador y los ingredientes son las entradas del programa. El proceso es la actividad que consiste en que el científico computacional vaya leyendo la receta, obteniendo los ingredientes y horneando el pastel.
Cada proceso tiene su contador de programa, registros y variables, aislados de otros procesos, incluso siendo el mismo programa en ejecución 2 veces. Cuándo este último caso sucede, el sistema operativo usa la misma región de memoria de código, debido a que dicho código no cambiará, a menos que se ejecute una versión distinta del programa.
Los procesos son gestionados por el sistema operativo y están formados por:
  • Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador.
  • Su estado de ejecución en un momento dado, esto es, los valores de los registros de la unidad central de procesamiento para dicho programa.
  • Su memoria de trabajo (memoria crítica), es decir, la memoria que ha reservado y sus contenidos.
  • Otra información que permite al sistema operativo su planificación.
Un proceso se rige en pequeñas porciones, conocidas como páginas, y cada proceso tiene su propia tabla de paginación, fungiendo como una optimización del sistema operativo ante los fallo de página.
Esta definición varía ligeramente en el caso de sistemas operativos multihilo, donde un proceso consta de uno o más hilos, la memoria de trabajo (compartida por todos los hilos) y la información de planificación. Cada hilo consta de instrucciones y estado de ejecución.
Los procesos son creados y eliminados por el sistema operativo, así como también éste se debe hacer cargo de la comunicación entre procesos, pero lo hace a petición de otros procesos (interrupción o tiempo de reloj). El mecanismo por el cual un proceso crea otro proceso se denomina bifurcación (fork). El proceso de arranque de GNU/Linux inicia con un sólo proceso (init) y después comienza a crear los hilos necesarios para tener el sistema listo para su uso. Los nuevos procesos pueden ser independientes y no compartir el espacio de memoria con el proceso que los ha creado o ser creados en el mismo espacio de memoria.
En los sistemas operativos multihilo es posible crear tanto hilos como procesos. La diferencia estriba en que un proceso solamente puede crear hilos para sí mismo y en que dichos hilos comparten toda la memoria reservada para el proceso.
Los procesos pueden ser cooperativos o independientes. Dos o más procesos pueden cooperar mediante señales de forma que uno obliga a detenerse a los otros hasta que reciban una señal para continuar.
  • Se usa una variable de tipo semáforo para sincronizar los procesos.
  • Si un proceso está esperando una señal, se suspende hasta que la señal se envíe.
  • Se mantiene una cola de procesos en espera en el semáforo.
  • La forma de elegir los procesos de la cola en espera es mediante una política first in first out.
La sincronización explícita entre procesos es un caso particular del estado "bloqueado". En este caso, el suceso que permite desbloquear un proceso no es una operación de entrada/salida, sino una señal generada a propósito por el programador desde otro proceso.
Hay cuatro eventos principales que provocan la creación de procesos:
  • El arranque del sistema.
  • La ejecución, desde un proceso, de una llamada al sistema para la creación de otro proceso.
  • Una petición de usuario para crear un proceso.
  • El inicio de un trabajo por lotes.
Los procesos pueden contener uno o más hilos, haciendo más eficiente las tareas, asimismo la complejidad de los algoritmos de sincronización, ya que podría ocurrir la condición de carrera muy a menudo, inclusive los indeseados interbloqueos.



  Estados y transiciones de los procesos
  • Registros generales. De existir registros especificos de coma flotante tambien se incluyen aqui.
  • Contador de programa.  
  • Estados y transiciones de los procesos 
  • Puntero de pila. 
  • Registro o registros de estado.
  • Registros especiales. Como puede ser el RIED (registro identificador de espacio de direccionamiento).
      
    El estado del procesador de un proceso reside en los registros del procesador, cuando el proceso esta en ejecucion, o en el bloque de control de proceso (BCP), cuando el proceso no esta en ejecucion.
    Cuando el proceso esta ejecutando, el estado del procesador varia de acuerdo al flujo de instrucciones maquina ejecutado. En este caso, la copia del estado del procesador que reside en el BCP no esta actualizada. Tengase en cuenta que los registros de la maquina se utilizan para no tener que acceder a la informacion de memoria, dado que es mucho mas lenta. Por tanto, no tiene sentido plantear que, en cada modificacion de un registro, se actualice su valor en el BCP, puesto que esta en memoria.
    Sin embargo, cuando se detiene la ejecucion de un proceso, como consecuencia de la ejecucion de una interrupcion, es muy importante que el sistema operativo actualice la copia del estado del procesador en su BCP. En terminos concretos, la rutina del sistema operativo que trata las Interrupciones lo primero que ha de hacer es salvar el estado del procesador en el BCP del proceso interrumpido.
      
      Procesos ligeros: Hilos o hebras.
     
    Un proceso ligero, o thread, es un programa en ejecucion (flujo de ejecucion) que comparte la imagen de memoria y otras informaciones con otros procesos ligeros. Como muestra la Figura , un proceso puede contener un solo flujo de ejecucion, como ocurre en los procesos clasicos, o mas de un flujo de ejecucion (procesos ligeros).
    Desde el punto de vista de la programacion, un proceso ligero se define como una funcion cuya ejecucion se puede lanzar en paralelo con otras. El hilo de ejecucion primario, o proceso ligero primario, corresponde a la funcion main.
    Cada proceso ligero tiene informaciones que le son propias y que no comparte con otros procesos ligeros. Las informaciones propias se refieren fundamentalmente al contexto de ejecucion, pudiendose destacar las siguientes:
    • Contador de programa.
    • Pila.
    • Registros.
    • Estado del proceso ligero (ejecutando, listo o bloqueado).
    Todos los procesos ligeros de un mismo proceso comparten la informacion del mismo. En concreto, comparten:
    • Espacio de memoria.
    • Variables globales.
    • Archivos abiertos.
    • Procesos hijos.
    • Temporizadores.
    • Senales y semaforos.
    • Contabilidad.
    Es importante destacar que todos los procesos ligeros de un mismo proceso comparten el mismo espacio de direcciones de memoria, que incluye el codigo, los datos y las pilas de los diferentes procesos ligeros. Esto hace que no exista proteccion de memoria entre los procesos ligeros de un mismo proceso, algo que si ocurre con los procesos convencionales.
    El proceso ligero constituye la unidad ejecutable en Windows NT. La Figura representa de forma esquematica la estructura de un proceso de Windows NT con sus procesos ligeros. 
      Concurrencia y secuenciabilidad.
    Los procesos son concurrentes si existen simultaneamente. Los procesos concurrentes pueden funcionar en forma totalmente independiente unos de otros, o pueden ser asincronos, lo cual significa que en ocasiones requieren cierta sincronizacion o cooperacion. 
    Cuando dos o mas procesos llegan al mismo tiempo a ejecutarse, se dice que se ha presentado una concurrencia de procesos. Es importante mencionar que para que dos o mas procesos sean concurrentes , es necesario que tengan alguna relacion entre ellos como puede ser la cooperacion para un determinado trabajo o el uso de informacion o recursos compartidos, por ejemplo: en un sistema de un procesador , la multiprogramacion es una condicion necesaria pero no suficiente para que exista concurrencia, ya que los procesos pueden ejecutarse de forma totalmente independiente.
    Por otro lado en un sistema de varios procesos se puede presentar la concurrencia siempre y cuando las actividades necesiten actuar entre si ya sea para utilizar informacion en comun o para cualquier otra cosa.

    Existen tres formas modelos de computadora en los que se puede pueden ejecutar procesos concurrentes:
    Multiprogramacion con un unico procesador.
    En este modelo todos los procesos concurrentes ejecutan sobre un unico procesador. El sistema operativo se encarga de ir repartiendo el tiempo del procesador entre los distintos procesos, intercalando la ejecucion de los mismos para dar asi una apariencia de ejecucion simultanea.
    Multiprocesador.
    Un multiprocesador es una maquina formada por un conjunto de procesadores que comparten memoria principal. En este tipo de arquitecturas, los procesos concurrentes no solo pueden intercalar su ejecucion sino tambien superponerla. En este caso si existe una verdadera ejecucion simultanea de procesos, al coincidir las fases de procesamiento de distintos procesos. En un instante dado se pueden ejecutar de forma simultanea tantos procesos como procesadores haya.
    Multicomputadora.
    Una multicomputadora es una maquina de memoria distribuida, en contraposicion con el multiprocesador que es de memoria compartida. Esta formada por una serie de computadoras completas con su UCP, memoria principal y, en su caso, periferia. Cada uno de estos procesadores completo se denomina nodo. Los nodos se encuentran conectados y se comunican entre si a traves de una red de interconexion, empleando el metodo de paso de mensajes. En este tipo de arquitecturas tambien es posible la ejecucion simultanea de los procesos sobre los distintos procesadores.
    En general la concurrencia sera aparente siempre que el numero de procesos sea mayor que el de procesadores disponibles, es decir, cuando haya mas de un proceso por procesador. La concurrencia sera real cuando haya un proceso por procesador
     
Como se indico anteriormente, el proceso es la unidad de procesamiento gestionada por el sistema operativo. Para poder realizar este cometido, el proceso tiene asociado una serie de elementos de informacion,que se analizan seguidamente. Estos elementos se organizan en tres grupos: estado del procesador, imagen de memoria y tablas del sistema operativo.
Estado del procesador
El estado del procesador esta formado por el contenido de todos sus registros, que se enumeran seguidamente:

No hay comentarios:

Publicar un comentario

 

Sample text

Sample Text

Sample Text