¿Por qué debería haber prioridad de proceso?
Esto no parece requerir demasiada explicación. Después de todo, desde que nació el sistema operativo multitarea
, la capacidad del proceso para asumir la CPU es una cuestión que debe ser controlada artificialmente. Debido a que algunos procesos son relativamente importantes, y algunos procesos son menos importantes.
La forma en que funciona la prioridad del proceso ha cambiado básicamente desde la invención. Ya sea que se trate de una sola CPU o de la CPU de múltiples núcleos, se logra controlando la duración del tiempo de CPU que ocupa el proceso.
Esto significa que en el mismo ciclo de programación, el proceso de mayor prioridad lleva más tiempo, mientras que el proceso de menor prioridad toma más tiempo.
Por favor, no confunda estos dos conceptos en el sistema: nice (NI) y priority (PR), están inextricablemente vinculados, pero para el sistema Linux actual, No es el mismo concepto.
Miramos este comando:
¿Comprendes realmente la diferencia entre el significado específico de la columna PRI y la columna NI?
Lo mismo, si es el comando superior:
¿Entiendes la diferencia entre PR y NI? Si no es así, primero podemos averiguar cuál es el valor razonable.
¿Cuál es el valor NICE?
El valor NICE debe ser un concepto familiar para aquellos familiarizados con Linux /UNIX. Es un valor que refleja el estado de un proceso "prioritario", que varía de -20 a 19, un total de 40 Nivel
Cuanto menor sea el valor, mayor será el proceso " prioridad >, y cuanto mayor sea el valor " prioridad "
Por ejemplo, podemos usar el comando NICE para establecer el valor NICE de un comando bash para que se ejecute:
[root @ zorrozou-pc0 zorro] # nice -n 10 bash
De esta manera, vuelvo a abrir un bash y su buen valor se establece en 10 y, de forma predeterminada, la prioridad del proceso debe heredarse del proceso principal, este valor generalmente es 0.
Podemos ver directamente el buen valor del shell actual con el comando nice:
[root @ zorrozou-pc0 zorro] # nice 10
Compare la situación normal:
[root @ zorrozou-pc0 zorro] # exit
Salga del bash actual con un valor de 10 y abra un bash normal. Veamos su valor Nice:
[root @ zorrozou-pc0 zorro] # bash < Br> [root @ zorrozou-pc0 zorro] # nice 0
Además, el comando renice se puede usar para ajustar el valor de un proceso en ejecución. También podemos usar los comandos top, ps, etc. para ver el proceso. Buen valor, no diré más sobre el método específico, puede consultar la página de manual correspondiente.
A lo que todos debemos prestar atención es a que estoy usando el nombre de buen valor aquí, no la prioridad.
El valor de nice no es una prioridad, pero sí afecta la prioridad del proceso.
En inglés, si describimos a una persona agradable, generalmente significa que la popularidad de esta persona es mejor. ¿Qué clase de personas son buenas? A menudo humildemente y educado.
Por ejemplo, si vas a almorzar con una buena persona, pides dos comidas idénticas. Después de que obtengas una, la amable dirá: "Comes primero, comes primero". ! ", esta es una buena relación, esta persona es agradable! Pero si el otro llega tarde, entonces la buena persona tendrá hambre.
¿Qué significa esto?
Cuanto mayor es la capacidad de Nicole para aprovechar los recursos, peor y menos agradable, más fuerte es la capacidad para aprovechar. Este es el significado del tamaño del valor agradable, cuanto más bajo es el valor agradable, menos es el proceso, menor es la capacidad de aprovechar la CPU, mayor es la prioridad (la explicación del autor es demasiado vívida, ¡Xiao Bian no pudo evitar elogiar manualmente!) !).
En la programación original de Linux que usa O1, también llamaremos la prioridad estática de buen valor, que es básicamente consistente con las características del valor de nice, es decir, cuando se establece el valor de nice, a menos que usemos renice Cámbiala, de lo contrario no se modificará.
El valor de la prioridad se cambia en el programador O1 anterior del kernel, por lo que también se denomina prioridad dinámica.
¿Cuáles son las prioridades y los procesos en tiempo real?
Veamos cuál es el valor de prioridad, que es el valor PRI visto en el comando ps o el valor PR visto en el comando superior.
Para distinguir estos conceptos, lo siguiente:
Unificado para usar el valor de nie para representar el valor de NI, o prioridad estática, es decir, la prioridad ajustada con los comandos nice y renice;
El valor de prioridad práctica indica los valores PRI y PR, o prioridad dinámica.
También unificamos el concepto de la palabra "prioridad" como el significado del valor de prioridad.
En el kernel, el valor de la prioridad del proceso está definido por una macro cuyo nombre es MAX_PRIO y cuyo valor es 140.
Este valor se compone además de dos valores adicionales, uno es la macro NICE_WIDTH que representa el rango de valores del valor correcto, y el otro es la macro MAX_RT_PRIO que representa el rango de prioridad en tiempo real del proceso en tiempo real.
Para decirlo claramente, Linux implementa 140 rangos de prioridad, que van de 0 a 139. Cuanto menor sea el valor, mayor será la prioridad. El buen valor de -20 a 19, asignado al rango de prioridad real es 100-139.
La prioridad predeterminada del proceso recién generado se define como:
#define DEFAULT_PRIO (MAX_RT_PRIO + NICE_WIDTH /2)
El valor correspondiente real es 0 para el valor nice.
En circunstancias normales, la prioridad de cualquier proceso es este valor, incluso si ajustamos la prioridad del proceso a través de los comandos nice y renice, su rango de valores no excederá el rango de 100-139, A menos que el proceso sea un proceso en tiempo real, su valor de prioridad se convertirá en uno de los rangos 0-99.
Aquí hay un mensaje de que el Linux actual es un sistema operativo que ya admite procesos en tiempo real.
¿Qué es un sistema operativo en tiempo real?
No explicaremos el significado de esto en detalle y su aplicación en el campo industrial. Si está interesado, puede consultar la Wikipedia del sistema operativo en tiempo real.
En pocas palabras, el sistema operativo en tiempo real debe garantizar que los procesos relevantes en tiempo real respondan en un corto período de tiempo sin grandes demoras y requieran una latencia de interrupción mínima y una latencia de cambio de proceso.
Para tal demanda, el algoritmo general de programación de procesos, ya sea O1 o CFS, no se puede cumplir, por lo que el núcleo asignará 100 prioridades prioritarias al proceso en tiempo real en el momento del diseño. Para ser más alto que la prioridad del proceso normal (buen valor), y el algoritmo de programación del proceso en tiempo real es diferente, usan un algoritmo de programación más simple para reducir la sobrecarga de programación.
En general, los procesos que se ejecutan en sistemas Linux pueden dividirse en dos categorías:
Sus La principal diferencia es la distinción por prioridad.
Todos los valores de prioridad en el rango de 0-99 son procesos en tiempo real, por lo que este rango de prioridad también se puede llamar prioridad de proceso en tiempo real, mientras que los procesos en tiempo no real están en el rango de 100-139.
El comando chrt se puede usar en el sistema para ver y establecer el estado de prioridad en tiempo real de un proceso. Primero podemos ver el uso del comando chrt:
En primer lugar, prestaremos atención a la sección de Opciones de Política que se muestra y encontraremos que el sistema proporciona cinco estrategias de programación para varios procesos.
Pero no se indica aquí que las cinco estrategias de programación se utilizan para los dos procesos respectivamente. Las estrategias de programación que se pueden usar para los procesos en tiempo real son: SCHED_FIFO, SCHED_RR, y para los procesos en tiempo no real: SCHED_OTHER, SCHED_OTHER, SCHED_IDLE.
La política de prioridad general del sistema es:
El proceso en tiempo real puede especificar un rango de prioridad de 1 a 99. El método para ejecutar un programa que se ejecutará en tiempo real es:
[root @ zorrozou-pc0 zorro] # chrt 10 Bash
[root @ zorrozou-pc0 zorro] # chrt -p $$
pid La política de programación actual de 14840: SCHED_RR
pid 14840 La prioridad de programación actual: 10
Primero, la instalación de VirtualBox y los pasos de instalación del paquete de expansión es demasia
I. Descripción general: Agregar un programa al kernel de Linux requiere las siguientes tres tareas
El uso de X condensadores y Y condensadores, y sus diferencias: 1. Bloqueo DC 2. Bypass 3. Acopla
Descarga NetBeans Toma netbeans-7.0beta2-ml-javaee-linux.sh como ejemplo #sh netbeans-7.0beta2
Cómo cambiar el modo de trabajo previo y de trabajo de apache
¿Qué tan bajo la configuración puede ejecutar Linux
Tareas programadas de Linux en cron
Método para comprobar el número de sistema Linux CPU
Visión general del hilo del nivel del usuario y del hilo del nivel del núcleo
Java en la carpeta del sistema Linux Chinese garbled problem
Inux sistema de gestión y mantenimiento - comando ifconfig
Cómo ver la versión actual de Linux
Partición del disco en Linux, formateo del sistema de archivos y dispositivo raid
Interpretación de varias palabras clave en el lenguaje Verilog HDL
Configuración básica de seguridad del sistema VPS de Linux tutorial básico
Configuración del servidor DNS
Quick Recovery Dwarf DOS Toolbox Uso
Win7 LAN compartir error 0x800704cf solución
Cómo habilitar la configuración del icono del área de notificación de Win7 /Win8.1 en Win10
Win10 ingresa los cuatro métodos de WinRE
Cómo elegir el servidor de servidor
Win7 eliminar el método de certificado de error del navegador IE
¿Cómo agrega o elimina Win10 los escritorios virtuales?
Trabajo y entretenimiento, establece el sonido de Win7, te da buen humor