1. Procesos y flujos
Un proceso es un concepto
manejado por el sistema operativo y que referencia un programa en ejecución.
A los procesos, dependiendo
especialmente del sistema operativo utilizado, se les denomina flujos de
control, tareas, threads o hilos, según 
el contexto.
Cuando se ejecuta más de un
proceso de forma concurrente  en un
sistema, todos necesitan que el propio 
sistema les suministre una serie de recursos.  Para ello, el sistema operativo, gracias a la
UCP (Unidad Central de Proceso), se encarga de
asignar estos recursos en un orden 
adecuado y atendiendo a unas prioridades. También realiza funciones de
sincronización de  todos  los 
procesos, para que  se  ejecuten 
en  el  orden 
adecuado y según  la prioridad
decidida.
Cada vez que un programa se
convierte en proceso, es decir,  cada vez
que se ejecuta un programa, además de 
ubicar  en memoria las
instrucciones  que  lo componen y sus datos asociados, a dicho
proceso se le asocia una estructura de datos.
Esta estructura de datos, que es
única para cada proceso, identifica el proceso respecto de los demás y sirve
para controlar su correcta ejecución. Es lo que se llama el bloque de
control del proceso o BCP, y contendrá para cada proceso la
siguiente  informacion: estado actual del
proceso, identificador del proceso, prioridad del proceso, ubicación en memoria
y recursos utilizados.
2. Hebras y estados de los
procesos
Una  hebra es un punto  de 
ejecucion  de  un proceso. Un proceso tendrá siempre  una hebra, en la que corre el propio  programa, pero  puede tener más hebras. Las hebras
representan un método software para mejorar el rendimiento  y eficacia de los sistemas operativos. Las
hebras de  un mismo proceso compartirán
recursos,  como memoria, archivos,
recursos hardware, etc.
Un proceso clásico será aquel
que  solo posea  una hebra. 
Pongamos un ejemplo. Si ejecutamos el procesador de textos Word, con un
solo documento  abierto, el programa
Word  convertido  en proceso estará ejecutándose en un único
espacio de memoria, tendrá acceso a determinados archivos (galleras de
imágenes, corrector  ortográfico, etc.),
tendrá acceso al hardware (impresora, disquetera), etc. En definitiva, este
proceso, de momento,  solamente tiene una
hebra.
Si en esta situación, sin cerrar
Word, abrimos un nuevo documento, Word 
no se vuelve a cargar como proceso. Simplemente el programa,
convertido  en proceso, tendrá a su
disposición dos  hebras o hilos diferentes, de  tal forma que 
el proceso sigue  siendo  el mismo (el original).
Word  se está ejecutando una sola vez y el resto de
documentos  de texto que abramos en esta
misma sesión  de  trabajo no serán procesos propiamente
dichos.  Serán hilos o hebras del proceso
principal, que es el propio  procesador
de textos.
Antes de hablar de prioridades, y
teniendo  muy en cuenta lo comentado
anteriormente, vamos a ver los diferentes estados en los que pueden estar los
procesos.
figura 1
Básicamente los estados posibles
de un proceso, que podemos ver en la Figura 1, son
los siguientes:
En ejecución. pone  y tiene concedido el tiempo de uso de la UCP
en un instante concreto.
Preparado, en espera o activo.
Un proceso está preparado para ser 
ejecutado; es decir, está
esperando turno para poder  utilizar su
intervalo de  tiempo  y poner 
en funcionamiento sus instrucciones 
accediendo a los recursos del sistema.
Bloqueado. El proceso está
retenido;  es decir,  está bloqueado debido a causas múltiples. Una
de estas causas puede ser que  dos
procesos utilicen el mismo fichero de datos. Otra puede ser que  dos 
procesos necesiten  utilizar la
misma unidad de  CD- ROM para cargar
determinados datos, El procesador está ejecutando instrucciones  del programa que En general,  todos  los 
procesos dentro  de  cualquier 
sistema  operativo  tienen 
unas características que  los identifican.
En primer  lugar, indicaremos que  cada programa en ejecución, es decir, cada
proceso, tiene un identificador que lo discrimina de los demás. Cada proceso
tiene un número asignado por el sistema operativo que sirve precisamente para
identificar el proceso, lanzarlo a ejecución, detenerlo, cancelarlo,
reanudarlo, etc. Este identificador de proceso se nombra con la abreviatura PID.
También veremos que en cada
sistema operativo, los procesos los lanzan normalmente otros procesos. Es
decir, que cada proceso que se lanza a ejecución  depende, en la mayoría de los casos,  de otro proceso denominado proceso padre. Así,
al nuevo proceso lanzado se le denomina proceso hijo.
3. Transición de los procesos.
Una vez que un programa se ha
lanzado y se ha convertido  en proceso,
puede atravesar varias fases o estados hasta que finaliza o termina.
Cuando un proceso se lanza,
nunca  se ejecuta directamente, sino
que  se coloca en la cola de procesos en  un estado denominado preparado. Cuando
la UCP le asigna su tiempo,  el proceso
pasa de preparado a ejecución. Estos dos estados se alternarán en
caso  de que se este ejecutando más de un
proceso en el sistema.
Los cambios  de 
estado en los que  se puede
encontrar un proceso se denominan transiciones. En la Figura 2  se recogen las transiciones o cambios  de estado que pueden experimentar los
procesos.
Transición A. Ocurre  cuando el programa que  está en ejecución  necesita algún elemento, señal, dato, etc.,
para continuar ejecutándose.
Transición B. Ocurre  cuando un programa o proceso ha utilizado el
tiempo asignado por la UCP (procesador) para su ejecución  y tiene que dejar paso al siguiente proceso.
Transición C. Ocurre  cuando el proceso que está preparado pasa al
proceso de ejecución,  es decir,  cuando al proceso le llega una nueva disposición  de 
tiempo  de  la UCP para poder  ejecutarse.
Transición D. Ocurre  cuando el proceso pasa de estar bloqueado a
estar preparado, es decir, cuando el proceso recibe una orden o señal que
estaba esperando para pasar al estado de preparado y, posteriormente, tras la transición,
a estado de ejecución.
En un sistema  multiproceso 
o multihebra,  cuando un proceso o
hilo  pasa de  un esta-
do a otro (por ejemplo, de  espera a ejecución),  lo que 
se producirá es un cambio de contexto.
El cambio  de contexto puede ser parcial si se
realiza entre hilos del mismo proceso. En caso 
de que el cambio  de contexto sea
entre hilos de diferentes procesos, se producirá un  cambio de 
contexto completo, ya que  el
cambio  afectará a memoria, hardware,
ficheros comunes,  etc.
Veamos
en la Figura 3  un ejemplo de cambio  de contexto entre dos procesos:
 figura 3                                                            figura 4 
