Está en la página 1de 9

1

Luis F. Alvear, David A. lvarez


Procesos e Hilos
en los Sistemas Operativos
Windows y Linux.

ResumenSe presenta un breve resumen de cmo funcionan


los procesos e hilos tanto en los sistemas operativos Windows,
como para Linux, como se crean y como son tratados por l
microprocesador, se analiza cmo se lleva a cabo la comparticin
de los recursos del sistema, entre otras caractersticas.
Trminos para indexacinWINDOWS, LINUX, Procesos,
Hilos.

I. PROCESOS E HILOS EN WINDOWS

N la totalidad de sistemas operativos, cada proceso tiene


un espacio de direcciones y un hilo de control. Pero
existen situaciones en las cuales por el tipo de aplicaciones
que se tiene necesitan tener varios hilos de control que
compartan un espacio de direcciones, pero que se ejecuten de
manera simultnea, como si fueren procesos independientes
porque es espacio de direcciones si necesariamente lo
comparten.
Una aplicacin de un servidor que debe desactivarse en forma
ocasional, en espera de una solicitud al disco, por ejemplo
necesita de varios hilos de control, se podra ejecutar un hilo
mientras los otros estn como secundarios en espera de que
sean llamados para lograr esto se necesita trabajar
necesariamente con hilos.
VER FIGURA 1. (ANEXOS)
Como observamos en el grfico en una computadora se
estn ejecutando tres procesos los cuales tienen su contador de
programa y su pila ( conjunto de registros y de espacios de
direcciones). Los procesos no se comunican son
independientes unos con otros sin embargo a travs de las
primitivas del sistema lo pueden hacer como semforos,
monitores o mensajes.
Documento recibido el 14 de Octubre del 2009. Esta investigacin se realiz
en la Escuela Politcnica Nacional (EPN), como parte del desarrollo de la
materia Aplicaciones Distribuidas.
L. F. Alvear particip en la investigacin como miembro del curso de
Aplicaciones
Distribuidas
(telfono:
5932-2564-111:
e-mail:
luis.alvear@meer.gov.ec).
D. A. lvarez particip en la investigacin como miembro del curso de
Aplicaciones
Distribuidas
(telfono:
5932-2259-514:
e-mail:
david.alvarez@meer.gov.ec).

En el otro extremo del grafico observamos un solo proceso


con varios hilos o tambin llamados procesos ligeros, que se
ejecutan en forma estrictamente secuencial y tiene su
contador de programa y una pila para llevar un registro de su
posicin.
Los hilos pueden crear hilos hijos y se pueden bloquear en
espera de que se terminen sus llamadas al sistema, es algo

similar a lo que ocurre con un proceso en una maquina, lo


mismo ocurre con un hilo en un proceso.
Todos los hilos tienen el mismo espacio de direcciones, lo que
implica que comparten las mismas variables locales. Un
proceso pertenece a un usuario el cual consta de varios hilos
para que cooperen entre si, lo cual implica que los elementos
de un proceso son partes de los elementos de un hilo.
PROCESOS EN WINDOWS NT
El diseo de los procesos de Windows NT est dirigido por
la necesidad de dar soporte a varios entornos de sistemas
operativos. Los procesos aportados por los distintos sistemas
operativos son diferentes en varios aspectos, incluyendo los
siguientes:
Cmo se les denomina a los procesos.
Si hay hilos disponibles dentro de los procesos.
Cmo se representan los procesos.
Cmo se protegen los recursos de los procesos.
Qu mecanismos se emplean para la comunicacin y la
sincronizacin entre procesos.
Cmo estn relacionados los procesos entre s.
Por lo cual, la estructura nativa de los procesos y de los
servicios que brinda el ncleo de NT es relativamente simple
y de propsito general, permitiendo a cada subsistema emular
la estructura y la funcionalidad particular de los procesos de
un sistema operativo. Las caractersticas ms importantes de
los procesos de NT son las siguientes:
Los procesos de NT se implementan como objetos.
Un proceso ejecutable puede tener uno o ms hilos.
Los objetos proceso y los objetos hilo tienen capacidades
predefinidas de sincronizacin.
El ncleo de NT no conserva ninguna relacin entre los
procesos que crea, incluyendo las relaciones padre-hijo.
El proceso tiene una seal de acceso que le sirve para
cambiar sus propios atributos.
Tambin tienen que ver con el proceso una serie de bloques
que definen el espacio de direcciones virtuales asignado. El
proceso no puede modificar directamente estas estructuras,
sino que debe depender del administrador de memoria virtual,
quien le proporciona al proceso un servicio de asignacin de
memoria.
Finalmente, el proceso incorpora una tabla de objetos, con
los descriptores de otros objetos que conoce. Existe un
descriptor para cada hilo del proceso.
Razones para la Creacin de Procesos
Nuevo trabajo por lotes.- El sistema operativo esta provisto
de un flujo de control de trabajos por lotes, generalmente para
cinta o disco.

