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:
![*](file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image001.gif)
![*](file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image001.gif)
![*](file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image001.gif)
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.
Estados de procesos
El estado de un proceso define su actividad actual.
Durante su existencia, un proceso pasa por una serie de estados discretos.
Estos estados son se muestran en el siguiente diagrama:
Estos elementos se organizan en
tres grupos: estado del procesador, imagen de memoria y tablas del sistema
operativo.
El estado del procesador está formado por el contenido de todos sus
registros, que se enumeran seguidamente:
- Registros generales. De existir registros específicos de coma flotante también se incluyen aquí.
- Contador de programa.
Información del proceso
- 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 está en ejecución, o en el bloque de control de
proceso (BCP), cuando el proceso no está en ejecución.
Cuando el proceso está ejecutando, el estado del procesador varía de
acuerdo al flujo de instrucciones maquina ejecutado. En este caso, la copia del
estado del procesador que reside en el BCP no está actualizada. Téngase en
cuenta que los registros de la maquina se utilizan para no tener que acceder a
la información de memoria, dado que es mucho más lenta. Por tanto, no tiene
sentido plantear que, en cada modificación de un registro, se actualice su
valor en el BCP, puesto que está en memoria.
Sin embargo, cuando se detiene la
ejecución de un proceso, como consecuencia de la ejecución de una interrupción,
es muy importante que el sistema operativo actualice la copia del estado del
procesador en su BCP. En términos 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.
Se describe cada uno de estos procesos:
Estado
|
Descripción
|
Nuevo
|
Se dice que un proceso está en estado de nuevo
cuando apenas se encuentra en proceso de crearse.
|
Listo
|
Un proceso está en estado de listo, cuando podría
usar una UCP, si hubiera una disponible.
|
En ejecución
|
Se dice que un proceso está estado de ejecución,
si en ese momento tiene está ocupando la CPU.
|
Bloqueado
|
Se dice que un proceso está en estado de
bloqueado, si espera que ocurra algo, como por ejemplo, la terminación de una
E/S, para así poder ponerse en marcha.
|
Terminado
|
Cuando un proceso se ha completado su ejecución
pasa a ser un proceso terminado.
|
Transiciones de estados
Cuando un trabajo es admitido se crea un proceso equivalente, y es
insertado en la última parte de la cola de listos. Cuando un proceso pasa de un
estado a otro se dice que hace una transición de estado, estas transiciones se
describen:
Transición
|
Descripción
|
Admitido(Proceso):Nuevo Listo
|
Cuando un proceso se ha creado y se le es permito
para competir por la CPU.
|
Despacho(Proceso):Listo En ejecución
|
La asignación de la CPU al primer proceso de la
lista de listos es llamada 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.
|
Tiempo excedido(Proceso):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 e
inmediatamente el despachador hace que el primer proceso de la lista pase a
estado de ejecución.
|
Bloqueo(Proceso):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.
|
Despertar(Proceso):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.
|
Salir(Proceso):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 (HILOS O HEBRAS)
|
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
clásicos, 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:
Todos los procesos ligeros de un mismo proceso
comparten la información del mismo. En concreto, comparten:
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.
Proceso ligero
El concepto de proceso engloba dos
conceptos separados y potencialmente independientes: uno relativo a la propiedad
de recursos y otro que hace referencia a la ejecución.
Unidad que posee recursos: A un
proceso se le asigna un espacio de memoria y, de tanto en tanto, se le puede
asignar otros recursos como dispositivos de E/S o ficheros. Unidad a la que
se le asigna el procesador: Un proceso es un flujo de ejecución (una traza) a
través de uno o más programas. Esta ejecución se entremezcla con la de otros
procesos. De tal forma, que un proceso tiene un estado (en ejecución, listo,
etc.) y una prioridad de expedición u origen. La unidad planificada y
expedida por el sistema operativo es el proceso.
Dentro de un proceso puede
haber uno o más hilos de control cada uno con:
![]() ![]() ![]() ![]() ![]()
CARACTERISTICAS
Se comparten recursos. La
compartición de la memoria permite a las hebras pares comunicarse sin usar
ningún mecanismo de comunicación inter-proceso del SO. La conmutación de
contexto es más rápida gracias al extenso compartir de recursos No hay
protección entre las hebras. Una hebra puede escribir en la pila de otra
hebra del mismo proceso Estado de los procesos ligeros.
|
No hay comentarios.:
Publicar un comentario