Вы находитесь на странице: 1из 8

GESTIN DE PROCESOS E HILOS EN LINUX

TAREAS LINUX

Un proceso, o tarea, en Linux se representa por una estructura de datos task struot, que contiene informacin de diversas
categoras:

Estado. El estado de ejecucin del proceso (ejecutando, listo, suspendido, detenido, zombi). Pasaremos a describirlo
posteriormente.

Informacin de planificacin. Informacin necesitada por Linux para planificar procesos. Un proceso puede ser normal
o de tiempo real y tener una prioridad. Los procesos de tiempo real se planifican antes que los procesos normales y, dentro
de cada categora, se pueden usar prioridades relativas. Hay un contador que lleva la cuenta de la cantidad de tiempo que
un proceso ha estado ejecutando.

Identificadores. Cada proceso tiene un identificador nico de proceso y tambin tiene identificadores de usuario y grupo.
Un identificador de usuario se utiliza para asignar privilegios de acceso a recursos a un grupo de procesos.

Comunicacin entre procesos. Linux soporta el mecanismo IPC encontrado en UNIX SVR.

Enlaces. Cada proceso incluye un enlace a sus padres, enlaces a sus hermanos (procesos con el mismo padre), y enlaces
a todos sus hijos.

Tiempos y temporizadores. Incluye el tiempo de creacin del proceso y la cantidad de tiempo de procesador consumido
por el proceso hasta el momento. Un proceso tambin puede tener asociado uno o ms temporizadores. Un proceso
define un temporizador a travs de una llamada al sistema; como resultado se manda una seal al proceso cuando finaliza
el temporizador. Un temporizador puede ser de un solo uso o peridico.

Sistema de archivos. Incluye punteros a cualquier archivo abierto por este proceso, as como punteros a los directorios
actuales y raz para este proceso.

Espacio de direcciones. Define el espacio de direcciones virtual asignado a este proceso.


Contexto especfico del procesador. La informacin de los registros y de la pila que constituyen el contexto de este
proceso.

Ejecutando. Este valor de estado se corresponde con dos estados. Un proceso Ejecutando puede estar ejecutando o est
listo para ejecutar.

Interrumpible. Es un estado bloqueado, en el que el proceso est esperando por un evento, tal como la finalizacin de
una operacin de E/S, la disponibilidad de un recurso o una seal de otro proceso.

Ininterrumpible. ste es otro estado bloqueado. La diferencia entre este estado y el estado Interrumpible es que en el
estado Ininterrumpible un proceso est esperando directamente sobre un estado del hardware y por tanto no manejar
ninguna seal.

Detenido. El proceso ha sido parado y slo puede ser reanudado por la accin positiva de otro proceso. Por ejemplo, un
proceso que est siendo depurado se puede poner en estado Parado.

Zombie. El proceso se ha terminado pero, por alguna razn, todava debe tener su estructura de tarea en la tabla de
procesos.

HILOS LINUX

Los sistemas UNIX tradicionales soportan un solo hilo de ejecucin por proceso, mientras que los sistemas UNIX modernos
suelen proporcionar soporte para mltiples hilos de nivel de ncleo por proceso. Como con los sistemas UNIX
tradicionales, las versiones antiguas del ncleo de Linux no ofrecan soporte multihilo. En su lugar, las aplicaciones deban
escribirse con un conjunto de funciones de biblioteca de nivel de usuario. La ms popular de estas bibliotecas se conoce
como biblioteca pthread (POSIX pthread), en donde se asociaban todos los hilos en un nico proceso a nivel de ncleo.
Hemos visto que las versiones modernas de UNIX ofrecen hilos a nivel de ncleo. Linux proporciona una solucin nica en
la que no diferencia entre hilos y procesos. Utilizando un mecanismo similar al de los procesos ligeros de Solaris, los hilos
de nivel de usuario se asocian con procesos de nivel de ncleo. Mltiples hilos de nivel de usuario que constituyen un
nico pro-ceso de nivel de usuario, se asocian con procesos Linux a nivel de ncleo y comparten el mismo ID de grupo.
Esto permite a estos procesos compartir recursos tales como archivos y memorias y evitar la necesidad de un cambio de
contexto cuando el planificador cambia entre procesos de los mismos grupos. En Linux se crea un nuevo proceso copiando
los atributos del proceso actual. Un nuevo proceso se puede donar de forma que comparte sus recursos, tales como
archivos, manejadores de seales y memoria virtual. Cuando los dos procesos comparten la misma memoria virtual,
funcionan como hi-los de un solo proceso. Sin embargo, no se define ningn tipo de estructura de datos independiente
para un hilo. En lugar del mandato normal fork( ), los procesos se crean en Linux usando el mandato clone ( ). Este mandato
incluye un conjunto de flags como argumentos. La llamada al sistema tradicional fork( ) se implementa en Linux con la
llamada al sistema done ( ) sin ningn flag. Cuando el ncleo de Linux realiza un cambio de un proceso a otro, verifica si la
direccin del directorio de pginas del proceso actual es la misma que en el proceso a ser planificado. Si lo es, estn
compartiendo el mismo espacio de direcciones, por lo que el cambio de contexto consiste bsicamente en saltar de una
posicin del cdigo a otra. Aunque los procesos donados que son parte del mismo grupo de procesos, pueden compartir
el mismo espacio de memoria no pueden compartir la misma pila de usuario. Por tanto, la llamada done ( ) crea espacios
de pila separados para cada proceso.

