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