2.2 Estados y transiciones de los procesos
Un proceso
puede estar en cualquiera de los siguientes tres estados: Listo, En ejecución y
Bloqueado.
Los
procesos en el estado listo son los que pueden pasar a estado de ejecución si
el planificador los selecciona. Los procesos en el estado ejecución son los que
se están ejecutando en el procesador en ese momento dado. Los procesos que se
encuentran en estado bloqueado están esperando la respuesta de algún otro
proceso para poder continuar con su ejecución. Por ejemplo operación de E/S.
Un proceso
puede variar entre 5 distintos estados:New: cuando el proceso esta siendo creado.
Running: cuando el proceso se esta ejecutando.
Waiting: cuando el proceso esta esperando que se cumpla algún otro evento.
Ready: cuando el proceso esta pronto para ejecutar, esperando por la CPU.
Terminated: cuando el proceso esta terminado.
Estado de los Procesos.
Los bloques de control de los procesos se almacenan en colas, cada una de las cuales representa un estado particular de los procesos, existiendo en cada bloque, entre otras informaciones. Los estados de los procesos son internos del sistema operativo y transparentes al usuario.
Los estados de los procesos se pueden dividir en dos tipos: activos e inactivos.
1.- Estados activos: Son aquellos que compiten con el procesador o están en condiciones de hacerlo. Se dividen en:
Ejecución. Estado en el que se encuentra un proceso cuando tiene el control del procesador. En un sistema monoprocesador este estado sólo lo puede tener un proceso.
Preparado. Aquellos procesos que están dispuestos para ser ejecutados, pero no están en ejecución por alguna causa (Interrupción, haber entrado en cola estando otro proceso en ejecución, etc.).
Bloqueado. Son los procesos que no pueden ejecutarse de momento por necesitar algún recurso no disponible (generalmente recursos de entrada/salida).
2.- Estados inactivos: Son aquellos que no pueden competir por el procesador, pero que pueden volver a hacerlo por medio de ciertas operaciones. En estos estados se mantiene el bloque de control de proceso aparcado hasta que vuelva a ser activado. Se trata de procesos que no han terminado su trabajo que lo han impedido y que pueden volver a activarse desde el punto en que se quedaron sin que tengan que volver a ejecutarse desde el principio.
Son de dos tipos:
·
Suspendido
bloqueado. Es el proceso que fue suspendido en espera de un evento, sin que
hayan desaparecido las causas de su bloqueo.
·
Suspendido
programado. Es el proceso que han sido suspendido, pero no tiene causa parta
estar bloqueado.
Estados
de los procesos
•Nuevo:
El proceso es creado.
•Ejecución:
Se ejecutan instrucciónes.
•Espera:
El proceso esta en espera por la ocurrencia de algún evento.
•Listo:
El proceso esta esperando a que le asignen el procesador.
•Terminado:
El proceso finaliza su ejecución.
•Diagrama
de estados de los procesos.
Información
asociada con cada proceso:
•Estado
del proceso
•Program
counter
•Registros
del CPU
•Información
de planificación del CPU
•Memoria
•Información
para administración
•Información
de estatus de E/S
Creación de
Procesos.
En UNIX
el lanzamiento de procesos se realiza a través de la llamada al sistema fork().
Para
utilizar esta llamada al sistema se emplea el header <unistd.h>.
Su
sintaxis es:
Pid=fork();
Una
llamada exitosa a fork() crea un proceso que es una copia del proceso que lo
invoco. Duplica las variables del proceso original con una excepción, el nuevo
proceso creado recibe le nombre de proceso hijo. El proceso que lo creo se
denomina proceso padre, y el sistema devuelve un 0 al proceso hijo y un valor
positivo distinto de 0 (pid del hijo) al proceso padre.
Después
de la llamada exitosa a fork(), tanto el proceso padre como el hijo corren en
forma simultanea a partir del punto siguiente a la invocación del fork.
La
figura siguiente muestra esta situación:
![]() |
Antes
------------------------------------------
fork
------------------------------------------------------------
Después
![]() |
|||||
![]() |
|||||
|
|||||
En la figura se muestran 3 líneas de código de un proceso;
un printf, un fork y otro printf.
Hay 2 secciones en la figura:
antes y después. La sección antes muestra la situación antes de la invocación
al fork. Sólo existe el proceso A. El Apuntador AC (apuntador de código) señala
a la instrucción que se está ejecutando. Como se está indicando el primer
printf Imprime el texto “Antes del fork”.
La sección después muestra la
situación inmediatamente después de la llamada a fork. Existen ahora 2
procesos: Ay B. A es el proceso original, es decir, el proceso padre. B es una
copia de A, es decir el proceso hijo. Ambos corren en forma simultánea. Dado
que el apuntador AC, señala al último printf, se imprime el texto “Después del
fork”. Se imprime 2 veces, una por parte del padre y la otra por parte del
hijo.
Descriptor de procesos y recursos.
Es una estructura de datos asociada a una entidad
informática ya sea un (Recurso o Proceso), en la cual se indica y actualiza
todas las informaciones relativas a dicha entidad.
En el caso de un proceso
la información general que contiene es:
1).- Identificador: Que puede ser interno y externo.
- Interno: Sistemas.
- Externo: Usuario.
2).- Descripción
de la máquina virtual asociada: como espacio virtual asignado, tipo de mapeo, tipo de acceso.
3).- Descripción
de los recursos de la máquina que usa como: Lista de recursos que el
proceso tiene derecho a solicitar,
dirección real en la memoria principal, estado de las variables internas del
CPU, prioridad, etc.
4).- Estados
funcionales del proceso: Los estados
de los procesos
son internos del sistema operativo y
transparente al usuario.
Para éste, su proceso
estará siempre en ejecución
independientemente del estado
en que se encuentre internamente el sistema.
Los
procesos se pueden
encontrar en tres estados, observe figura # 34.

