Gestión de Procesos e Hilos en Linux

June 5, 2018 | Author: La Xiquittalinndaah Conseentiddahh | Category: Thread (Computing), Process (Computing), Object (Computer Science), Kernel (Operating System), Computer Programming
Report this link


Description

GESTIÓN DE PROCESOS E HILOS EN LINUXTAREAS LINUX Un proceso, o tarea, en Linux se representa por una estructura de datos task struot, que contiene información de diversas categorías: • Estado. El estado de ejecución del proceso (ejecutando, listo, suspendido, detenido, zombi). Pasaremos a describirlo posteriormente. • Información de planificación. Información 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 categoría, 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 también tiene identificadores de usuario y grupo. Un identificador de usuario se utiliza para asignar privilegios de acceso a recursos a un grupo de procesos. • Comunicación 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 creación del proceso y la cantidad de tiempo de procesador consumido por el proceso hasta el momento. Un proceso también puede tener asociado uno o más temporizadores. Un proceso define un temporizador a través de una llamada al sistema; como resultado se manda una señal al proceso cuando finaliza el temporizador. Un temporizador puede ser de un solo uso o periódico. • Sistema de archivos. Incluye punteros a cualquier archivo abierto por este proceso, así como punteros a los directorios actuales y raíz para este proceso. • Espacio de direcciones. Define el espacio de direcciones virtual asignado a este proceso. que se refiere a la tarea idle. El padre no quiere el envío de la señal SIGCHLD en su finalización. Este valor de estado se corresponde con dos estados. funcionan como hi-los de un solo proceso. En su lugar. mientras que los sistemas UNIX modernos suelen proporcionar soporte para múltiples hilos de nivel de núcleo por proceso. La más popular de estas bibliotecas se conoce como biblioteca pthread (POSIX pthread).• Contexto específico del procesador. Un proceso Ejecutando puede estar ejecutando o está listo para ejecutar. están compartiendo el mismo espacio de direcciones. Utilizando un mecanismo similar al de los procesos ligeros de Solaris. los hilos de nivel de usuario se asocian con procesos de nivel de núcleo. así como el valor de la máscara de bits utilizada para enmascarar los permisos iniciales de un nuevo archivo. En Linux se crea un nuevo proceso copiando los atributos del proceso actual. • Zombie. • Ejecutando. . Aunque los procesos donados que son parte del mismo grupo de procesos. El proceso ha sido parado y sólo puede ser reanudado por la acción positiva de otro proceso. Múltiples hilos de nivel de usuario que constituyen un único pro-ceso de nivel de usuario. • Interrumpible. Este mandato incluye un conjunto de flags como argumentos. Linux proporciona una solución única en la que no diferencia entre hilos y procesos. en el que el proceso está esperando por un evento. la llamada done ( ) crea espacios de pila separados para cada proceso. CLONE_CLEARID Borrar el ID de tarea. se asocian con procesos Linux a nivel de núcleo y comparten el mismo ID de grupo. todavía debe tener su estructura de tarea en la tabla de procesos. Sin embargo. Éste es otro estado bloqueado. La llamada al sistema tradicional fork( ) se implementa en Linux con la llamada al sistema done ( ) sin ningún flag. Un nuevo proceso se puede donar de forma que comparte sus recursos. CLONE_FILES Compartir la tabla que identifica los archivos abiertos. Es un estado bloqueado. las aplicaciones debían escribirse con un conjunto de funciones de biblioteca de nivel de usuario. • Ininterrumpible. La tarea idle se utiliza cuando todas las tareas disponibles están bloqueadas esperando por recursos. pueden compartir el mismo espacio de memoria no pueden compartir la misma pila de usuario. por alguna razón. Por tanto. 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. manejadores de señales y memoria virtual. en donde se asociaban todos los hilos en un único proceso a nivel de núcleo. CLONE_IDLETASK Establecer el PID a cero. tal como la finalización de una operación de E/S. la disponibilidad de un recurso o una señal de otro proceso. tales como archivos. Cuando el núcleo de Linux realiza un cambio de un proceso a otro. Por ejemplo. • Detenido. los procesos se crean en Linux usando el mandato clone ( ). las versiones antiguas del núcleo de Linux no ofrecían soporte multihilo. La información de los registros y de la pila que constituyen el contexto de este proceso. Si lo es. CLONE_DETACHED El padre no quiere el envío de la señal SIGCHLD en su finalización. CLONE_FS Compartir la tabla que identifica al directorio raíz y al directorio actual de trabajo. En lugar del mandato normal fork( ). verifica si la dirección del directorio de páginas del proceso actual es la misma que en el proceso a ser planificado. 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 señal. Como con los sistemas UNIX tradicionales. Cuando los dos procesos comparten la misma memoria virtual. El proceso se ha terminado pero. por lo que el cambio de contexto consiste básicamente en saltar de una posición del código a otra. un proceso que está siendo depurado se puede poner en estado Parado. no se define ningún tipo de estructura de datos independiente para un hilo. HILOS LINUX Los sistemas UNIX tradicionales soportan un solo hilo de ejecución por proceso. Hemos visto que las versiones modernas de UNIX ofrecen hilos a nivel de núcleo. Flags de la llamada done( ) de Linux. Si está activado. CLONE_SIGHAND Compartir la tabla que identifica los manejadores de señales. • Si se proporcionan hilos con los procesos. CLONE_VFORK Si este flag está activado. En este caso. las estructuras de los procesos y los servicios proporcionados por el núcleo de Windows son relativamente sencillos y de propósito general. • Cómo se protege a los recursos de los procesos. tienen funcionalidades de sincronización preconstruidas. CLONE_VM Compartir el espacio de direcciones (descriptor de memoria y todas las tablas de páginas). hay una serie de bloques que definen el espacio de direcciones virtuales actualmente asignado al proceso. Algunas características importantes de los procesos Windows son las siguientes: • Los procesos Windows están implementados como objetos. o puede realizar funciones restringidas en el sistema o en un objeto de seguridad. . que proporciona servicios de asignación de memoria a los procesos. muestra la forma en la que un proceso se asocia a los recursos que controla o utiliza. Cuando un usuario inicia una sesión. CLONE_PTRACE Si el proceso padre está siendo trazado. A cada proceso se le asigna un testigo (token) de seguridad de acceso. el proceso hijo también lo hará. Windows crea una ficha de acceso que incluye el ID de seguridad para el usuario. La siguiente figura está basada en una de [SOL000]. CLONE_SETTID Escribir eI TID en el espacio de usuario. El testigo de acceso controla si un proceso puede modificar sus propios atributos. fuerza de forma implícita a CLONE_PARENT. • Cómo se relacionan los procesos entre sí. el proceso no tiene un manejador abierto hacia su testigo de acceso. • Qué mecanismos se utilizan para la comunicación y sincronización entre procesos. tiene una copia de este testigo de acceso. ya que dependen del gestor de memoria virtual. el padre no se planifica para ejecución hasta que el hijo invoque la llamada al sistema execve(). denominada la ficha principal del proceso. Como consecuencia. • Un proceso ejecutable puede contener uno o más hilos. Los procesos soportados por diferentes entornos de sistemas operativos se diferencian en varias cosas. • Tanto el objeto proceso como el objeto hilo. GESTIÓN DE HILOS Y SMP EN WINDOWS El diseño de un proceso Windows está limitado por la necesidad de proporcionar soporte a diversos entornos de sistemas operativos. CLONE_PARENT El llamante y la nueva tarea comparten el mismo proceso padre. CLONE_NEWNS Crear un nuevo espacio de nombres para el hijo. el sistema de seguridad determinará si está permitido y por tanto si el proceso puede modificar sus propios atributos. • Cómo se representa a los procesos. CLONE_SYSVSEM Compartir la semántica SEM_UNDO de System V. Finalmente. incluyendo las siguientes: • La denominación de los procesos. Si el proceso intenta abrir este manejador. permitiendo a cada subsistema del sistema operativo que emule una estructura y funcionalidad particular del proceso. Cada proceso que se crea o ejecuta en representación de este usuario. CLONE_THREAD Insertar este proceso en el mismo grupo de hilos del padre. Windows lo utiliza para comprobar si el usuario puede acceder a objetos de seguridad. El proceso no puede modificar directamente estas estructuras. También relacionado con el proceso. CLONE_SETTLS Crear un nuevo TLS para el hijo. Por ejemplo. Más aún. MULTIHILO Windows soporta la concurrencia entre procesos ya que hilos de diferentes procesos pueden ejecutar en paralelo. en un sistema multiprocesador. Es importante darse cuenta de que alguno de los atributos de los hilos se asemeja a los de los procesos. Un hilo es una unidad de trabajo que se puede activar. el valor del atributo del hilo se deriva del valor del atributo del proceso. que define un segmento de memoria compartido. Ese hilo puede a su vez crear otros hilos. En el momento de la creación se asignan los valores de los atributos. Este conjunto es igual o un subconjunto de la afinidad de procesador asociada al proceso. Además. múltiples hilos de un mismo proceso pueden ejecutar en paralelo. Los hilos de diferentes procesos pueden intercambiar información a través del uso de memoria compartida. El proceso tiene acceso a un objeto archivo y a un objeto segmento. En un sistema multiprocesador. de forma que el procesador puede cambiar a otro hilo. También muestra un único hilo. Adviértase que uno de los atributos del proceso hilo es el contexto. . que pueden ejecutar este hilo. Un proceso Windows debe contener por lo menos un hilo que ejecutar. Única forma de invocar a este servicio es a través de mensajes a un objeto proceso que proporciona ese servicio. utiliza el objeto definido para el proceso Windows como plantilla para generar la nueva instancia del proceso. Los hilos del mismo proceso pueden intercambiar información a través de su espacio de direcciones común y tienen acceso a los recursos compartidos del proceso. la afinidad de procesador asociada al hilo (thread processor afliniffl es el conjunto de procesadores. Cuando Windows crea un nuevo proceso. Un proceso multihilo puede lograr la concurrencia sin la sobre-carga del uso de múltiples procesos. que trata los otros objetos conocidos por el proceso.el proceso incluye una tabla de objetos. es posible cambiar el comportamiento de un hilo. Esta información permite que el hilo se suspenda y reanude. Hay un manejador para cada hilo que está contenido en este objeto. OBJETO PROCESO Y OBJETO HILO La estructura orientada a objetos de Windows facilita el desarrollo de un proceso de propósito general Windows hace uso de dos tipos de objetos relacionados con los procesos: procesos e hilos. En estos casos. que ejecuta secuencialmente y que es interrumpible. múltiples hilos del mismo proceso pueden estar asignados a distintos procesadores y pueden ejecutar de modo concurrente. Cada proceso Windows se representa por un objeto. Un proceso es una entidad que corresponde a un trabajo de usuario o una aplicación que posee recursos como la memoria y archivos abiertos. alterando su contenido cuando el hilo está suspendido. Objeto de Proceso en Windows . finaliza su porción de tiempo. • Substituto (standby). o (3) un subsistema manda al hilo a estado de suspendido. Cada petición de cliente desencadena la creación de un nuevo hilo del servidor. el hilo actualmente en ejecución en ese procesador podría ser expulsado en su favor. Una vez que el micronúcleo realiza un intercambio de hilo o proceso. el hilo substituto espera hasta que el hilo en ejecución se bloquea o finaliza su porción de tiempo. el hilo pasa al estado Listo. Por ejemplo. Puede planificarse para ejecución. un proceso servidor podría atender a varios clientes.Objeto de Hilos en Windows Un proceso multihilo orientado a objetos es una forma efectiva de implementar una aplicación servidora. • Esperando (waitlag). . el hilo susbtituto pasa al estado de ejecución y ejecuta hasta que es expulsado. • Transición (transition). la pila del hilo puede no estar en memoria. (2) espera voluntariamente por temas de sincronización. Por ejemplo. • Ejecutando (running). En los dos primeros casos vuelve a la cola de listos. Un hilo pasa a estado esperando cuando (1) se bloquea en un evento (por ejemplo. E/S). Un hilo substituto se ha seleccionado para ejecutar en siguiente lugar en un determinado procesador. Un hilo entra en este estado después de esperar si está listo para ejecutar pero los recursos no están disponibles. El activador del micronúcleo conoce todos los hilos listos y los planifica en orden de prioridad. el hilo pasa al estado Listo si todos sus recursos están disponibles. Cuando se satisface la condición de espera. se bloquea o termina. Cuando los recursos están disponibles. Si la prioridad del hilo substituto es suficientemente alta. ESTADO DE LOS HILOS Un hilo de Windows se encuentra en uno de estos seis estados: • Listo (ready). De otra forma. este procedimiento de creación se realiza indirectamente. La creación de un proceso comienza con la petición de una aplicación de un nuevo proceso. A continuación se de-vuelven a la aplicación la información del hilo y del proceso. Esto asegura que ningún procesador está ocioso o está ejecutando un hilo de menor prioridad cuando un hilo de mayor prioridad está listo. no crea automáticamente un hilo. Los hilos de cualquier proceso. para que el proceso pueda activarse. el nuevo proceso hereda muchos de sus atributos del proceso que le ha creado. La aplicación manda una solicitud de creación de proceso a su correspondiente subsistema. el micronúcleo asigna un hilo listo al siguiente procesador disponible. límite de cuota. un proceso del subsistema a su vez manda una solicitud de proceso al ejecutivo de Windows. En ausencia de restricciones de afinidad. En el caso de Windows 16-bit y POSLX. pero devuelve sólo la información del proceso a la aplicación. para estos sistemas operativos. no es visible para la aplicación. Múltiples hilos de un proceso pueden ejecutar a la vez en múltiples procesadores. En el caso de Win32 y OS/2. el micronúcleo utiliza la política afinidad débil (solf affinity) para asignar procesa-dores a los hilos: el planificador intenta asignar un proceso listo al mismo procesador que lo ejecutó la . Windows permite al subsistema especificar el padre del nuevo proceso. para estos sistemas operativos. en el entorno Windows.• Terminado (terminated). que pasa la solicitud al ejecutivo de Windows. recibiendo un manejador de hilo como respuesta. SOPORTE PARA MULTIPROCESAMIENTO SIMÉTRICO Windows soporta una configuración hardware SMP. El ejecutivo crea un objeto proceso y devuelve al subsistema el manejador de dicho objeto. Sin embargo. deben dar soporte a las estructuras de procesos e hilos de varios SO cliente. Por consiguiente. Por tanto. o puede retenerse por el ejecutivo para futuras reinicializaciones. prioridad base y afinidad a procesador por defecto de su padre. por otro hilo o cuando su proceso padre finaliza. Cuando Windows crea un proceso. Esta área de gestión de procesos/hilos es complicada. el subsistema llama de nuevo al gestor de procesos de Windows para crear un hilo para el nuevo proceso. y nosotros sólo damos una pequeña visión general. El nuevo proceso hereda el testigo de acceso. no se soportan los hilos. Ya que el efecto deseado es que el nuevo proceso herede las características del proceso cliente. el subsistema obtiene un hilo para el nuevo proceso de Windows. incluyendo los del ejecutivo. y no del proceso servidor. El hecho de que el proceso de la aplicación esté implementado como un hilo. SOPORTE PARA SUBSISTEMAS DE SISTEMAS OPERATIVOS Los servicios de procesos e hilos de propósito general. Un hilo se puede finalizar por sí mismo. pueden ejecutar en cualquier procesador. Cuando se crea un nuevo proceso en Win32 o OS/2. explicadas en el siguiente párrafo. el hilo se borra del sistema. siempre se crea un nuevo proceso con un hilo. Cada subsistema de SO es responsable de sacar provecho de los procesos e hilos de Windows para su propio sistema operativo. Cuando se completan las tareas internas. Por defecto. El proceso cliente de una aplicación manda su solicitud de creación de proceso al subsistema del SO. última vez. . Esto ayuda a reutilizar datos que estén todavía en la memoria cache del procesador de la ejecución previa del hilo. Para una aplicación es posible restringir la ejecución de sus hilos a determinados procesadores afinidad fuerte (hard affinity).


Comments

Copyright © 2024 UPDOCS Inc.