Procesos
|
| |
Todos
los programas cuya ejecucion solicitan los usuarios, se ejecutan en forma de
procesos, de ahi la importancia para le informatico de conocerlos en detalle.
El proceso se puede definir como un programa de gestion por el sistema
operativo. Durante su eleccion el proceso va modificando en ejecucion
y, de una forma un poco mas precisa, como la unidad de procesamiento los
registro del modelo de programacion de la computadora, de acuerdo a las
intrusiones de maquina involucradas.
El sistema operativo mantiene por cada proceso una serie de estructuras de informacion que permiten identificar las caracteristicas de este, asi como los recursos que tiene asignados. En esta ultima categoria entran los descriptores de los segmentos de memoria asignados, los descriptores de los archivos abiertos, los descriptores de los puertos de comunicaciones, etc. Una parte muy importante de esta informacion se encuentra normalmente como en el llamado bloque de control de procesos (BCP). El sistema operativo mantiene una tabla de procesos con todos los BCP de los procesos. Por razones de eficiencia, la tabla de procesos se construyen normalmente como una estructura estatica, que tiene un determinado numero de BCP, todos ellos del mismo tamano. La informacion que compone un proceso es la siguiente:
|
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.
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.
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.
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.
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.
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.
No hay comentarios:
Publicar un comentario