You are on page 1of 5

SISTEMAS OPERATIVOS

ING. CARLOS BARRERA

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:

Las instrucciones de un programa destinadas a ser ejecutadas por el


microprocesador.
Su estado de ejecucin 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 informacin que permite al sistema operativo su planificacin.

Esta definicin vara ligeramente en el caso de sistemas operativos multihilo, donde un


proceso consta de uno o ms hilos, la memoria de trabajo (compartida por todos los hilos)
y la informacin de planificacin. Cada hilo consta de instrucciones y estado de ejecucin.
Los procesos son creados y destruidos por el sistema operativo, as como tambin este
se debe hacer cargo de la comunicacin entre procesos, pero lo hace a peticin de otros
procesos. El mecanismo por el cual un proceso crea otro proceso se denomina
bifurcacin (fork). Los nuevos procesos son independientes y no comparten memoria (es
decir, informacin) 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 los procesos


Un proceso puede estar en cualquiera de los siguientes tres estados: Listo, En ejecucin y
Bloqueado.
Los procesos en el estado listo son los que pueden pasar a estado de ejecucin si el
planificador los selecciona. Los procesos en el estado ejecucin son los que se estn
ejecutando en el procesador en ese momento dado. Los procesos que se encuentran en
estado bloqueado estn esperando la respuesta de algn otro proceso para poder
continuar con su ejecucin. Por ejemplo operacin de E/S.
Estados de un proceso.

SISTEMAS OPERATIVOS

ING. CARLOS BARRERA

El principal trabajo del procesador es ejecutar las instrucciones de mquina 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 multiprogramacin, el procesador intercalar la ejecucin de
instrucciones de varios programas que se encuentran en memoria. El sistema operativo
es el responsable de determinar las pautas de intercalado y asignacin de recursos a
cada proceso.
Modelo de dos estados.

El modelo de estados ms simple es el de dos estados. En este modelo, un proceso


puede estar ejecutndose o no. Cuando se crea un nuevo proceso, se pone en estado de
No ejecucin. En algn momento el proceso que se est ejecutando pasar al estado No
ejecucin y otro proceso se elegir de la lista de procesos listos para ejecutar para
ponerlo en estado Ejecucin.
De esta explicacin 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.
Adems los procesos que no se estn ejecutando deben guardarse en algn tipo de cola
mientras esperan su turno para ejecutar.
Modelo de cinco estados
El modelo anterior de dos estados funcionara bien con una cola FIFO y planificacin por
turno rotatorio para los procesos que no estn en ejecucin, 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 algn suceso
antes de continuar, como una operacin 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 ejecucin en dos estados: Listo y Bloqueado.
Se agregan adems un estado Nuevo y otro Terminado.

SISTEMAS OPERATIVOS

ING. CARLOS BARRERA

Los cinco estados de este diagrama son los siguientes:

Ejecucin: el proceso est actualmente en ejecucin.


Listo: el proceso est listo para ser ejecutado, slo est esperando que el
planificador as lo disponga.
Bloqueado: el proceso no puede ejecutar hasta que no se produzca cierto
suceso, como una operacin de Entrada/Salida.
Nuevo: El proceso recin fue creado y todava no fue admitido por el sistema
operativo. En general los procesos que se encuentran en este estado todava no
fueron cargados en la memoria principal.
Terminado: El proceso fue expulsado del grupo de procesos ejecutables, ya sea
porque termin o por algn fallo, como un error de proteccin, aritmtico, etc.

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

ING. CARLOS BARRERA

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.

Se usa una variable llamada semforo para intercambiar seales.


Si un proceso esta esperando una seal, se suspende (WAIT) hasta que la seal
se enve (SIGNAL).
Se mantiene una cola de procesos en ESPERA en el semforo.
La forma de elegir los procesos de la cola en ESPERA es mediante una poltica
FIFO.

La sincronizacin explcita entre procesos es un caso particular del estado "bloqueado".


En este caso, el suceso que permite desbloquear un proceso no es una operacin de
entrada/salida, sino una seal generada a propsito por el programador desde otro
proceso.
Qu es un hilo de ejecucin?
_ Tambin llamado hebra, proceso ligero, flujo, subproceso o thread.
_ Programa en ejecucin que comparte la imagen de memoria y otros recursos del
proceso con otros hilos.
_ Desde el punto de vista de programacin: Funcin cuya ejecucin se puede lanzar en
paralelo con otras.
_ Un proceso puede contener uno o ms hilos.
Un hilo de ejecucin, en sistemas operativos, es una caracterstica que permite a una
aplicacin realizar varias tareas a la vez (concurrentemente). Los distintos hilos de

SISTEMAS OPERATIVOS

ING. CARLOS BARRERA

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.

You might also like