Estados de un
proceso.
El principal trabajo del
procesador es
ejecutar las instrucciones de máquina que se encuentran
en
memoria principal. Estas instrucciones se
encuentran en forma de programas. Para
que un programa pueda
ser ejecutado, el sistema operativo
crea un nuevo proceso, y el procesador ejecuta una tras otra las
instrucciones del mismo.
En un entorno de
multiprogramación, el procesador
intercalará la ejecución de instrucciones de varios
programas que se encuentran en memoria. El
sistema operativo
es el responsable de determinar las pautas de intercalado y
asignación de recursos a cada
proceso.
Modelo de
dos estados.
El modelo de
estados más simple es el de dos estados. En este modelo,
un proceso puede estar ejecutándose o no. Cuando se crea
un nuevo proceso, se pone en estado de
No ejecución. En algún momento el proceso
que se está ejecutando pasará al estado No
ejecución y otro proceso se elegirá de la lista
de procesos
listos para ejecutar para ponerlo en estado
Ejecución.
De esta explicación se desprende que es necesario
que el sistema operativo pueda seguirle la pista a los procesos,
conociendo su estado y el lugar que ocupa en memoria.
Además los procesos que no se están ejecutando
deben guardarse en algún tipo de cola mientras esperan su
turno para ejecutar.
Modelo de cinco estados
El modelo anterior de dos estados funcionaría
bien con una cola FIFO
y
planificación por turno rotatorio
para los procesos que no están en ejecución,
si los procesos estuvieran siempre listos para ejecutar. En la
realidad, los procesos utilizan datos para operar
con ellos, y puede suceder que no se encuentren listos, o que se
deba esperar algún suceso antes de continuar, como una
operación de Entrada/Salida. Es por esto que se necesita
un estado donde los procesos permanezcan bloqueados esperando
hasta que puedan proseguir. Se divide entonces al estado No
ejecución en dos estados: Listo y
Bloqueado. Se agregan además un estado Nuevo
y otro Terminado.
Los cinco estados de este diagrama son
los siguientes:
- Ejecución: el proceso está
actualmente en ejecución. - Listo: el proceso está listo para ser
ejecutado, sólo está esperando que elplanificador así lo
disponga. - Bloqueado: el proceso no puede ejecutar hasta
que no se produzca cierto suceso, como una operación de
Entrada/Salida. - Nuevo: El proceso recién fue creado y
todavía no fue admitido por el sistema operativo. En
general los procesos que se encuentran en este estado
todavía no fueron cargados en la memoria
principal. - Terminado: El proceso fue expulsado del
grupo de
procesos ejecutables, ya sea porque terminó o por
algún fallo, como un error de protección,
aritmético, etc.
Los nuevos estados Nuevo y Terminado son
útiles para la gestión
de procesos. En este modelo los estados Bloqueado y
Listo tienen ambos una cola de espera. Cuando un nuevo
proceso es admitido por el sistema operativo, se sitúa en
la cola de listos. A falta de un esquema de prioridades
ésta puede ser una cola FIFO.
Los procesos suspendidos son mantenidos en una cola de
bloqueados. Cuando se da un suceso se pasan a la cola de listos
los procesos que esperaban por ese suceso.
Si existe un esquema con diferentes niveles de prioridad
de procesos es conveniente mantener varias colas de procesos
listos, una para cada nivel de prioridad, lo que ayuda a
determinar cuál es el proceso que más conviene
ejecutar a continuación.
Procesos suspendidos
Una de las razones para implementar el estado
Bloqueado era poder hacer
que los procesos se puedan mantener esperando algún
suceso, por ejemplo una Entrada/Salida. Sin embargo, al ser mucho
más lentas estas operaciones,
puede suceder en nuestro modelo de cinco estados todos los
procesos en memoria estén esperando en el estado
Bloqueado y que no haya más memoria disponible para
nuevos procesos. Podría conseguirse más memoria,
aunque es probable que esto sólo permita procesos
más grandes y no necesariamente nuevos procesos.
Además hay un costo asociado a
la memoria y de cualquier forma es probable que se
llegaría al mismo estado con el tiempo.
Otra solución es el intercambio. El
intercambio se lleva a cabo moviendo una parte de un proceso o un
proceso completo desde la memoria principal al disco, quedando en
el estado Suspendido. Después del intercambio, se
puede aceptar un nuevo proceso o traer a memoria un proceso
suspendido anteriormente.
El problema que se presenta ahora es que puede ser que
si se decide traer a memoria un proceso que está en el
estado Suspendido, el mismo todavía se encuentre
bloqueado. Sólo convendría traerlo cuando ya
está listo para ejecutar, esto implica que ya
aconteció el suceso que estaba esperando cuando se
bloqueó. Para tener esta diferenciación entre
procesos suspendidos, ya sean listos como bloqueados, se utilizan
cuatro estados: Listo, Bloqueado, Bloqueado y
suspendido y Listo y suspendido.
Procesos en espera
Dos o más procesos pueden cooperar mediante
señales
de forma que uno obliga a detenerse a los otros hasta que reciban
una señal para continuar.
- Se usa una variable llamada semáforo para intercambiar
señales. - Si un proceso esta esperando una señal, se
suspende (WAIT) hasta que la señal se envíe
(SIGNAL). - Se mantiene una cola de procesos en ESPERA en el
semáforo. - La forma de elegir los procesos de la cola en ESPERA
es mediante una política
FIFO.
La sincronización explícita entre procesos
es un caso particular del estado "bloqueado". En este caso, el
suceso que permite desbloquear un proceso no es una
operación de entrada/salida, sino una señal
generada a propósito por el programador desde otro
proceso.
CONCLUSIÓN.
Ya conocimos que es un proceso, ya sabemos quien
controla los procesos de nuestro computador
pero también podemos decir que:
- Loprocesos son creados y destruidos por el sistema
operativo, así como también este se debe hacer
cargo de la comunicación entre
procesos. - El mecanismo por el cual un proceso crea otro
proceso se denomina bifurcación. - El sistema operativo es el responsable de
determinar las pautas de intercalado y asignación de
recursos a cada proceso. - Si existe un esquema con diferentes niveles de
prioridad de procesos es conveniente mantener varias colas de
procesos listos, una para cada nivel de prioridad, lo que
ayuda a determinar cuál es el proceso que más
conviene ejecutar a continuación. - La sincronización explícita entre
procesos es un caso particular del estado "bloqueado". En
este caso, el suceso que permite desbloquear un proceso no es
una operación de entrada/salida, sino una señal
generada a propósito por el programador desde otro
proceso.
Bachiller: Jorge Marquez
Estudiante Universitario.
Estudios Actuales en el I.U.T.R.L.A. Carrera:
Informatica
Venezuela, Ciudad Bolivar,
9 de octubre del 2006
Página anterior | Volver al principio del trabajo | Página siguiente |