Proceso –
Sistemas operativos
Enviado por Jorge Marquez - jorgeamarquezo[arroba]gmail.com
1. Introducción
2. Proceso
8. Conclusión
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:
o
Loprocesos son
creados y destruidos por el sistema operativo, así como también este se debe
hacer cargo de la comunicación
entre procesos.
o
El mecanismo por el
cual un proceso crea otro proceso se denomina bifurcación.
o
El sistema
operativo es el responsable de determinar las pautas de intercalado y
asignación de recursos a cada proceso.
o
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.
o
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
jorgeamarquezo[arroba]gmail.com
Estudiante
Universitario.
Estudios
Actuales en el I.U.T.R.L.A. Carrera: Informatica
Venezuela,
Ciudad Bolivar,
9 de octubre
del 2006