En la Figura 4 
podemos apreciar de  que forma se
ejecutan tres procesos (o hilos en sistemas operativos multihilo o multihebra),
pasando de estar activos a estar en espera, según se asignen tiempos de ejecución  de UCP a unos u otros.
figura 4
Los  diferentes 
estados  tienen  una relación 
directa  con lo  que 
vamos a  denominar
prioridades,
que  son aquellas  que 
el  administrador  del 
sistema,  o el  propio 
sistema,
asignan a cada
proceso. De ello dependerá que un proceso se ejecute  en más o me- nos tiempo.
Se pueden
establecer prioridades en función de la necesidad de ejecución de algunos
programas. Los programas que más se ejecutan, es decir,  los más necesarios, tendrán prioridad de
ejecuci6n  sobre  aquellos que se ejecutan muy de cuando en
cuando.
Es ahora cuando
hemos  de 
hablar de  la planificación. Con  esta técnica conseguimos indicar  al ordenador los procesos que deben
ejecutarse y los estados que estos deben adoptar. Gracias a los algoritmos
de planificación podemos decidir  que
proceso ha de  ejecutarse en  cada momento 
y por  que. Algunas características
de  estos 
algoritmos son  la imparcialidad,
la equidad, la eficiencia, el tiempo 
de  respuesta y el rendimiento.
Para ejecutar
un proceso, introducimos  en  el indicador de  comandos (shell en  UNIX, command.com en Windows)  el nombre 
de  un fichero ejecutable o
hacemos doble clic con el ratón sobre  el
icono que representa un programa ejecutable (por ejemplo: Explorer en
Windows). De esta forma, el sistema operativo prepara el programa a través del cargador
para lanzarlo a ejecución.


