Professional Documents
Culture Documents
TEMA 3 PROCESOS
Qu es un proceso?
Un proceso es un programa en ejecucin. Una vez definido que es un proceso nos
podramos preguntar cul es la diferencia entre un programa y un proceso, y bsicamente
la diferencia es que un proceso es una actividad de cierto tipo que contiene un programa,
entradas salidas y estados.
Los procesos pueden ser cooperantes o independientes, en el primer caso se entiende
que los procesos interactan entre s y pertenecen a una misma aplicacin. En el caso de
procesos independientes en general se debe a que no interactan y un proceso no
requiere informacin de otros o bien porque son procesos que pertenecen a distintos
usuarios.
Un proceso es un concepto manejado por el sistema operativo que consiste en el conjunto
formado por:
SISTEMAS OPERATIVOS
SISTEMAS OPERATIVOS
Los nuevos estados Nuevo y Terminado son tiles para la gestin 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 sita 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 cul es el proceso que ms conviene ejecutar a continuacin.
Procesos suspendidos
Una de las razones para implementar el estado Bloqueado era poder hacer que los
procesos se puedan mantener esperando algn suceso, por ejemplo una Entrada/Salida.
Sin embargo, al ser mucho ms lentas estas operaciones, puede suceder en nuestro
modelo de cinco estados todos los procesos en memoria estn esperando en el estado
Bloqueado y que no haya ms memoria disponible para nuevos procesos. Podra
conseguirse ms memoria, aunque es probable que esto slo permita procesos ms
grandes y no necesariamente nuevos procesos. Adems hay un costo asociado a la
memoria y de cualquier forma es probable que se llegara al mismo estado con el tiempo.
Otra solucin 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
SISTEMAS OPERATIVOS
estado Suspendido. Despus 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 todava se encuentre bloqueado.
Slo convendra traerlo cuando ya est listo para ejecutar, esto implica que ya aconteci
el suceso que estaba esperando cuando se bloque. Para tener esta diferenciacin 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 ms procesos pueden cooperar mediante seales de forma que uno obliga a
detenerse a los otros hasta que reciban una seal para continuar.
SISTEMAS OPERATIVOS
ejecucin comparten una serie de recursos tales como el espacio de memoria, los
archivos abiertos, situacin de autenticacin, etc. Esta tcnica permite simplificar el diseo
de una aplicacin que debe llevar a cabo distintas funciones simultneamente.
Los hilos de ejecucin que comparten los mismos recursos, sumados a estos recursos,
son en conjunto conocidos como un proceso. El hecho de que los hilos de ejecucin de un
mismo proceso compartan los recursos hace que cualquiera de estos hilos pueda
modificar stos. Cuando un hilo modifica un dato en la memoria, los otros hilos acceden a
ese dato modificado inmediatamente.
Lo que es propio de cada hilo es el contador de programa, la pila de ejecucin y el estado
de la CPU (incluyendo el valor de los registros).
El proceso sigue en ejecucin mientras al menos uno de sus hilos de ejecucin siga
activo. Cuando el proceso finaliza, todos sus hilos de ejecucin tambin han terminado.
Asimismo en el momento en el que todos los hilos de ejecucin finalizan, el proceso no
existe ms y todos sus recursos son liberados.
Algunos lenguajes de programacin tienen caractersticas de diseo expresamente
creadas para permitir a los programadores lidiar con hilos de ejecucin (como Java o
Delphi). Otros (la mayora) desconocen la existencia de hilos de ejecucin y stos deben
ser creados mediante llamadas de biblioteca especiales que dependen del sistema
operativo en el que estos lenguajes estn siendo utilizados (como es el caso del C y del
C++).
Un ejemplo de la utilizacin de hilos es tener un hilo atento a la interfaz grfica (iconos,
botones, ventanas), mientras otro hilo hace una larga operacin internamente. De esta
manera el programa responde de manera ms gil a la interaccin con el usuario.
Tambin pueden ser utilizados por una aplicacin servidora para dar servicio a mltiples
clientes.