2
Cuando el sistema operativo se prepara para tomar un nuevo
trabajo, leer a prxima secuencia de ordenes de control de
trabajos.
Conexin interactiva.- Un usuario entra en el sistema desde
un terminal.
Creado por el SO para dar un servicio.- El sistema
operativo puede crear un proceso para llevar a cabo una
funcin de parte de un programa usuario, sin que el usuario
tenga que esperar (por ejemplo, imprimir).
Generado por un proceso existente.- Con afn de
modularidad o para aprovechar el paralelismo, un programa
de usuario puede ordenar la creacin de una serie de procesos.
Cuando un proceso es creado por el sistema operativo tras la
solicitud explicita de otro proceso, la accin se conoce como
generacin de procesos.
Cuando un proceso genera otro, el proceso generador se
conoce como proceso padre y el proceso generado es el
proceso hijo. Normalmente, estos procesos emparentados
necesitarn comunicarse y cooperar entre si.
Terminacin de procesos
En cualquier sistema informtico, debe haber alguna forma de
que un proceso pueda indicar que ha terminado.
Estados de un Proceso
Hay una cola sencilla de procesos. Cada entrada de la cola es
un puntero a un proceso en particular. Cuando un proceso se
interrumpe, se le pasa a la cola de procesos en espera. Por
otra parte, si un proceso termina o se abandona, se le descarta
del sistema (sale del sistema). En cualquier caso, el,
distribuidor selecciona entonces un proceso de la cola para
ejecutarlo.
VER FIGURA 2 (ANEXOS)
Un modelo de cinco estados
Algunos procesos en el estado de No Ejecucin estn listos
para ejecutar, mientras que otros estn bloqueados, esperando
a que termine una operacin de E/S. Los procesos esperan
cola en una lista en la cual el primero en entrar, es primero
en salir. As pues, utilizando una cola sencilla, el distribuidor
podra no seleccionar exactamente el proceso que est en el
extremo ms antiguo de la cola, por lo cual se han
incorporado algunos estados de gran utilidad.
Ejecucin: El proceso que est actualmente en ejecucin.
Listo: Proceso que est preparado para ejecutar, en cuanto se
le d la oportunidad.
Bloqueados: Proceso que no puede ejecutar hasta que se
produzca cierto suceso, como la terminacin de una operacin
de E/S.
Nuevo: Proceso que se acaba de crear, pero que an no ha
sido admitido por el sistema operativo en el grupo de procesos
ejecutables.
Terminado: Un proceso que ha sido excluido por el sistema
operativo del grupo de procesos ejecutables.
VER FIGURA 3. (ANEXOS)

Se le asocia un identificador al proceso y se construyen y


asignan algunas tablas necesarias para gestionar el proceso.
En este punto, el proceso estar en el estado Nuevo. Esto
significa que el sistema operativo ha llevado a cabo las
acciones necesarias para crear el proceso pero no se ha
comprometido an a su ejecucin.
Aqu se muestran algunos ejemplos de procesos su estado y el
tiempo de ejecucin.
VER TABLA 1 (ANEXOS)
Razones para la Suspensin de procesos
Intercambio.- El sistema operativo necesita liberar suficiente
memoria principal para cargar un proceso que est listo para
ejecutarse.
Solicitud de un usuario.- Un usuario puede querer suspender
una ejecucin de un programa con fines de depuracin o en
conexin con el uso de un recurso.
Por tiempo.- Un proceso puede ejecutarse peridicamente y
puede ser suspendido mientras espera el siguiente intervalo de
tiempo.
Elementos Tpicos de una Imagen de Proceso
Datos de Usuario.- La parte modificable del espacio de
usuario. Puede guardar datos del programa, una zona para
una pila del usuario y programas que pueden modificarse.
Pila del Sistema
Cada proceso tiene una o ms pilas (el ltimo que entra es el
primero en salir) asociadas a l. Una pila se utiliza para
almacenar los parmetros y as direcciones de retorno.
Bloque de Control de Proceso
Informacin necesaria para que el sistema operativo controle
al proceso.
Memoria Virtual en los Procesos.
La memoria constituy hace muchos aos las personas
enfrentaron por primera vez programas que eran demasiado
grandes para caber en la memoria disponible. La solucin que
normalmente se adoptaba era dividir el programa en
fragmentos, llamados superposiciones. La superposicin O
era la primera que se ejecutaba. Al terminar, esta
superposicin llamaba a otra. Algunos sistemas de
superposicin eran muy complejos, pues permitan varias
superposiciones en la memoria a la vez. Las superposiciones
se mantenan en disco y el sistema operativo las
intercambiaba con la memoria dinmicamente, segn fuera
necesario.
Aunque el trabajo real de intercambiar las superposiciones
corra por cuenta del sistema, la tarea de dividir el programa
en fragmentos tena que ser efectuada por el programador. La
divisin de programas grandes en fragmentos modulares
pequeos consuma tiempo y era tediosa. No pas mucho
tiempo antes de que a alguien se le ocurriera una forma de
dejar todo el trabajo a la computadora.
La idea en que se basa la memoria virtual es que el tamao
combinado del programa, los datos y la pila puede exceder la