Flags de la llamada done( ) de Linux.

CLONE_CLEARID Borrar el ID de tarea. El padre no quiere el envo de la seal SIGCHLD en su finalizacin.


CLONE_DETACHED El padre no quiere el envo de la seal SIGCHLD en su finalizacin.
CLONE_FILES Compartir la tabla que identifica los archivos abiertos.
CLONE_FS Compartir la tabla que identifica al directorio raz y al directorio actual de trabajo, as
como el valor de la mscara de bits utilizada para enmascarar los permisos iniciales de un
nuevo archivo.
CLONE_IDLETASK Establecer el PID a cero, que se refiere a la tarea idle. La tarea idle se utiliza cuando todas
las tareas disponibles estn bloqueadas esperando por recursos.
CLONE_NEWNS Crear un nuevo espacio de nombres para el hijo.
CLONE_PARENT El llamante y la nueva tarea comparten el mismo proceso padre.
CLONE_PTRACE Si el proceso padre est siendo trazado, el proceso hijo tambin lo har.
CLONE_SETTID Escribir eI TID en el espacio de usuario.
CLONE_SETTLS Crear un nuevo TLS para el hijo.
CLONE_SIGHAND Compartir la tabla que identifica los manejadores de seales.
CLONE_SYSVSEM Compartir la semntica SEM_UNDO de System V.
CLONE_THREAD Insertar este proceso en el mismo grupo de hilos del padre. Si est activado, el padre no
se planifica para ejecucin hasta que el hijo invoque la llamada al sistema execve().
CLONE_VFORK Si este flag est activado, fuerza de forma implcita a CLONE_PARENT.
CLONE_VM Compartir el espacio de direcciones (descriptor de memoria y todas las tablas de
pginas).

GESTIN DE HILOS Y SMP EN WINDOWS

El diseo de un proceso Windows est limitado por la necesidad de proporcionar soporte a diversos entornos de sistemas
operativos. Los procesos soportados por diferentes entornos de sistemas operativos se diferencian en varias cosas,
incluyendo las siguientes:

La denominacin de los procesos.

Si se proporcionan hilos con los procesos.

Cmo se representa a los procesos.

Cmo se protege a los recursos de los procesos.

Qu mecanismos se utilizan para la comunicacin y sincronizacin entre procesos.

Cmo se relacionan los procesos entre s.

Como consecuencia, las estructuras de los procesos y los servicios proporcionados por el ncleo de Windows son
relativamente sencillos y de propsito general, permitiendo a cada subsistema del sistema operativo que emule una
estructura y funcionalidad particular del proceso. Algunas caractersticas importantes de los procesos Windows son las
siguientes:

Los procesos Windows estn implementados como objetos.

Un proceso ejecutable puede contener uno o ms hilos.

Tanto el objeto proceso como el objeto hilo, tienen funcionalidades de sincronizacin preconstruidas.

