Sei sulla pagina 1di 5

PROCESO Y GESTION DE PROCESOS

Un proceso puede informalmente entenderse como un programa en ejecucin. Formalmente un


proceso es "Una unidad de actividad que se caracteriza por la ejecucin de una secuencia de
instrucciones, un estado actual, y un conjunto de recursos del sistema asociados".
Para entender lo que es un proceso y la diferencia entre un programa y un proceso, A. S.
Tanenbaum propone la analoga "Un cientfico computacional con mente culinaria hornea un
pastel de cumpleaos para su hija; tiene la receta para un pastel de cumpleaos y una cocina
bien equipada con todos los ingredientes necesarios, harina, huevo, azcar, leche, etctera."
Situando cada parte de la analoga se puede decir que la receta representa el programa (el
algoritmo), el cientfico computacional es el procesador y los ingredientes son las entradas del
programa. El proceso es la actividad que consiste en que el cientfico computacional vaya
leyendo la receta, obteniendo los ingredientes y horneando el pastel.
Cada proceso tiene su contador de programa, registros y variables, aislados de otros procesos,
incluso siendo el mismo programa en ejecucin 2 veces. Cuando este ltimo caso sucede, el
sistema operativo usa la misma regin de memoria de cdigo, debido a que dicho cdigo no
cambiar, a menos que se ejecute una versin distinta del programa.
Los procesos son gestionados por el sistema operativo y estn formados 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
unidad central de procesamiento para dicho programa.
Su memoria de trabajo (memoria crtica), es decir, la memoria que ha reservado y sus
contenidos.
Otra informacin que permite al sistema operativo su planificacin.

Un proceso se rige en pequeas porciones, conocidas como pginas, y cada proceso tiene su
propia tabla de paginacin, fungiendo como una optimizacin del sistema operativo ante los
fallos de pgina.
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 eliminados por el sistema operativo, as como tambin ste se debe
hacer cargo de la comunicacin entre procesos, pero lo hace a peticin de otros procesos
(interrupcin o tiempo de reloj). El mecanismo por el cual un proceso crea otro proceso se
denomina bifurcacin (fork). El proceso de arranque de GNU/Linux inicia con un slo proceso
(init) y despus comienza a crear los hilos necesarios para tener el sistema listo para su uso. Los
nuevos procesos pueden ser independientes y no compartir el espacio de memoria con el
proceso que los ha creado o ser creados en el mismo espacio de memoria.
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.
Los procesos pueden ser cooperativos o independientes. 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 de tipo semforo para sincronizar los procesos.


Si un proceso est esperando una seal, se suspende hasta que la seal se enve.
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 first in first
out.

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.
Hay cuatro eventos principales que provocan la creacin de procesos:

El arranque del sistema.


La ejecucin, desde un proceso, de una llamada al sistema para la creacin de otro
proceso.
Una peticin de usuario para crear un proceso.
El inicio de un trabajo por lotes.

Los procesos pueden contener uno o ms hilos, haciendo ms eficiente las tareas, asimismo la
complejidad de los algoritmos de sincronizacin, ya que podra ocurrir la condicin de carrera
muy a menudo, inclusive los indeseados interbloqueos.

Creacin de un proceso
Bsicamente hasta el da de hoy existen slo 4 formas de crear un proceso:

Arranque del sistema.


En la ejecucin, desde un proceso, de una llamada al sistema para la creacin del proceso.
Una peticin deliberada del usuario para crear un proceso.
El inicio de un trabajo por lotes.

La forma de creacin de procesos en Unix es a travs de una llamada al sistema fork la cual
crear un proceso hijo en total semejanza al padre, hasta que el recin proceso decida cambiar
su imagen en memoria, incluso obtener sus propios descriptores de archivos abiertos.

Terminacin de un proceso
El ciclo de vida de un proceso es sencillo, consta de la creacin, la ejecucin de instrucciones y la
terminacin. Cabe sealar que un proceso en el transcurso de su ciclo puede estar en diferentes
estados.

Salida normal.
Salida por error.
Error fatal.
Eliminado por otro proceso.

Salida normal, sta se presenta cuando el proceso termina de forma voluntaria, por ejemplo,
cuando se cierra en navegador web o el procesador de textos.
Salida por error, sta se presenta cuando el proceso tiene que salir debido a insuficiencia de
datos, por ejemplo, cuando solicita un archivo que no existe.
Error fatal, ste sucede por un error en el programa, como las divisiones entre 0 o requerimiento
de memoria inaccesible.
Eliminado por otro proceso, ste es sumamente til cuando un proceso se queda colgado, es
decir, sin terminar, pero tampoco responde. En Unix un ejemplo es cuando se utiliza el comando
kill para terminar procesos abruptamente.