3
cantidad de memoria fsica disponible para l. El sistema
operativo mantiene en la memoria principal las partes del
programa que actualmente se estn usando, y el resto en el
disco.
La memoria virtual tambin puede funcionar en un sistema de
multiprogramacin, manteniendo
Segmentos de muchos programas en la memoria a la vez.
Mientras un programa est esperando que se traiga a la
memoria una de sus partes, est esperando E/S y no puede
ejecutarse, as que puede otorgarse la CPU a otro proceso, lo
mismo que en cualquier otro sistema de multiprogramacin.
Administracin de memoria con mapas de bits
Cuando la memoria se asigna dinmicamente, el sistema
operativo debe administrarla. En trminos
generales, hay dos formas de contabilizar la utilizacin de
memoria: mapas de bits y listas libres. En esta seccin y en la
siguiente examinaremos estos dos mtodos por tumo.
Con un mapa de bits, la memoria se divide en unidades de
asignacin, tal vez slo de unas cuantas palabras o quiz de
varios kilobytes. A cada unidad de asignacin corresponde un
bit del mapa de bits, que es 0 si la unidad est libre y 1 si est
ocupada (o viceversa). se muestra una parte de la memoria y
el mapa de bits correspondiente.
Una parte de la memoria con cinco procesos y tres agujeros.
Las marcas indican las unidades de asignacin de memoria.
Las regiones sombreadas (O en el mapa de bits) estn libres,
(b) El mapa de bits correspondiente, (e) La misma
informacin en forma de lista.
El tamao de la unidad de asignacin es una cuestin de
diseo importante. Cuanto menor sea la unidad de
asignacin, mayor ser el mapa de bits. Sin embargo, incluso
con una unidad de asignacin de slo cuatro bits, 32 bits de
memoria slo requerirn un bit del mapa. Una memoria de
32n bits usar n bits de mapa, y el mapa slo ocupar 1/33 de
la memoria. Si se escoge una unidad de asignacin grande, el
mapa de bits ser ms pequeo, pero podra desperdiciarse
una cantidad apreciable de memoria en la ltima unidad si el
tamao del proceso no es un mltiplo exacto de la unidad de
asignacin.
Un mapa de bits ofrece un mtodo sencillo para contabilizar
las palabras en una cantidad fija de
memoria, porque el tamao del mapa de bits depende slo del
tamao de la memoria y del tamao de la unidad de
asignacin. El problema principal que presenta es que una
vez que se ha decidido traer a la memoria un proceso de k
unidades, el administrador de memoria debe buscar en el
mapa de bits una serie de k bits en O consecutivos. La
bsqueda de series de una longitud dada en un mapa de bits
es una operacin lenta (porque la serie puede cruzar fronteras
de palabra en el mapa); ste es un argumento en contra de los
mapas de bits.
Administracin de memoria con listas enlazadas
Otra forma de contabilizar la memoria es mantener una lista
enlazada de segmentos de memoria libres y asignados, donde
un segmento es un proceso o bien un agujero entre dos
procesos. La memoria se representa en la como lista enlazada
de segmentos. Cada entrada de la lista especifica un agujero

(H) o un proceso (P), la direccin en la que principia, la


