————- – />
cola de ejecución en espera de ejecución
TASK_INTERRUPTIBLE-El proceso está durmiendo (es decir, lo es. bloqueado), a la espera de alguna condición a exist.When esta condición existe, el kernel configura el estado del proceso a proceso TASK_RUNNING.The también
despierta prematuramente y se convierte en ejecutable si se recibe una señal.
TASK_UNINTERRUPTIBLE-Este estado es idéntico al TASK_INTERRUPTIBLE excepto que no se despierta y se convierten en ejecutables si recibe una signal.This se utiliza en situaciones en las que el proceso debe transcurrir sin interrupción o cuando se espera que el evento de ocurrir muy rápidamente. Debido a que la tarea no responde a las señales en este estado.
__TASK_TRACED-El proceso está siendo rastreado por otro proceso, como un depurador, a través de ptrace.
__TASK_STOPPED-Proceso ejecución se ha detenido, la tarea no se ejecuta ni es elegible para run.This se produce si la tarea recibe la SIGSTOP, SIGTSTP, SIGTTIN o señal SIGTTOU o si se recibe ninguna señal mientras se está depurando
—————– En Linux, tenedor () se implementa mediante el uso de páginas copia-sobre-escritura. Copy-on-write (o vaca) es una técnica para demorar o impedir la copia de los datos en conjunto. En lugar de duplicar el espacio de direcciones del proceso, el padre y el niño puedan compartir una única copia.
; Los datos, sin embargo, está marcada de tal manera que, si se escribe, un duplicado se hace
y cada proceso recibe una copia única. En consecuencia, la duplicación de recursos
sólo se produce cuando se escriben, hasta entonces, se comparten sólo lectura. La única sobrecarga producida por el tenedor () es la duplicación de tablas de páginas del padre y de la creación de un descriptor de proceso único para el niño
vfork ():.
——-
La llamada vfork system () tiene el mismo efecto como tenedor (), excepto que las entradas de la tabla de páginas del proceso padre no se copian. En cambio, el niño se ejecuta como el único hilo en el espacio de direcciones de los padres, y los padres se bloquea hasta que el niño sea llama exec () o salidas. El niño no se le permite escribir en el espacio de direcciones />
Clone (SIGCHLD, 0);
Creaciones vfork-Proceso
clone (CLONE_VFORK | CLONE_VM | SIGCHLD, 0);
de creación del tema:
clone (CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND, 0);
Flag Significado
CLONE_FILES archivos abiertos para padres y en común el niño.
CLONE_FS información del sistema de archivos de los padres y participación infantil .
CLONE_IDLETASK Set PID a cero (se usa sólo por las tareas de inactividad).
CLONE_NEWNS Crea un nuevo espacio de nombres para el niño. />
CLONE_PTRACE Continuar trazando niño.
CLONE_SETTID Escriba el TID nuevo a espacio de usuario.
CLONE_SETTLS Crear una nueva TLS para el niño manejadores de señales. />
Padres CLONE_SYSVSEM y común el niño System V semántica SEM_UNDO. />
CLONE_VFORK vfork () se utilizó y el padre va a dormir hasta que el niño se despierta él.
CLONE_UNTRACED No deje que la fuerza de proceso de rastreo CLONE_PTRACE en el niño.
CLONE_STOP proceso de inicio en el estado TASK_STOPPED.
CLONE_SETTLS Crea un nuevo TLS (almacenamiento local de subprocesos) para el niño.
CLONE_CHILD_CLEARTID Borrar el TID en el niño.
CLONE_CHILD_SETTID Ajuste el TID en el niño.
CLONE_PARENT_SETTID Ajuste el TID en los padres. />
Kernel Thread:
El ————— diferencias significativas entre los hilos del núcleo y los procesos normales es que los hilos del núcleo no tienen un espacio de direcciones. (Su puntero mm, lo que apunta a su espacio de direcciones, es NULL.) Operan sólo en el espacio del kernel y no cambian ni el contexto en el espacio de usuario. Los hilos del núcleo, sin embargo, son planificable y apropiable, lo mismo que los procesos normales
Terminación del proceso:.
—————- —-
todos los objetos asociados a la tarea (asumiendo que la tarea era el único usuario) son tarea freed.The no es ejecutable (y ya no tiene un espacio de direcciones en la que se ejecutará) y se encuentra en la salida EXIT_ZOMBIE state.The única memoria que ocupa está su pila del núcleo, la estructura thread_info y el task_struct tarea structure.The existe únicamente para proporcionar información a sus padres. Después de que el padre se recupera la información, o notifica al kernel que está desinteresado, la memoria que queda en poder del proceso se libera y se devuelve al sistema para su uso.