Estado de proceso
Descripción
TASK_RUNNING
El proceso se está ejecutando o se ejecutará.
TASK_INTERRUPTIBLE
El proceso está inactivo, esperando la finalización de una condición.
TASK_UNINTERRUPTIBLE
El sueño profundo no se verá afectado por la señal.
TASK_STOPPED
La ejecución del proceso se detiene.
TASK_TRACED
El proceso es detenido por el depurador y seguido por otro proceso.
dos estados adicionales son EXIT_ZOMBIE y EXIT_DEAD, que representa un avance real en un estado de muerte o la muerte. Un proceso que está en un estado muerto esperará la adopción de su proceso principal (de lo contrario, será adoptado por el proceso de inicio), y el proceso que está realmente muerto se eliminará directamente.
proceso TASK_RUNNING estado será colocado en la cola de ejecución (cola de ejecución), esto es por task_struct (definido en include /linux /sched.h) miembros run_list a enlaces. Sin embargo, para que el kernel elija el proceso de prioridad más apropiado cada vez, Linux crea una cola para cada prioridad. Esto se consigue mediante un prio_array struct, prio_array struct define en kernel /sched.c, como sigue:
struct prio_array {
int nr_active;
sin signo de mapa de bits de largo [BITMAP_SIZE];
struct list_head cola [MAX_PRIO];
};
cola es una matriz de miembro de cola. Cada CPU tiene su propia cola de ejecución, y cada cola de ejecución tiene dos prio_arrays, una para la cola activa y otra para la cola agotada en el tiempo. Cuando la cola de ejecución está vacía, el kernel intercambia los punteros de las dos colas y la cola de escape original se convierte en la nueva cola activa. Esto y el mapa de bits en la matriz prio son la clave para determinar el algoritmo de programación como O (1).
proceso del estatuto TASK_STOPPED, EXIT_ZOMBIE o EXIT_DEAD no ser colocados en una cola especial, se accede a ellos directamente a través de pid o hijo de la cola de proceso padre. Proceso
estado TASK_UNINTERRUPTIBLE TASK_INTERRUPTIBLE y se coloca en la cola de espera. La diferencia es que cada evento de espera tiene una cola de espera, y el proceso en la cola espera la finalización del mismo evento.
( quo; Evento " Un proceso dinámico, no es fácil definir un "evento" a través de una estructura específica. La espera de un evento aquí es para ver si una condición es verdadera, por ejemplo, si una variable de marca es verdadera.) wait_queue_head_t definido en include /linux /wait.h como sigue:
typedef struct _ _wait_queue_head {
spinlock_t cerradura;
struct list_head task_list;
} wait_queue_head_t;
wait_queue_t define como sigue: typedef struct
_ {_wait_queue
sin signo int flags;
estructura task_struct * tarea;
wait_queue_func_t func;
estructura list_head task_list;
} wait_queue_t;
en un estado de espera de la interfaz, hay dos tipos:
Prepare_To_Wait * () /finish_wait ()
wait_event * ()
hecho wait_event * () llamada es interna Prepare_to_wait * (), póngalo en un bucle. Y wait_event * () llamará automáticamente finish_wait () cuando se complete el evento. Decide cuál usar dependiendo de la situación.
(sleep_on * () es una interfaz abandonada y ya no se usa, aunque también es compatible). Hay dos tipos de procesos que esperan en la cola, uno es exclusivo y el otro no es exclusivo. El llamado exclusivo significa que los recursos que esperan el proceso de reactivación se excluyen mutuamente, y solo se activan uno a la vez (múltiples despertadores, pero solo uno se activará al final, y el resto se agregará nuevamente a la cola de espera, por lo que la eficiencia será Gran descuento). En general, la función de espera establecerá el proceso como no exclusivo e ininterrumpible, y el "interrumpible" especificará específicamente el estado como interrumpible, y el "tiempo de espera" se cerrará después del tiempo de espera, ya que llamará schedule_timeout (); con " Exclusivo " establecerá el proceso en exclusivo.
raíz de la interfaz, aunque sólo wake_up * (), pero también se divide en varios interior. La función de activación con "interrumpible" solo activará el proceso cuyo estado es TASK_INTERRUPTIBLE, sin el proceso de activación de TASK_INTERRUPTIBLE y TASK_UNINTERRUPTIBLE; todas las funciones de activación despertarán todos los procesos no exclusivos a la espera del mismo evento, o uno de ellos exclusivo. El proceso se activa, y con "nr", activará el número especificado de procesos exclusivos, con "todos" activará todos los procesos exclusivos. Con " sync " ignorará la verificación de prioridad, los procesos de alta prioridad pueden demorarse. Finalmente, solo se puede llamar a wait_up_locked () cuando se mantiene un bloqueo de giro.
gestión de procesos del núcleo de Linux es la parte más crítica, su rendimiento se determina casi directamente la calidad del grano, algunos de los diseños y el uso de algoritmos que son muy complejos. Esto es solo para introducir el uso de la cola en él, y aún queda por explorar una mayor exploración.
Las instrucciones de LDM /STM se utilizan principalmente para la protección de campo, la replicación
Para Linux principiante (también lo soy), no quiero meterme con Linux en la máquina virtual, y no qu
Para abrir un proyecto normal previamente compilado (creado con IAR5.5), se informa el siguiente e
(1) Comando ifconfig El primer tipo usa el comando ifconfig para configurar la dir
Squid, nginx, lighttpd diferencia de proxy inverso
¿Quién es el servidor web de Linux más popular?
Desactivar el tono de alarma y modificar la resolución en linux
El comando vmstat de Linux usa el tutorial
Implementación de Ubuntu del montaje permanente de la partición
El sistema Centos verifica si la CPU admite ejemplos de 64 bits.
Modificar el puerto predeterminado de Apache 80
Sistema Linux y 20 puntos de diferencia con Windows
Desbordamiento de memoria Tomcat y solución temporal
Accesos directos comunes bajo la línea de comando de Linux
Demasiados archivos abiertos Resolución de errores
Cómo instalar bt5 - bt5 en el sistema windows8 para instalar el tutorial Oh
Cómo reproducir fácilmente la función de disco de red SkyDrive incorporada en Win8.1
Ver rápidamente la dirección local en Vista
win7 icono del sistema borde aparece corriendo cómo resolver el problema Descripción
Sistema Win7 guía de usuario avanzada descarga de libros electrónicos
Win8 actualización de parche para computadora registro cómo ver
Las sugerencias de cifrado de EFS hacen que los datos sean más seguros (2)
Método de desinstalación para la entrada opcional de administración de funciones en el sistema Win10