Figura # 34. Estados de los procesos.
Un proceso puede encontrarse en
estado de ejecución, bloqueado o listo (que también se llama ejecutable).
De estos estados de los procesos se
derivan las siguientes transiciones y estados:
Transición: El paso de un estado a
otro.
Transiciones:
1. El proceso se bloquea en la entrada.
2. El planificador elige otro proceso.
3. El planificador elige este proceso.
4. La entrada se vuelve disponible.
Estados:
1. Ejecución
(que en realidad hace uso del CPU en ese instante).
2. Bloqueado
(incapaz de correr hasta que suceda algún evento externo.
3. Listo (ejecutable; se detiene temporalmente para
permitir que se ejecute otro
proceso).
En estos tres estados
son posibles cuatro transiciones:
1. Ocurre
cuando un proceso descubre que no puede continuar. En algún sistema el proceso
debe ejecutar una llamada al sistema, BLOCK, para entrar en estado bloqueado.
2 y 3. Son
ocasionadas por el planificador del proceso, que es parte del sistema operativo
sin que el proceso llegue a saber de ella.
2. Ocurre cuando el planificador decide que el
proceso en ejecución ya ha corrido el tiempo suficiente y es tiempo de permitir
que otro proceso tome tiempo de CPU.
3. Ocurre
cuando todos los procesos han utilizado su parte del tiempo y es hora de que el
primer proceso vuelva a correr.
4. Ocurre
cuando aparece el evento externo que estaba esperando un proceso (como el arribo
de alguna entrada). Si ningún otro proceso corre en ese instante, la
transición 3 se activará de inmediato y el proceso iniciara
su ejecución, de lo contrario tendrá que esperar, en estado listo.
Los estados de los procesos se pueden dividir en dos tipos:
activos e inactivos.
* Estados
activos.
Son aquellos que compiten por el
procesador o están en condiciones de hacerlo. Se dividen en, observe la figura # 35.

Figura # 35. Estados de un
proceso y sus transiciones.
. Ejecución. Estado en
el que se
encuentra un proceso cuando tiene el control del procesador. En un
sistema monoprocesador este estado sólo lo puede tener proceso.
. Listo. Aquellos procesos
que están dispuestos para ser ejecutados, pero no están
en ejecución por alguna causa
(interrupción, haber entrado, en la cola estando otro proceso en ejecución,
etc.
. Bloqueados. Son los
procesos que no
pueden ejecutarse de momento por necesitar algún recurso no
disponible (generalmente recursos de E/S).
* Estados inactivos.
Son aquellos que no pueden competir por el procesador,
pero que puedan volver a hacerlo por medio de ciertas operaciones. En estos
estados se mantiene el bloque de control de proceso suspendido hasta que vuelva
a ser activado.
Son de dos tipos:
Suspendido bloqueado.
Es el proceso que fue
suspendido en espera de un evento, sin que hayan desaparecido las causas de su
bloqueo.
Suspendido preparado.
Es el proceso que ha
sido suspendido, pero no tiene causa para estar bloqueado.
Transiciones de estado.
Todo proceso a lo largo de su existencia puede cambiar de
estado varias veces. Cada uno de estos
cambios se denomina transición de estado.
Transiciones
de estado de proceso, figura # 36.

Figura # 36. Transiciones de estado.
La
asignación del CPU al primer proceso de la lista de listos es llamada despacho,
y es ejecutado por la entidad del sistema llamada despachador. Indicamos esta
transición de la manera siguiente:

Mientras el proceso tenga CPU, se dice que esta en ejecución. Para prevenir
que cualquier proceso monopolice el
sistema, ya sea de manera accidental o maliciosamente el sistema operativo
ajusta un reloj de interrupción del hardware para permitir al usuario ejecutar
su proceso durante un intervalo de tiempo especifico o cuanto. Si el proceso no
abandona voluntariamente el CPU, antes de que expire el intervalo, el reloj
genera una interrupción, haciendo que el sistema operativo recupere el control.
El sistema operativo hace que el proceso que anteriormente se hallaba en estado de ejecución pase al de
listo, y hace que el primer proceso de la lista de listos pase al estado de
ejecución.
Estas transiciones de
estado se indican como:


El proceso cambia del estado
bloqueado al estado listo:

Con esto tenemos definidas 4
transacciones de estado.




Suspensión
y Reanudación.
Un proceso suspendido no puede proseguir sino hasta que
lo reanuda otro proceso. Reanudar (o activar) un proceso implica reiniciarlo a
partir del punto en el que se suspendió.
Las operaciones de suspensión y reanudación son importantes
por diversa razones:
* Si un sistema está funcionando mal y es probable que falle, se puede
suspender los procesos activos para
reanudarlos cuando se haya corregido el problema.
* Un usuario que desconfíe de los resultados parciales de un proceso
puede suspenderlo (en vez de abortarlo) hasta que verifique si el proceso
funciona correctamente o no.
* Algunos procesos se puede suspender como respuesta a las fluctuaciones
a corto plazo de la carga del sistema y
reanudarse cuando las cargas regresen a niveles normales.
La figura # 37. Muestra los procesos con
suspensión y reanudación.

Figura # 37. Transiciones de
estados de los procesos con suspensión y reanudación.
La figura # 37, muestra el diagrama de transiciones de
estado de los procesos, modificado para incluir las operaciones de suspensión y
reanudación. Se han añadido dos nuevos estados, denominados suspendido-listo y
suspendido bloqueado; no hay necesidad de un estado suspendido-ejecutado. Sobre
la línea discontinua se encuentran los estados activos, y debajo de ella los
estados suspendidos.
Una suspensión puede ser iniciada por el propio proceso o
por otro. En un sistema con un solo procesador el proceso en ejecución puede
suspenderse a si mismo; ningún otro proceso podría estar en ejecución al mismo tiempo para
realizar la suspensión (aunque otro proceso sí podría solicitar la suspensión
cuando se ejecute). En un sistema de múltiples procesadores, un proceso en
ejecución puede suspender a otro que se esté ejecutando en ese mismo momento en
un procesador diferente.
Solamente otro proceso puede suspender un proceso listo.
La transición correspondiente es:

Un proceso puede hacer
que otro proceso que se encuentre en el estado suspendido-listo pase al estado
listo. La transición correspondiente es:

Un proceso puede suspender a otro proceso que
esté bloqueado. La transición correspondiente es:

Un proceso puede
reanudar otro proceso que esté suspendido-bloqueado. La transición
correspondiente es:

Como la suspensión es
por lo general una actividad de alta prioridad, se debe realizar de inmediato.
Cuando se presenta finalmente el término de la operación ( si es que termina),
el proceso suspendido-bloqueado realiza la siguiente transición.


En conclusión los sistemas que
administran procesos deben ser capaces de realizar ciertas operaciones sobre procesos
y con ellos. Tales operaciones incluyen:
-
Crear un proceso.
-
Destruir un proceso.
-
Suspender un proceso.
-
Reanudar un proceso.
-
Cambiar la prioridad de un proceso.
-
Bloquear un proceso.
-
Despertar un proceso.
-
Despachar un proceso.
- Permitir que un
proceso se comunique con otro (esto se denomina
comunicación entre procesos).
Crear un proceso implica operaciones como:
-
Dar un nombre a un proceso.
- Insertarlo en la lista
de procesos conocidos del sistema ( o tabla de procesos)
-
Determinar la prioridad inicial de proceso.
-
Crear el bloque de control de proceso.
- Asignar los recursos iniciales al proceso.
Un proceso puede crear un nuevo proceso. Si lo hace el
proceso creador se denomina proceso padre, y el proceso creado, proceso hijo.
Sólo se necesita un padre para crear un hijo. Tal creación origina una
estructura jerárquica de procesos. No se puede destruir un proceso cuando este
ha creado otros procesos.
Destruir un proceso implica eliminarlo del sistema. Se le
remueve de la tabla o listas del sistema, sus recursos se devuelven al sistema
y su bloque de control de proceso se borra (es decir, el espacio de memoria
ocupado por su PCB se devuelve al espacio de memoria disponible.
Operaciones de procesos y recursos.
Los sistemas operativos poseen una serie de funciones
cuyo objetivo es el de la manipulación de los procesos. En general las
operaciones que se pueden hacer sobre un proceso son las siguientes:
. Crear el proceso.
Se produce con la orden de ejecución del programa y suele necesitar
varios argumentos, como el nombre y la
prioridad del proceso, figura # 37.

Figura # 37. Creación de un
proceso.
La creación de un proceso puede ser de dos tipos:
.
Jerárquica. En
ella cada proceso que se crea es
hijo del proceso creador y hereda el entorno
de ejecución de su padre. El
primer proceso que ejecuta un usuario será hijo del intérprete de comandos con el que interactúa, figura
# 39.

Figura # 39. Jerarquía de procesos.
. No
jerárquico. Cada
proceso creado por otro proceso se ejecuta independientemente de su creador con
un entorno diferente. Es un tipo de creación que no suele darse en los sistemas
operativos actuales.
Además de los dos
tipos anteriores se pueden realizar las operaciones siguientes:
. Destruir un proceso. Se trata de la orden de eliminación del
proceso con la cual el sistema operativo destruye su PCB ( Proces control
Block).
. Suspender un proceso. Es una operación de alta prioridad que
paraliza un proceso que puede ser reanudado posteriormente. Suele utilizarse en
ocasiones de mal funcionamiento o sobrecarga del sistema.
. Reanudar un proceso. Trata de
activar un proceso que ha sido
previamente suspendido.
. Cambiar la prioridad de un proceso.
. Temporizar la ejecución de un proceso. Hace que un determinado proceso se
ejecute cada cierto tiempo (segundos,
minutos, horas,...) por etapas o de una sola vez, pero transcurrido un periodo
de tiempo fijo.
. Despertar un proceso. Es una forma de desbloquear un proceso que habrá sido bloqueado
previamente por temporización o cualquier otra causa.
No hay comentarios:
Publicar un comentario