La siguiente figura est basada en una de [SOL000], muestra la forma en la que un proceso se asocia a los recursos que
controla o utiliza. A cada proceso se le asigna un testigo (token) de seguridad de acceso, denominada la ficha principal del
proceso. Cuando un usuario inicia una sesin, Windows crea una ficha de acceso que incluye el ID de seguridad para el
usuario. Cada proceso que se crea o ejecuta en representacin de este usuario, tiene una copia de este testigo de acceso.
Windows lo utiliza para comprobar si el usuario puede acceder a objetos de seguridad, o puede realizar funciones
restringidas en el sistema o en un objeto de seguridad. El testigo de acceso controla si un proceso puede modificar sus
propios atributos. En este caso, el proceso no tiene un manejador abierto hacia su testigo de acceso. Si el proceso intenta
abrir este manejador, el sistema de seguridad determinar si est permitido y por tanto si el proceso puede modificar sus
propios atributos. Tambin relacionado con el proceso, hay una serie de bloques que definen el espacio de direcciones
virtuales actualmente asignado al proceso. El proceso no puede modificar directamente estas estructuras, ya que
dependen del gestor de memoria virtual, que proporciona servicios de asignacin de memoria a los procesos. Finalmente,
el proceso incluye una tabla de objetos, que trata los otros objetos conocidos por el proceso. Hay un manejador para cada
hilo que est contenido en este objeto. Tambin muestra un nico hilo. El proceso tiene acceso a un objeto archivo y a un
objeto segmento, que define un segmento de memoria compartido.

OBJETO PROCESO Y OBJETO HILO

La estructura orientada a objetos de Windows facilita el desarrollo de un proceso de propsito general Windows hace uso
de dos tipos de objetos relacionados con los procesos: procesos e hilos. Un proceso es una entidad que corresponde a un
trabajo de usuario o una aplicacin que posee recursos como la memoria y archivos abiertos. Un hilo es una unidad de
trabajo que se puede activar, que ejecuta secuencialmente y que es interrumpible, de forma que el procesador puede
cambiar a otro hilo. Cada proceso Windows se representa por un objeto.

