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 está
siendo creado.
Running: cuando el proceso se está
ejecutando.
Waiting: cuando el proceso está
esperando que se cumpla algún otro evento.
Ready: cuando el proceso esta
pronto para ejecutar, esperando por la CPU.
Terminated: cuando el proceso está
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 está en
espera por la ocurrencia de algún evento.
•Listo: El proceso está
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 el 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 simultánea a
partir del punto siguiente a la invocación del fork.
La figura siguiente muestra
esta situación:
Printf(“Antes del fork \n”);
Pid=fork();
Printf(“Después del fork\n”);
AC
A
Antes
------------------------------------------
fork
------------------------------------------------------------
Después
…..
Printf(“Antes del fork \n”);
Pid=fork();
Printf(“Después del fork\n”);
…….
AC
…..
Printf(“Antes del fork \n”);
Pid=fork();
Printf(“Después del fork\n”);
…….
AC
B
A
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.
h
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.
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 iniciará 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.
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.
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:
Despacho (nombre del proceso):
Listo en ejecución.
Mientras el proceso tenga CPU,
se dice que está 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 específico o cuánto. 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:
- tiempo excedido (nombre del proceso): en ejecución Listo
- bloqueado (nombre del proceso):
en ejecución bloquead
El proceso cambia del estado
bloqueado al estado listo:
- despertar (nombre del proceso):
bloqueado Listo.Con esto tenemos
definidas 4 transacciones de estado.
- despacho ( nombre del proceso):
Listo
en ejecución
- tiempo excedido (nombre del
proceso): en ejecución
Listo
- bloqueado (nombre del proceso):
en ejecución bloqueado
- despertar (nombre del proceso):
bloqueado Listo.
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 diversas 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.
Transiciones de estados de los
procesos con suspensión y reanudación.
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:
1) Suspender (nombre_del_proceso):
Listo Suspendido-Listo.
Un proceso puede hacer que
otro proceso que se encuentre en el estado suspendido-listo pase al estado
listo. La transición correspondiente es:
2) reanudar ( nombre_del_proceso):
Suspendido-Listo Listo.
Un proceso puede suspender a otro proceso que
esté bloqueado. La transición correspondiente es:
3) suspender ( nombre_del_proceso):
Bloqueado Suspendido-Bloqueado.
Un proceso puede reanudar otro
proceso que esté suspendido-bloqueado. La transición correspondiente es:
4) reanudar ( nombre_del_proceso):
Suspendido-Bloqueado Bloqueado.
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.
5) completar (nombre_del
_proceso): suspendido-bloqueado suspendido-listo.
6) suspender (nombre_del_proceso): Ejecución
Suspendido-Listo.
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.
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.
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.
No hay comentarios.:
Publicar un comentario