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.
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.
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 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.
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 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:
- tiempo excedido (nombre del
proceso): en ejecución Listo
- bloqueado (nombre del proceso): en
ejecución bloqueado
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 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.
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
Un
proceso puede suspender a otro proceso que esté bloqueado. La transición
correspondiente es:
3) suspender ( nombre_del_proceso):
Bloqueado
Un proceso puede reanudar otro
proceso que esté suspendido-bloqueado. La transición correspondiente es:
4) reanudar ( nombre_del_proceso):
Suspendido-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.
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.
*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