nica forma de invocar a este servicio es a travs de mensajes a un objeto proceso que proporciona ese servicio. Cuando
Windows crea un nuevo proceso, utiliza el objeto definido para el proceso Windows como plantilla para generar la nueva
instancia del proceso. En el momento de la creacin se asignan los valores de los atributos. Un proceso Windows debe
contener por lo menos un hilo que ejecutar. Ese hilo puede a su vez crear otros hilos. En un sistema multiprocesador,
mltiples hilos de un mismo proceso pueden ejecutar en paralelo. Es importante darse cuenta de que alguno de los
atributos de los hilos se asemeja a los de los procesos. En estos casos, el valor del atributo del hilo se deriva del valor del
atributo del proceso. Por ejemplo, la afinidad de procesador asociada al hilo (thread processor afliniffl es el conjunto de
procesadores, en un sistema multiprocesador, que pueden ejecutar este hilo. Este conjunto es igual o un subconjunto de
la afinidad de procesador asociada al proceso. Advirtase que uno de los atributos del proceso hilo es el contexto. Esta
informacin permite que el hilo se suspenda y reanude. Ms an, es posible cambiar el comportamiento de un hilo,
alterando su contenido cuando el hilo est suspendido.

MULTIHILO

Windows soporta la concurrencia entre procesos ya que hilos de diferentes procesos pueden ejecutar en paralelo.
Adems, mltiples hilos del mismo proceso pueden estar asignados a distintos procesadores y pueden ejecutar de modo
concurrente. Un proceso multihilo puede lograr la concurrencia sin la sobre-carga del uso de mltiples procesos. Los hilos
del mismo proceso pueden intercambiar informacin a travs de su espacio de direcciones comn y tienen acceso a los
recursos compartidos del proceso. Los hilos de diferentes procesos pueden intercambiar informacin a travs del uso de
memoria compartida.
Objeto de Proceso en Windows
Objeto de Hilos en Windows

Un proceso multihilo orientado a objetos es una forma efectiva de implementar una aplicacin servidora. Por ejemplo, un
proceso servidor podra atender a varios clientes. Cada peticin de cliente desencadena la creacin de un nuevo hilo del
servidor.

ESTADO DE LOS HILOS

Un hilo de Windows se encuentra en uno de estos seis estados:

Listo (ready). Puede planificarse para ejecucin. El activador del microncleo conoce todos los hilos listos y los planifica
en orden de prioridad.

Substituto (standby). Un hilo substituto se ha seleccionado para ejecutar en siguiente lugar en un determinado
procesador. Si la prioridad del hilo substituto es suficientemente alta, el hilo actualmente en ejecucin en ese procesador
podra ser expulsado en su favor. De otra forma, el hilo substituto espera hasta que el hilo en ejecucin se bloquea o
finaliza su porcin de tiempo.

Ejecutando (running). Una vez que el microncleo realiza un intercambio de hilo o proceso, el hilo susbtituto pasa al
estado de ejecucin y ejecuta hasta que es expulsado, finaliza su porcin de tiempo, se bloquea o termina. En los dos
primeros casos vuelve a la cola de listos.

Esperando (waitlag). Un hilo pasa a estado esperando cuando (1) se bloquea en un evento (por ejemplo, E/S), (2) espera
voluntariamente por temas de sincronizacin, o (3) un subsistema manda al hilo a estado de suspendido. Cuando se
satisface la condicin de espera, el hilo pasa al estado Listo si todos sus recursos estn disponibles.

Transicin (transition). Un hilo entra en este estado despus de esperar si est listo para ejecutar pero los recursos no
estn disponibles. Por ejemplo, la pila del hilo puede no estar en memoria. Cuando los recursos estn disponibles, el hilo
pasa al estado Listo.
Terminado (terminated). Un hilo se puede finalizar por s mismo, por otro hilo o cuando su proceso padre finaliza. Cuando
se completan las tareas internas, el hilo se borra del sistema, o puede retenerse por el ejecutivo para futuras
reinicializaciones.

SOPORTE PARA SUBSISTEMAS DE SISTEMAS OPERATIVOS

Los servicios de procesos e hilos de propsito general, deben dar soporte a las estructuras de procesos e hilos de varios
SO cliente. Cada subsistema de SO es responsable de sacar provecho de los procesos e hilos de Windows para su propio
sistema operativo. Esta rea de gestin de procesos/hilos es complicada, y nosotros slo damos una pequea visin
general. La creacin de un proceso comienza con la peticin de una aplicacin de un nuevo proceso. La aplicacin manda
una solicitud de creacin de proceso a su correspondiente subsistema, que pasa la solicitud al ejecutivo de Windows. El
ejecutivo crea un objeto proceso y devuelve al subsistema el manejador de dicho objeto. Cuando Windows crea un
proceso, no crea automticamente un hilo. En el caso de Win32 y OS/2, siempre se crea un nuevo proceso con un hilo.
Por consiguiente, para estos sistemas operativos, el subsistema llama de nuevo al gestor de procesos de Windows para
crear un hilo para el nuevo proceso, recibiendo un manejador de hilo como respuesta. A continuacin se de-vuelven a la
aplicacin la informacin del hilo y del proceso. En el caso de Windows 16-bit y POSLX, no se soportan los hilos. Por tanto,
para estos sistemas operativos, el subsistema obtiene un hilo para el nuevo proceso de Windows, para que el proceso
pueda activarse, pero devuelve slo la informacin del proceso a la aplicacin. El hecho de que el proceso de la aplicacin
est implementado como un hilo, no es visible para la aplicacin. Cuando se crea un nuevo proceso en Win32 o OS/2, el
nuevo proceso hereda muchos de sus atributos del proceso que le ha creado. Sin embargo, en el entorno Windows, este
procedimiento de creacin se realiza indirectamente. El proceso cliente de una aplicacin manda su solicitud de creacin
de proceso al subsistema del SO; un proceso del subsistema a su vez manda una solicitud de proceso al ejecutivo de
Windows. Ya que el efecto deseado es que el nuevo proceso herede las caractersticas del proceso cliente, y no del proceso
servidor, Windows permite al subsistema especificar el padre del nuevo proceso. El nuevo proceso hereda el testigo de
acceso, lmite de cuota, prioridad base y afinidad a procesador por defecto de su padre.

SOPORTE PARA MULTIPROCESAMIENTO SIMTRICO

Windows soporta una configuracin hardware SMP. Los hilos de cualquier proceso, incluyendo los del ejecutivo, pueden
ejecutar en cualquier procesador. En ausencia de restricciones de afinidad, explicadas en el siguiente prrafo, el
microncleo asigna un hilo listo al siguiente procesador disponible. Esto asegura que ningn procesador est ocioso o est
ejecutando un hilo de menor prioridad cuando un hilo de mayor prioridad est listo. Mltiples hilos de un proceso pueden
ejecutar a la vez en mltiples procesadores. Por defecto, el microncleo utiliza la poltica afinidad dbil (solf affinity) para
asignar procesa-dores a los hilos: el planificador intenta asignar un proceso listo al mismo procesador que lo ejecut la
ltima vez. Esto ayuda a reutilizar datos que estn todava en la memoria cache del procesador de la ejecucin previa del
hilo. Para una aplicacin es posible restringir la ejecucin de sus hilos a determinados procesadores afinidad fuerte (hard
affinity).

Вам также может понравиться