Procesos


Administración de procesos y de procesador
2.1 Concepto de proceso
Un proceso no es más que un programa en ejecución, e incluye los valores actuales del contador de programa, los registros y las variables. Conceptualmente cada uno de estos procesos tiene su propia CPU virtual. Desde luego, en la realidad la verdadera CPU conmuta de un proceso a otro.
Un proceso es un concepto manejado por el sistema operativo que consiste en el conjunto formado 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 CPU para dicho programa.
Su memoria de trabajo, es decir, la memoria que ha reservado y sus contenidos.
Otra información que permite al sistema operativo su planificación.
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 destruidos por el sistema operativo, así como también este se debe hacer cargo de la comunicación entre procesos, pero lo hace a petición de otros procesos. El mecanismo por el cual un proceso crea otro proceso se denomina bifurcación (fork). 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.


En este modelo: todo software ejecutable de la computadora, lo que a menudo incluye al sistema operativo, está organizado en una serie del proceso secuenciales, o simplemente procesos.
La idea clava aquí es que un proceso es una actividad de algún tipo: tiene programa, entrada, salida y un estado. Se puede compartir un procesador entre varios procesos, usando algún algoritmo de planificación para determinar cuándo debe de trabajar en un proceso para atender a uno distinto.

Jerarquías de procesos

Los sistemas operativos que manejan el concepto de proceso deben contar con algún mecanismo para crear todos los procesos necesarios. en los sistemas muy sencillos, o en los diseñados para ejecutar solo una aplicación.
En otros sistemas operativos existen llamadas al sistema para crear un proceso, cargar su memoria y ponerlo en ejecutar. Sea cual sea la naturaleza exacta de la llamada al sistema. Los procesos necesitan poder crear otros procesos.

En MINIX, los procesos se crean con la llamada al sistema FORK (bifurcar), que crea una copia idéntica del proceso invocador. El proceso hijo también puede ejecutar FORK, así que es posible tener un árbol de proceso.

2.2 Estados y transiciones de un proceso

Un proceso pasa de un estado a otro desde su creación hasta su destrucción. Los estados por los cuales puede pasar un proceso son los siguientes:

 • Nuevo:
             Cuando el proceso se está creando.
• Ejecución:
             Es cuando se están ejecutando instrucciones.
• Bloqueado:
             Es cuando el proceso está esperando que ocurra un evento.
• Listo:
            Es cuando un proceso está a la espera de ser asignado a un procesador.
• Terminado:
            Es cuando el proceso ha terminado su ejecución.  

Transiciones de un proceso:

Cuando un proceso se crea, pasa a la cola de procesos listos. Se dice que existe una transición de estado
 cuando un proceso cambia de un estado a otro.

Nuevo Listo:
Cuando un proceso se ha creado y se le es permito para competir por la CPU.

Listo En ejecución:
La asignación de la CPU al primer proceso de la lista de listos es llamado despacho y es ejecutado por la entidad de sistema llamada despachador. Mientras que el proceso tenga la CPU se dice que está en ejecución.

En ejecución Listo:
El S.O , cuando un proceso se le expira el intervalo de tiempo asignado para estar en ejecución (CUANTO), hace que este proceso que se hallaba en estado de ejecución pase al estado de listo y inmediatamente el despachador hace que el primer proceso de la lista pase a estado de ejecución.

En ejecución Bloqueado:
Si un proceso que se encuentra en estado de ejecución inicia una operación de E/s antes que termine su cuanto, el proceso voluntariamente abandona la CPU, es decir, el proceso se bloquea a sí mismo.

Bloqueo Listo:
La única transición posible en nuestro modelo básico ocurre cuando acaba una operación de E/S (o alguna otra causa por la que esté esperando el proceso), y esta termina pasa al estado de listo.

En ejecución Terminado:
Esta transición ocurre cuando el proceso se ha terminado de ejecutarse, y pasa a un estado de terminado. 

2.3 Procesos ligeros

Un proceso ligero, o thread, es un programa en ejecución (flujo de ejecución) 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 ejecución, como ocurre en los procesos clasicos, o más de un flujo de ejecución (procesos ligeros).
Desde el punto de vista de la programación, un proceso ligero se define como una función cuya ejecución se puede lanzar en paralelo con otras. El hilo de ejecución primario, o proceso ligero primario, corresponde a la función 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 ejecución, pudiéndose 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 información del mismo. En concreto, comparten:

Espacio de memoria.
Variables globales.
Archivos abiertos.
Procesos hijos.
Temporizadores.
Señales y semáforos.
Contabilidad.
Es importante destacar que todos los procesos ligeros de un mismo proceso comparten el mismo espacio de direcciones de memoria, que incluye el código, los datos y las pilas de los diferentes procesos ligeros. Esto hace que no exista protección 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 esquemática la estructura de un proceso de Windows NT con sus procesos ligeros.
                                   

No hay comentarios:

Publicar un comentario