longitud y un apuntador a la siguiente entrada.
En este ejemplo, la lista de segmentos se mantiene ordenada
por direccin. Este ordenamiento tiene la ventaja de que
cuando un proceso termina o es intercambiado a disco, es
fcil actualizar la lista.
Un proceso que termina normalmente tiene dos vecinos
(excepto cuando est en el tope o la base de la memoria).
stos pueden ser procesos o agujeros, dando lugar a las cuatro
combinaciones de la actualizacin de la lista requiere la
sustitucin de una P por una H. En las dos entradas se funden
para dar una sola, y el tamao de la lista se reduce en una
entrada. En las tres entradas se funden y dos elementos se
eliminan de la lista. Puesto que la ranura de tabla de procesos
para el proceso que va a terminar normalmente apunta a la
entrada del proceso mismo en la lista,
puede ser ms recomendable tener una lista doblemente
enlazada, en lugar de la lista con un solo enlace . Esta
estructura facilita la localizacin de la entrada anterior para
determinar si es posible
una fusin.
Cuatro combinaciones de vecinos para el proceso que
termina, X. Si los procesos y agujeros se mantienen en una
lista ordenada por direccin, se pueden usar varios algoritmos
para asignar memoria a un proceso recin creado o trado a la
memoria. Suponemos que el administrador de memoria sabe
cunta memoria debe asignar. El algoritmo ms sencillo es el
de primer ajuste. El administrador de memoria examina la
lista de segmentos hasta encontrar un agujero con el tamao
suficiente. A continuacin, el agujero se divide en dos
fragmentos, uno para el proceso y otro para la memoria
desocupada, excepto en el poco probable caso de que el ajuste
sea exacto. El algoritmo de primer ajuste es rpido porque la
bsqueda es la ms corta posible.
Una variante menor del primer ajuste es el siguiente ajuste.
Este algoritmo funciona igual que el de primer ajuste, excepto
que toma nota de dnde est cada vez que encuentra un
agujero apropiado. La siguiente vez que se invoque, el
algoritmo comenzar a buscar en la lista a partir del lugar
donde se qued
la ltima vez, en lugar de comenzar por el principio, como
hace el primer ajuste. Simulaciones ejecutadas demuestran
que el siguiente ajuste ofrece un rendimiento ligeramente
peor que el primer ajuste.
Otro algoritmo bien conocido es el de mejor ajuste, que
examina toda la lista y toma el agujero
ms pequeo que es adecuado. En lugar de partir un agujero
grande que podra necesitarse despus, el mejor ajuste trata de
encontrar un agujero con un tamao cercano al que se
necesita.
El mejor ajuste es ms lento que el primer ajuste porque debe
examinar toda la lista cada vez que
se invoca. Lo que resulta sorprendente es que tambin
desperdicia ms memoria que el primer ajuste o el siguiente
ajuste porque tiende a llenar la memoria de pequeos agujeros
intiles. En promedio, el primer ajuste g nera agujeros ms
grandes.
A fin de sortear el problema de partir un agujero con un
tamao casi igual al requerido para obtener un rea asignada

4
al proceso y un agujero diminuto, podramos considerar el
peor ajuste, es decir, tomar siempre el agujero ms grande
disponible, de modo que el agujero sobrante tenga un tamao
suficiente para ser til. Las simulaciones han demostrado que
el peor ajuste tampoco es una idea muy buena.

II.PROCESOS E HILOS EN LINUX

El recurso ms preciado en el sistema es la CPU; Linux es


un sistema operativo multiproceso. Y su principal objetivo es
tener siempre un proceso ejecutndose en cada CPU del
sistema en todo instante, para maximizar el aprovechamiento
del uso de la CPU. Si existen ms procesos que CPUs (lo
comn es este caso), la cola de los procesos tiene que esperar
su turno hasta que una CPU quede libre para que ellos
ejecutarse. El multiproceso es una idea no muy compleja; un
proceso se ejecuta hasta que tenga que esperar, normalmente
por algn recurso del sistema; cuando obtenga dicho recurso,
puede ejecutarse otra vez. En un sistema uniproceso, por
ejemplo DOS, la CPU estara simplemente esperando esttica,
y el tiempo que no realiza ninguna Tarea se desaprovechara.

intercambiables en Linux). El vector task es una lista de