Estados de un proceso

Los estados de un proceso obedecen a su participacin y disponibilidad dentro del sistema


operativo y surgen de la necesidad de controlar la ejecucin de cada proceso. Los procesadores
slo pueden ejecutar un solo proceso a la vez, turnndolos para el uso de ste. Existen procesos
no apropiativos o cooperativos que bsicamente ocupan todo el tiempo del procesador hasta que
ellos deciden dejarlo. Los procesos apropiativos son aquellos que ocupan por un perodo de
tiempo el procesador hasta que una interrupcin o seal llega al procesador para hacer el
cambio de proceso, a esto se le conoce como cambio de contexto.

Los posibles estados que puede tener un proceso son ejecucin, bloqueado y listo:

Ejecucin, es un proceso que est haciendo uso del procesador.


Bloqueado, No puede ejecutarse hasta que un evento externo sea llevado a cabo.
Listo, ha dejado disponible al procesador para que otro proceso pueda ocuparlo.

Las posibles transiciones son 4. La primera se realiza cuando el sistema operativo determina que
el proceso no puede continuar justo en ese momento, en algunos sistemas se puede hacer una
llamada al sistema "pause" para pasar al estado bloqueado, en Unix cuando el proceso est
leyendo datos provenientes de una canalizacin o de un archivo especial (terminal) y no hay
entrada disponible, el proceso se bloquea de forma automtica.
Las transiciones 2 y 3 son llevadas a cabo por el planificador de procesos, siendo que el proceso
no tiene conocimiento de ste. La transicin 2 se da cuando el planificador de procesos decide
que el proceso ya estuvo el tiempo suficiente en ejecucin y debe dar paso a la ejecucin de
otros procesos (adquieran tiempo del procesador). La transicin 3 se realiza cuando todos los
procesos han ocupado tiempo del procesador y debe retomarse el primer proceso.
La transicin 4 ocurre cuando se produce un evento externo por el que un proceso estaba en
espera, por ejemplos, introducir datos desde la terminal. Si no hay otro proceso en ejecucin en
ese instante, la transicin 3 se activa y el proceso comienza a ejecutarse; tambin podra pasar
al estado de "listo" y esperar un momento para iniciar la ejecucin.

Tipos de procesos
Existen dos tipos de procesos, aquellos que se ejecutan en modo kernel y aquellos que se
ejecutan en modo usuario. Los primeros son ms lentos por las llamadas al sistema que realizan,
sin embargo, son ms seguros por la integridad que representan. Cuando hablamos de los
procesos de usuario, podemos decir que el sistema operativo podra no ser multiproceso, ya que
se vale de libreras (como pthread) para hacer un multiplexado y dar la apariencia de trabajar
como multiproceso.
Podra pensarse en otra clasificacin, como son los procesos en primer plano y procesos en
segundo plano. Los primeros interactan con el usuario, es decir, el usuario proporciona los datos
que el proceso utilizar. Los segundos, son creados para tareas bien definidas y no necesitan la
intervencin del usuario, por ejemplo, se puede tener un proceso en segundo plano para revisar
la temperatura del disco duro constantemente, stos tambin son conocidos como demonios.

Planificacin de Procesos
El sistema operativo es el encargado de decidir qu procesos entran en la CPU cuando sta
queda libre, y en qu momento sale de la CPU el proceso que est en ejecucin. Todo ello se
lleva a cabo a travs de una poltica de planificacin de procesos.
Se pueden definir mltiples polticas de planificacin de procesos:

por orden de llegada


primero la tarea ms breve
por orden de prioridad
etc.

