Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Gestión de procesos
Ya se ha definido un proceso como un programa en ejecución para lo cual
se carga de la memoria de almacenamiento a la
memoria principal. Entiéndase que
un programa, en principio, no es más que un conjunto de instrucciones
almacenadas en
uno o varios ficheros. Es cuando se solicita su ejecución, cuando
se crea un proceso y se cargan las instrucciones en memo-
ria para su ejecución. El
proceso, pues, está ligado a la ejecución de un programa y no, simplemente, al
programa. De hecho,
un programa puede ejecutarse varias veces distintas, bien
simultáneamente o bien sucesivamente. Por ejemplo, podemos
usar la orden
cp para copiar un fichero a otra ubicación y, posteriormente, volver
a utilizarla para copiar un fichero distinto en
una ubicación distinta. Incluso,
antes de acabe la primera copia, podemos iniciar la segunda. Sea como esa,
aunque en am-
bos casos se usa el mismo programa (cp), nos hallamos
ante dos procesos distintos.
2.2.1.1. Hilos
También conocidos como hebras o directamente con el término inglés
threads . Los procesos pueden descomponerse, a su
vez, en hilos que son
secuencias de instrucciones del proceso que, aunque comparten memoria y
recursos, pueden ejecu-
tarse de manera simultánea a otra secuencia de
instrucciones del mismo proceso. Esto posibilita, cuando la máquina dispone
de
varios procesadores, que el proceso pueda repartir los hilos entre varios
procesadores y, en consecuencia, el proceso se
ejecute más rápido y aumente el
rendimiento.
2.2.1.2. Tipos
Podemos clasificar los procesos según varios criterios distintos:
Número de hilos
Monohilo
El proceso está compuesto por un único hilo.
Multihilo
El proceso está compuesto por dos o más hilos.
Responsable de su ejecución
Proceso de usuario
Son procesos ejecutados por un usuario, aunque éste no tiene por qué
coincidir con un usuario físico. Por ejemplo, la eje-
cución de un servidor web
es un proceso de usuario que, por lo general, se configura para ejecutarse
automáticamente al
arrancar el sistema. Se ejecutan en modo usuario.
Interactivo
También llamado proceso en primer plano es aquel con el que interactúan
directamente los usuarios. Un navegador o un
procesador de textos se ejecutan
en primer plano.
En segundo plano
Son procesos con los que el usuario no tiene interacción directa. Por lo
general, son procesos que en continua ejecución
brindan servicios, aunque
excepcionalmente, un usuario puede enviar un proceso a ejecutarse en segundo
plano.
Cuando brindan servicios se denominan servicio . En los sistemas
UNIX es frecuente referirse a los servicios como de-
monio .
2.2.1.3. Caracterización
Un proceso siempre está caracterizado por un PCB que contiene la identificación
y las propiedades del proceso en cada mo-
mento. Esta estructura de datos se crea
al iniciarse el proceso y se destruye al finalizar. Contiene información muy
variada
entre la que destaca:
El IDentificador.
El estado.
La prioridad.
Direcciones de memoria asignadas.
Recursos asignados.
Propietario.
etc.
2.2.1.3.1. Identificador
Es un número único que identifica inequívocamente al proceso. Una vez que el
identificador ha sido usado, no puede volver a
usarse para identificar otro
proceso, a menos, que se reinicie el sistema. Suele denominarse PID.
2.2.1.3.2. Estado
EL PCB debe también almacenar cuál es el estado del proceso en todo momento,
que puede ser:
En ejecución
Es el proceso que tiene asignado procesador y del que están ejecutándose
instrucciones. El proceso puede cambiar este
estado, porque:
Creado
Es el estado en que se ha ordenado la ejecución del proceso y se están creando
la estructura de datos necesaria y asig-
nándosele memoria. Al llevarse cabo
todos estos preliminares pasa al estado de Listo.
Zombie
En UNIX, es un proceso finalizado del que por algún motivo no se ha podido
eliminar su PCB y sigue figurando en la cola
de procesos.
Suspendido
Es un proceso detenido a petición del usuario que durante el tiempo en que
permanece en este estado, no es seleccio-
nado por el algoritmo de
planificación para pasar a ejecución. Al reactivarse pasa a Listo, aunque
el usuario tiene potes-
tad también para cancelarlo.
A los cambios entre dos estados se les denomina transición .
2.2.1.3.3. Prioridad
La prioridad define la importancia que el planificador de procesos debe
concederle a tal proceso. Cuanto más prioritario sea,
más tiempo de procesador
debería concederle el sistema operativo.
2.2.1.3.4. Propietario
El propietario del proceso suele coincidir con aquel que ha requerido la
ejecución del programa y determina cuál es el nivel de
permisos del que gozará
el proceso.
2.2.1.4. Vida
2.2.1.4.1. Creación
Un proceso se crea al invocarse un programa. Esta invocación puede deberse a
varia causas:
La creación del proceso implica que se le asigne un PID y se cree un PCB con
sus datos. Hecho esto, se añade el proceso a
la Tabla de procesos (PT),
que no es más que una tabla en la que cada entrada (fila) representa un proceso
y contiene su
identificador y un puntero a su PCB. Con ello, ya se puede
reservar la memoria necesaria para la ejecución del proceso (ins-
trucciones y
datos iniciales), se marca como listo y pasa a estar disponible para el
algoritmo de planificación le ceda el uso
del procesador.
2.2.1.4.2. Desarrollo
El proceso proseguirá su ejecución según la determine el algoritmo de
planificación (véase el epígrafe dedicado a explicar los
distintos estados
del procesos). Sólo en los momentos en los que obtiene tiempo de
procesador, avanzará en su ejecución. A
este respecto:
2.2.1.4.3. Finalización
El proceso finalizará cuando ocurra una de estas causas:
Planificación FIFO
Instante
Estado
0ms 1ms 4ms 5ms 10ms 20ms 25ms
En ejecución P1 P3 P3 P8 P4 P1
P3 P8 P8 P4 P1
Listo (cola en orden) P8 P4 P4 P1
P4 P1
Bloqueado P1
Finalizado P3 P8 P4 P1
FIFO:
9 + 27 + 30
= 22 segundos
3
SFJ:
3 + 12 + 30
= 15 segundos
3
Esta planificación es una estrategia que pretende corregir el exceso retraso que
en SFJ presentan las tareas largas. En ella,
la prioridad del proceso (su
lugar en la cola) se calcula en función tanto de su tiempo de finalización
(TF) como del tiempo que
ha esperado para ser atendido (TE) y tiene la
expresión:
TE
1 +
TF
Instante
Estado
0ms 1ms 3ms 4ms 5ms 7ms 9ms 11ms 13ms 15ms 17ms 18ms 20ms 21ms 23ms 25ms
En
ejecu- P1 P3 P8 P8 P4 P3 P1 P8 P4 P1 P8 P4 P1 P4 P4
ción
Listo P3 P8 P4 P4 P3 P1 P8 P4 P1 P8 P4 P1 P4
(cola en P8 P4 P3 P3 P1 P8 P4 P1 P8 P4 P1
orden) P4 P1 P8 P4
Blo-
P1 P1
queado
Instante
Estado
0ms 1ms 3ms 4ms 5ms 7ms 9ms 11ms 13ms 15ms 17ms 18ms 20ms 21ms 23ms 25ms
Finali-
P3 P8 P1 P4
zado
Nota:
Podría probar a construir una tabla que describa la evolución en el
estado de los procesos como la que se incluyó
en la planificación FIFO.
Ver también:
Como explicación complementaria a esta sobre algoritmos de
planificación puede verse este vídeo de Juan
V. Carrillo.