punteros a estructuras task_struct en el sistema. Esto quiere
decir que el mximo nmero de procesos en el sistema est
limitado por el tamao del vector task; por defecto tiene 512
entradas. A medida que se crean procesos, se crean nuevas
estructuras task_struct a partir de la memoria del sistema y se
aaden al vector task. Para encontrar fcilmente el proceso en
ejecucin, hay un puntero (current) que apunta a este proceso.
Linux soporta procesos de tiempo real as como procesos
normales. Estos procesos tienen que reaccionar muy
rpidamente a sucesos externos (de ah el trmino tiempo
real') y reciben un trato diferente del planificador. La
estructura task_struct es bastante grande y compleja, pero sus
campos se pueden dividir en reas funcionales:
-State
(Estado) A medida que un proceso se ejecuta, su estado
cambia segn las circunstancias. Los procesos en Linux
tienen los siguientes estados:
- Running
(Preparado) El proceso se est ejecutando (es el proceso en
curso en el sistema) o est listo para ejecutarse (est
esperando a ser asignado a una de las CPUs del sistema).

En un sistema multiproceso se mantienen varios procesos


en memoria al mismo tiempo. Cuando un proceso tiene que
pasar a un estado de espera, el sistema operativo le quita la
CPU a ese proceso y se la da a otro proceso que le
corresponda o que tenga mayor prioridad. El planificador se
encarga de elegir el proceso ms apropiado el cul se deba
ejecutar a continuacin. Linux usa diferentes estrategias de
organizacin del tiempo de la CPU para tratando de hacerlo
de la mejor manera (lo reparte de manera justa).

- Waiting
(Esperando) El proceso est esperando algn suceso o por
algn recurso. Linux diferencia dos tipos de procesos;
interrumpibles e ininterrumpibles. Los procesos en espera
interrumpibles pueden ser interrumpidos por seales
mientras que los ininterrumpibles dependen directamente
de sucesos de hardware y no se pueden interrumpir en
ningn caso.

Hablar tanto de Procesos como de Hilos, es hablar de dos


conceptos muy similares y relacionados entre s, entre los
cuales existen pequeas diferencias nada ms.

- Stopped
(Detenido) El proceso ha sido detenido, normalmente
porque ha recibido una seal. Si se estn depurando errores
en un proceso, ste puede estar detenido.

Uno de los principales motivos de la existencia de la


informtica es imitar el comportamiento de la mente humana.
En un comienzo surgieron los algoritmos, que no son ms que
una secuencia de pasos para conseguir un objetivo, a partir de
los cuales surgi el pensamiento de por qu no hacer varias
cosas a la vez y es precisamente de esta inquietud de donde
surgen los hilos o threads.

Zombie
Es un proceso que ya ha terminado pero cuya estructura
task_struct permanece an en el vector task. Se suele
mantener para que el padre pueda extraer informacin til de
l.

Si queremos que nuestro programa empiece a ejecutar


varias cosas "a la vez", tenemos dos opciones. Por una parte
podemos crear un nuevo proceso y por otra, podemos crear un
nuevo hilo de ejecucin (un thread).
En realidad nuestro ordenador, salvo que tenga varias
CPUs, no ejecutar varias tareas a la vez esto se refiere a que
el sistema operativo, es este caso Linux, ir ejecutando los
threads segn la poltica del mismo, siendo lo mas usual
mediante rodajas de tiempo muy rpidas que dan la sensacin
de simultaneidad.
Para que Linux pueda gestionar los procesos en el sistema,
cada proceso se representa por una estructura de datos
task_struct (las tareas (task) y los procesos son trminos

En la Figura 4 (ANEXOS) podemos apreciar el diagrama de


estados, sobre los cuales se puede encontrar un proceso en el
Sistema Operativo Linux.
Informacin de la Planificacin de Tiempo de la CPU
El planificador necesita esta informacin para hacer una
decisin justa sobre qu proceso en el sistema se merece ms
ejecutarse a continuacin.
Identificadores
Cada proceso en el sistema tiene un identificador de proceso.
El identificador no es un ndice en el vector task, es
simplemente un nmero. Cada proceso tambin tiene
identificadores de usuario y grupo, que se usan para controlar
el acceso de este proceso a los ficheros y los dispositivos del
sistema.

Enlaces
En un sistema de Linux ningn proceso es independiente de
otro proceso. Cada proceso en el sistema, excepto el proceso
inicial (init), tiene un proceso padre. Los procesos nuevos no
se crean, se copian, o ms bien se clonan de un proceso
existente. Cada estructura task_struct que representa un
proceso mantiene punteros a su proceso padre y sus hermanos
(los procesos con el mismo proceso padre) as como a sus
propios procesos hijos. Se pueden ver las relaciones entre los
procesos en ejecucin en un sistema Linux con la orden
pstree:
init(1)-+-crond(98)
|-emacs(387)
|-gpm(146)
|-inetd(110)
|-kerneld(18)
|-kflushd(2)
|-klogd(87)
|-kswapd(3)
|-login(160)---bash(192)---emacs(225)
|-lpd(121)
|-mingetty(161)
|-mingetty(162)
|-mingetty(163)
|-mingetty(164)
|-login(403)---bash(404)---pstree(594)
|-sendmail(134)
|-syslogd(78)
`-update(166)
Adems, todos los procesos en el sistema tambin estn en
una doble lista encadenada cuya raz es la estructura
task_struct del proceso init. Esta lista permite al ncleo de
Linux observar cada proceso del sistema.
Tiempos y Temporizadores
El ncleo mantiene conocimiento de la hora de creacin de
los procesos as como el tiempo de CPU que consume a lo
largo de su vida. En cada paso del reloj, el ncleo actualiza la
cantidad de tiempo en jiffies que el proceso en curso ha usado
en los modos sistema y usuario. Linux tambin soporta
temporizadores de intervalo especficos a cada proceso; los
procesos pueden usar llamadas del sistema para instalar
temporizadores para enviarse seales a s mismos cuando el
temporizador acaba. Estos temporizadores pueden ser de una
vez, o peridicos.
Sistema de Ficheros
Los procesos pueden abrir y cerrar ficheros y la estructura
task_struct de un proceso contiene punteros a los descriptores
de cada fichero.
Contexto Especfico del Procesador
Un proceso se puede ver como la suma total del estado
actual del sistema. Cuando un proceso se ejecuta, est
utilizando los registros, las pilas, etc, del procesador. Todo
esto es el contexto del procesador, y cuando se suspende un
proceso, todo ese contenido especfico de la CPU se tiene que
salvar en la estructura task_struct del proceso. Cuando el

planificador reinicia un proceso, su contexto se pasa a la CPU


para seguir ejecutndose.

Planificacin
Todos los procesos se ejecutan parcialmente en modo
usuario y parcialmente en modo sistema. La manera como el
hardware soporta estos modos vara, pero en general hay un
mecanismo seguro para pasar de modo usuario a modo
sistema y viceversa. El modo usuario tiene muchos menos
privilegios que el modo sistema. Cada vez que un proceso
hace una llamada de sistema, cambia de modo usuario a
modo sistema y sigue ejecutndose. Llegado este punto, el
ncleo se est ejecutando por el proceso.
En Linux, un proceso no puede imponer su derecho sobre otro
proceso que se est ejecutando para ejecutarse l mismo. Cada
proceso decide dejar la CPU que est usando cuando tiene que
esperar un suceso en el sistema. Por ejemplo, un proceso
puede estar esperando a leer un carcter de un fichero. Esta
espera sucede dentro de la llamada de sistema, en modo
sistema; el proceso utiliza una funcin de una biblioteca para
abrir y leer el fichero y la funcin, a su vez, hace una llamada
de sistema para leer bites del fichero abierto. En este caso el
proceso en espera ser suspendido y se elegir a otro proceso
para ejecutarse.
Los procesos siempre estn haciendo llamadas de sistema y
por esto necesitan esperar a menudo. An as, si un proceso se
ejecuta hasta que tenga que esperar, puede ser que llegue a
usar una cantidad de tiempo de CPU desproporcionada y por
esta razn Linux usa planificacin con derecho preferente.
Usando esta tcnica, se permite a cada proceso ejecutarse
durante poco tiempo, 200 ms, y cuando ese tiempo ha pasado,
otro proceso se selecciona para ejecutarse y el proceso
original tiene que esperar un tiempo antes de ejecutarse otra
vez. Esa pequea cantidad de tiempo se conoce como una
porcin de tiempo. El planificador tiene que elegir el proceso
que ms merece ejecutarse entre todos los procesos que se
pueden ejecutar en el sistema. Un proceso ejecutable es aquel
que est esperando solamente a una CPU para ejecutarse, es
decir, est en estado de Preparado (Running).
Linux usa un algoritmo razonablemente simple para
planificar las prioridades y elegir un proceso entre los
procesos que hay en el sistema. Cuando ha elegido un nuevo
proceso para ejecutar, el planificador salva el estado del
proceso en curso, los registros especficos del procesador y
otros contextos en la estructura de datos task_struct. Luego
restaura el estado del nuevo proceso (que tambin es
especfico a un procesador) para ejecutarlo y da control del
sistema a ese proceso. Para que el planificador asigne el
tiempo de la CPU justamente entre los procesos ejecutables en
el sistema, el planificador mantiene cierta informacin en la
estructura task_struct de cada proceso:
policy (poltica)
Esta es la poltica de planificacin que se aplicar a este
proceso. Hay dos tipos de procesos en Linux, normales y
de tiempo real. Los procesos de tiempo real tienen una
prioridad ms alta que los otros. Si hay un proceso de
tiempo real listo para ejecutarse, siempre se ejecutar
primero. Los procesos de tiempo real pueden tener dos

6
tipos de polticas: round robin (en crculo) y first in
first out (el primero en llegar es el primero en salir). En
la planificacin round robin, cada proceso de tiempo
real ejecutable se ejecuta por turnos, y en la planificacin
first in, first out cada proceso ejecutable se ejecuta en
el orden que estn en la cola de ejecucin y el orden no se
cambia nunca.
priority (prioridad)
Esta es la prioridad esttica que el planificador dar a
este proceso. Tambin es la cantidad de tiempo (en jiffies)
que se permitir ejecutar a este proceso una vez que sea
su turno de ejecucin. Se puede cambiar la prioridad de
un proceso mediante una llamada de sistema y la orden
renice.
rt_priority (prioridad de tiempo real)
Linux soporta procesos de tiempo real y estos tienen una
prioridad ms alta que todos los otros procesos en el
sistema que no son de tiempo real. Este campo permite al
planificador darle a cada proceso de tiempo real una
prioridad relativa. La prioridad del proceso de tiempo
real se puede alterar mediante llamadas de sistema.
counter (contador)
Esta es la cantidad de tiempo (en jiffies) que se permite
ejecutar a este proceso. Se decrementa a cada paso de
reloj y cuando el proceso se ejecuta y lo consume por
completo se iguala a priority.
El planificador se ejecuta desde distintos puntos dentro
del ncleo. Se ejecuta despus de poner el proceso en curso en
una cola de espera y tambin se puede ejecutar al finalizar
una llamada de sistema, exactamente antes de que un proceso
vuelva al modo usuario despus de estar en modo sistema.
Tambin puede que el planificador se ejecute porque el
temporizador del sistema haya puesto el contador counter del
proceso en curso a cero. Cada vez que el planificador se
ejecuta, hace lo siguiente:
Proceso en curso
El proceso en curso tiene que ser procesado antes de
seleccionar a otro proceso para ejecutarlo.
Si la poltica de planificacin del proceso en curso es
round robin entonces el proceso se pone al final de la cola
de ejecucin.
Si la tarea es INTERRUMPIBLE y ha recibido una seal
desde la ltima vez que se puso en la cola, entonces su
estado pasa a ser RUNNING (Preparado).
Si el proceso en curso a consumido su tiempo, su estado
pasa a ser RUNNING (Preparado).
Si el proceso en curso est RUNNING (Preparado),
permanecer en ese estado.
Los procesos que no estn ni RUNNING (Preparados) ni
sean INTERRUMPIBLE se quitan de la cola de
ejecucin. Esto significa que no se les considerar para
ejecucin cuando el planificador busque un proceso para
ejecutar.
Seleccin de un proceso

El planificador mira los procesos en la cola de ejecucin


para buscar el que ms se merezca ejecutarse. Si hay
algn proceso de tiempo real (aquellos que tienen una
poltica de planificacin de tiempo real) entonces stos
recibirn un mayor peso que los procesos ordinarios. El
peso de un proceso normal es su contador counter pero
para un proceso de tiempo real es su contador counter
ms 1000. Esto quiere decir que si hay algn proceso de
tiempo real que se pueda ejecutar en el sistema, estos se
ejecutarn antes que cualquier proceso normal. El
proceso en curso, que ha consumido parte de su porcin
de tiempo (se ha decrementado su contador counter) est
en desventaja si hay otros procesos con la misma
prioridad en el sistema; esto es lo que se desea. Si varios
procesos tienen la misma prioridad, se elige el ms
cercano al principio de la cola. El proceso en curso se
pone al final de la cola de ejecucin. En un sistema
equilibrado con muchos procesos que tienen las mismas
prioridades, todos se ejecutarn por turnos. Esto es lo que
conoce como planificacin Round Robin (en crculo). Sin
embargo, como los procesos normalmente tienen que
esperar a obtener algn recurso, el orden de ejecucin
tiende a verse alterado.
Cambiar procesos
Si el proceso ms merecedor de ejecutarse no es el
proceso en curso, entonces hay que suspenderlo y poner
el nuevo proceso a ejecutarse. Cuando un proceso se est
ejecutando, est usando los registros y la memoria fsica
de la CPU y del sistema. Cada vez que el proceso llama a
una rutina le pasa sus argumentos en registros y puede
poner valores salvados en la pila, tales como la direccin
a la que regresar en la rutina que hizo la llamada. As,
cuando el planificador se ejecuta, se ejecuta en el
contexto del proceso en curso. Estar en un modo
privilegiado (modo ncleo) pero an as el proceso que se
ejecuta es el proceso en curso. Cuando este proceso tiene
que suspenderse, el estado de la mquina, incluyendo el
contador de programa (program counter, PC) y todos los
registros del procesador se salvan en la estructura
task_struct. A continuacin se carga en el procesador el
estado del nuevo proceso. Esta operacin es dependiente
del sistema; diferentes CPUs llevan esta operacin a cabo
de maneras distintas, pero normalmente el hardware
ayuda de alguna manera.
El cambio del contexto de los procesos se lleva a cabo al
finalizar el planificador. Por lo tanto, el contexto
guardado para el proceso anterior es una imagen
instantnea del contexto del hardware del sistema tal y
como lo vea ese proceso al final del planificador.
Igualmente, cuando se carga el contexto del nuevo
proceso, tambin ser una imagen instantnea de cmo
estaban las cosas cuando termin el planificador,
incluyendo el contador de programa (program counter,
PC) de este proceso y los contenidos de los registros.
Es importante diferenciar entre el algoritmo de planificacin
propiamente dicho, y el cambio de contexto:
- El algoritmo de planificacin nicamente tiene que decidir
cul ser el siguiente proceso que utilizar el procesador.
Se elige un proceso ganador entre todos los que no estn
bloqueados.

7
- El cambio de contexto es el mecanismo que efectivamente
pone en ejecucin a un proceso. Esta operacin es muy
dependiente de la arquitectura del procesador sobre el
que se est ejecutando, por lo que se tiene que realizar a
bajo nivel (en ensamblador).

Procesos
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.
En un sistema Linux, que como ya sabemos es multitarea
(sistema operativo multihilo), se pueden estar ejecutando
distintas acciones a la par, y cada accin es un proceso que
consta de uno o ms hilos, memoria de trabajo compartida
por todos los hilos e informacin de planificacin. Cada hilo
consta de instrucciones y estado de ejecucin.
Cuando ejecutamos un comando en el shell, sus instrucciones
se copian en algn sitio de la memoria RAM del sistema para
ser ejecutadas. Cuando las instrucciones ya cumplieron su
cometido, el programa es borrado de la memoria del sistema,
dejndola libre para que ms programas se puedan ejecutar a
la vez. Por tanto cada uno de estos programas son los
procesos.
Los procesos son creados y destruidos por el sistema
operativo, 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 definitiva, 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.

Hilos
Los hilos son similares a los procesos ya que ambos
representan una secuencia simple de instrucciones ejecutada
en paralelo con otras secuencias. Los hilos son una forma de
dividir un programa en dos o ms tareas que corren
simultneamente, compitiendo, en algunos casos, por la CPU.
La diferencia ms significativa entre los procesos y los hilos,
es que los primeros son tpicamente independientes, llevan
bastante informacin de estados, e interactan slo a travs de
mecanismos de comunicacin dados por el sistema. Por otra
parte, los hilos generalmente comparten la memoria, es decir,
acceden a las mismas variables globales o dinmicas, por lo
que no necesitan costosos mecanismos de comunicacin para
sincronizarse. Por ejemplo un hilo podra encargarse de la
interfaz grfica (iconos, botones, ventanas), mientras que otro
hace una larga operacin internamente. De esta manera el
programa responde ms gilmente a la interaccin con el
usuario.

En sistemas operativos que proveen facilidades para los hilos,


es ms rpido cambiar de un hilo a otro dentro del mismo
proceso, que cambiar de un proceso a otro.
Es posible que los hilos requieran de operaciones atmicas
para impedir que los datos comunes sean cambiados o ledos
mientras estn siendo modificados. El descuido de esto puede
generar estancamiento.
La Tabla 2 (ANEXOS) resume algunas diferencias entre
procesos e hilos, y la Figura 5 (ANEXOS) muestra una
representacin de los conceptos proceso e hilo. Ntese cmo
en la figura 5 (ANEXOS) se puede apreciar que los procesos
son entidades independientes, mientras que los hilos son
entidades relacionadas por la seccin de datos en el interior
del proceso que los contiene.

REFERENCIAS
[1]

http://www.monografias.com/trabajos26/estados-proceso-hilos/estadosproceso-hilos.shtml#proceslinux
[2] http://www.chuidiang.com/clinux/procesos/procesoshilos.php
[3] http://www.ldc.usb.ve/~figueira/Cursos/AdminRedesTelematica/Material/p
rocesos.pdf
[4] http://www.esdebian.org/linux/28621/los-procesos-linux
[5] http://sopa.dis.ulpgc.es/ii-dso/leclinux/procesos/fork/LEC7_FORK.pdf
[6] http://sopa.dis.ulpgc.es/iidso/leclinux/procesos/planificador/LEC6_CHEDULER.pdf.
[7] http://sopa.dis.ulpgc.es/iidso/leclinux/procesos/planificador/LEC6_SCHEDULER.pdf
[8] TANENBAUM S. Andrew, WOODHULL Albert, Sistemas Operativos
Distribuidos, Editorial Pretince Hall Hispanoamrica S.A.
[9] TANENBAUM S. Andrew, WOODHULL Albert, Sistemas Operativos
Diseo e Implementacin, Editorial Pretince Hall Hispanoamrica S.A,
Segunda Edicin.
[10] STALLINS Willian, Sistemas Operativos, Editorial Pretince Hall
Hispanoamrica S.A;Segunda Edicin.

Luis F. Alvear
Naci en Quito-Ecuador el 27 de Junio
de 1987.
Realiz sus estudios
secundarios en el Colegio Particular
Tcnico Industrial Hermano Miguel,
donde obtuvo el ttulo de Bachiller en
Ciencias y Auxiliar en Manejo de
Equipos de Cmputo en el ao 2004.
En el mismo ao ingres a la Escuela Politcnica Nacional
(EPN), donde actualmente estudia la carrera de Ingeniera
Electrnica y Redes de la Informacin.
David A. lvarez
Naci en Quito el 26 de Marzo de 1987.
Realiz sus estudios secundarios en el
colegio Particular Tcnico Hermano
Miguel de la ciudad de Latacunga, donde
obtuvo el bachillerato. En el 2004 ingres a
la Escuela Politcnica Nacional.

ANEXOS:

Figura 1.

Figura 2.

Figura 3.

Figura 4. Estados de un proceso en Linux

Figura 5. Relacin entre procesos e hilos

Tabla 1.

Tabla 2
Diferencias entre Procesos e Hilos
PROCESOS
HILOS
Manejados por el S.O.
Manejados por los procesos
Independientes
de
otros Relacionados con otros
procesos.
hilos del mismo proceso.
Memoria privada, se necesitan Memoria compartida con el
mecanismos de comunicacin resto de hilos que forman el
para compartir informacin.
proceso.

También podría gustarte