PROCESOS
Dentro de las operaciones
más básicas y la vez más complejas de
nuestra PC encontramos los procesos.
Estos nos permitirán entrar al mundo que se "DESPERTARA"
en nuestra computadora, o
por lo menos seria nuestra manera de decirlo. Siempre que le
pidamos a nuestra computadora que haga algo, los procesos
asumirán el trabajo y
de esta manera el microprocesador
dará ejecución al plan que realice
el sistema operativo
a través de los procesos.
Un proceso es un
concepto
manejado por el
sistema operativo que consiste en el
conjunto formado por:
- Las instrucciones de un programa
destinadas a ser ejecutadas por el
microprocesador.
- Su estado de
ejecución en un momento dado, esto es, los valores
de los registros de
la CPU
para dicho programa.
- Su memoria de
trabajo, es
decir, la memoria
que ha reservado y sus contenidos.
- 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 son independientes y no comparten memoria (es
decir, información) con el proceso que los ha
creado.
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.
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 el
planificador 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.
No hay comentarios.:
Publicar un comentario