En definitiva, lo que una poltica de planificacin debe conseguir es que los procesos obtengan
adecuadamente sus turnos de ejecucin por lo que son tratados de la misma forma, que no se
produzca sobrecarga, es decir, el planificador debe responder rpidamente ante cargas de
trabajo ligera y responder de la misma forma ante cargas de trabajo similares. Y obtener un buen
rendimiento, por lo se debe lograr finalizar el mayor nmero de procesos y maximizar el tiempo
de respuesta.
No existe una poltica de planificacin ptima para todas las computadoras, sino que depende de
las caractersticas de los procesos. As se puede ver cmo una poltica obtiene unos resultados
excelentes en un sistema, sin embargo en otro sistema el rendimiento es mucho menor. Ello se
debe a las caractersticas de los procesos, donde cada uno puede tener una cantidad de
operaciones de E/S enorme cmo es el caso de las bases de datos, otros usan mayormente la
CPU, otros realizan una mayor lectura de datos frente a otros, hay procesos que requieren una
prioridad mxima en los turnos de ejecucin, es el caso de los procesos de tiempo real, y hay
procesos que requieren ms tiempo de ejecucin que otros, por lo que habr que valorar si
terminar primero los cortos o no.
Existen diferentes planificadores en el sistema. Primero nos encontramos el planificador a
largo plazo, el cual es el encargado de controlar el grado de multiprogramacin en el sistema,
intentando conseguir una mezcla adecuada de trabajos en CPU y E/S. Es por tanto el encargado
de suministrar los procesos a la cola de planificacin a corto plazo.
Existe tambin un planificador a medio plazo. Es el encargado de suspender y
posteriormente restaurar procesos de poco inters, realizando el intercambio de los mismos
entre la memoria principal y el disco o memoria secundaria. Dicho proceso es conocido como
swapping, y se ejecuta cuando hay escasez de recursos.
El planificador a corto a plazo es el encargado de asignar y desasignar la CPU. Su trabajo es
coger un proceso de la cola de procesos preparados y asignarle una CPU. Hay dos tipos de
planificadores a corto plazo; no expulsivas, el proceso abandona la CPU cuando termina o a la
espera de un suceso externo; y expulsivas, el proceso que se est ejecutando puede pasar a
estado listo enviado por parte del sistema operativo, es el caso de los sistemas de tiempo
compartido y tiempo real, como UNIX, Windows NT/XP o superior, MAC OS X. Las polticas de
planificacin de procesos ms comunes son las siguientes:

Primero en llegar, primero en salir (FCFS). El primero proceso que llega a la cola de
preparados ser el primero en ser planificado y pasado a la CPU. Es no expulsiva, por lo
que no es adecuada para los sistemas de tiempo compartido, por lo que provocan una
especie de convoy con los procesos de E/S.
Primero el proceso ms corto (SJF). Cuando el proceso que est en la CPU cesa su
ejecucin se elige de la cola de procesos preparados aquel cuya rfaga de CPU sea menor,
es decir, que su tiempo de ejecucin sea menor. Es del tipo no expulsiva, aunque existe
una versin expulsiva (SRTF) que cuando llega un proceso ms pequeo que el que se
est ejecutando a la cola de preparados, ste es bloqueado y pasa a estado preparado
mientras se ejecuta el nuevo proceso.
Prioridades. Cada proceso tiene asignada una prioridad ya sea por medio del sistema
operativo o por el usuario. Los procesos se dividen en distintas colas dependiendo de la
prioridad, por lo que el planificador elegir primero los procesos de la primera cola
mediante FIFO, y cuando quede vaca elegir los de la segunda cola. Esta poltica puede

ser expulsiva o no. Esto puede provocar que haya procesos que se queden sin ejecutar
debido a esta prioridad, la solucin pasara por aumentar la prioridad progresivamente a
los procesos en espera.
Turno rotatorio (Round-Robin). Adecuado para los sistemas de tiempo compartido.
Consiste en generar peridicamente una interrupcin de reloj, donde cada proceso
dispone de un cuanto de tiempo mximo (quantum), por lo que cuando termina este
tiempo, el proceso en ejecucin pasa a preparado y pasa a ejecutarse el siguiente proceso
en la cola de preparados segn FIFO.
Retroalimentacin. Otro tipo de planificacin es trabajar con diferentes colas de
preparados cada una con una poltica diferente. As si un proceso que ha pasado del
estado ejecucin al estado preparado, primero estaba en la cola 1 y ahora pasa a la cola
2, y as sucesivamente hasta llegar a la ltima cola hasta que termina.

Los procesos en Linux pueden ser divididos en tres categoras: interactivos, tiempo real o por
lotes. Los procesos de tiempo real son manejados bien por un algoritmo FIFO o turno rotatorio
(Round-Robin), ya que al ser procesos considerados como prioritarios deben de ser ejecutados
antes que los dems. Los dems procesos son manejados utilizando una planificacin RoundRobin con un sistema de envejecimiento utilizado en la planificacin de prioridades mencionada
Mientras en Windows, la planificacin de procesos se basa en la utilizacin de colas mltiples de
prioridades. Posee 23 niveles de colas clasificadas de la 31-16 en clase de tiempo real y las
dems en clase variable. Cada cola es manejada mediante Round-Robin, pero si llega un proceso
con mayor prioridad, se le es asignado el procesador.
El caso de Mac OS X es parecido al de Windows, utilizando varias colas de procesos cada una con
un nivel de prioridad. Un hilo puede pasar de una cola a otra dependiendo de los requerimientos.
Estos niveles se pueden manejar mediante llamadas al sistema. Los niveles son: normal, alta,
Kernel y tiempo real.

Potrebbero piacerti anche