Linux proceso de resumir los aspectos básicos del proceso de

  
representa una instancia de programa que se ejecuta, es la unidad más pequeña de la asignación de los recursos, este argumento es particularmente oficial.
proceso es una cosa muy importante, corremos el sistema al mismo tiempo corrió los N procesos que están trabajando en silencio con el código que hemos escrito, compilado, correr, va a generar un proceso. El proceso de código de programa, datos, variables (que ocupan la memoria del sistema), abra el archivo (descriptor de archivo) y los componentes ambientales. En general, para un sistema Linux, que está compartiendo las bibliotecas de código del programa y del sistema entre los procesos, por lo que en un momento dado, sólo existe en la memoria una copia del código.
debido proceso de esta cosa tan importante, este artículo será de Linux en el proceso de un resumen básico.
crear un proceso para crear una historia o iniciar comienza proceso. Consideremos el siguiente código:
# include < stdio.h > # include < unistd.h > # include < stdlib.h > int () {pid_t pid principal; char * msg; int n; printf ( " tenedor de partida programa \\ n "); pid = tenedor (); //crear un proceso //creado después de que el padre y el niño se toman de este interruptor run (pid) {case -1: perror (" tenedor . fracasado "); salida (EXIT_FAILURE); caso 0: //cuando el tenedor devuelve un valor de 0, indica que este es el proceso hijo msg = " este es el hijo "; n = 2; break; default: //cuando tenedor no es 0 y -1, indica que este es el proceso padre msg = " este es el padre "; n = 3; break;} for (; n > 0; -N) {printf ("% s \\ n ", msg); sueño (1);} de salida (EXIT_SUCCESS);} usamos la función tenedor para crear un proceso hijo, declaraciones de función de horquilla son los siguientes:
# include < unistd.h > tenedor pid_t (void); devuelve la función tenedor Pid_t un tipo de valor, tipo pid_t es un tipo int. Cuando la llamada al proceso de creación del tenedor tiene éxito, el niño y el padre al mismo tiempo comenzó a correr a partir del código después de la función tenedor. Desde entonces comenzó a correr desde el mismo lugar, cómo distinguir un proceso hijo o proceso padre? valor de retorno
Linux se utiliza para distinguir el tenedor, como sigue:
  • Cuando el valor de retorno pid_t tenedor de -1, significa que se ha producido el proceso de creación de un error;
  • cuando el valor de retorno pid_t tenedor de 0, que representa un sub-proceso;
  • cuando el valor de retorno tenedor pid_t no es 0 y -1, que indica un proceso padre.
    en el código anterior, en mi opinión es el valor de retorno de tenedor para determinar un proceso hijo o proceso padre. Como todos se sienten extraños. Estructura
    proceso de nuevo, el proceso es muy importante, tenemos que entender, entonces para estructurar el proceso tendría que decir. Así que ya que se utiliza un tenedor para crear un proceso, la estructura del proceso de la memoria interna es la forma en que? Echamos un vistazo.


    se muestra arriba, que no tomamos en cuenta las cifras mencionadas éstos en la codificación real, pero lo que muestra la figura anterior, pero es la clave para entender tanto los procesos primarios y secundarios, un montón de preguntas sobre el proceso, sino que también están empezando a pensar en base a la figura de. En la parte de atrás, voy a dedicar unas preguntas para analizar por qué la imagen de memoria proceso es tan importante.
    planificación de procesos en un único procesador, al mismo tiempo sólo un proceso puede ejecutar otros procesos se están ejecutando en un estado de espera. Sin embargo, en realidad nos sentimos al mismo tiempo hay varios procesos en y " al mismo tiempo, y " ejecutarse, por lo que?
    Caozuoxitong de búsqueda: 'daré cada proceso de un cierto tiempo de funcionamiento, llamado y " intervalo de tiempo y ". En el proceso de este y " ejecuta dentro, debido a la y "; y " tiempo tiempo rebanada rebanada y " es muy corto, dando la ilusión de una pluralidad de un programa se está ejecutando al mismo tiempo. Caozuojitong
    cómo el proceso de programación que? Hay muchas reglas de planificación de procesos, tales como algoritmo de programación basado en la prioridad, algoritmo de planificación FIFO.
    Linux kernel proceso planificador, planificación de procesos se realiza de acuerdo a la prioridad del proceso. procesos de alta prioridad se ejecutan con mayor frecuencia.
    proceso en estado
    proceso de Linux tiene cinco estados:

  • ejecutar (correr o esperando en la cola de ejecución)
  • interrupción (Sleep, bloqueado, esperando una condiciones de formación o recibir señales)
  • ininterrumpida (señal recibida no se despierta y no se puede ejecutar, el proceso debe esperar hasta que se produce una interrupción)
  • muerto (el proceso se ha terminado, pero el descriptor proceso existiendo hasta que el padre llama wait4 () llamada al sistema después de la liberación)
  • parada (proceso después SIGSTOP, SIGSTP, SIGTIN, SIGTOU recibido la señal se detiene)
    cuando usamos el comando ps -aux al ver el estado del proceso, las letras identifican el proceso y qué significa? , El estado del proceso de identificación de carácter específico se muestra en la siguiente tabla:

    bandera del estado
    estado descrito
    operación de parada T R D ininterrumpida interrumpir S Z muerto pero
    , a veces, veremos algún otro identificador, por ejemplo:

    bandera del estado
    descripción de estado
    muerto < W; proceso de alta prioridad N baja prioridad página de bloqueo de memoria de proceso de nivel L
    véase más arriba se interrumpe ah, ah no se puede interrumpir, parar, ah, ah, pesa muertos directos, a continuación, al final la forma de entender estos conceptos?

  • En el estado operativo Linux, proceso sólo el tiempo de espera de la CPU se llama proceso de listas, se colocan en una cola de ejecución, una bandera de estado del proceso está listo TASK_RUNNING. Una vez que un segmento de tiempo de proceso en ejecución se agota, Linux kernel planificador privará el control de la CPU de este proceso, y seleccionar un proceso apropiado puesto en funcionamiento a partir de la cola de ejecución.
  • sueño del sueño de Linux en el proceso, hay dos:


  • Una de ellas es el estado de sueño interrumpible, su TASK_INTERRUPTIBLE bandera del estado;
  • el otro es el estado de sueño ininterrumpido, la bandera del estado es TASK_UNINTERRUPTIBLE. El proceso puede ser el sueño interrumpido va a dormir hasta que una condición sea verdadera, por ejemplo, se genera una alarma de proceso, el proceso está esperando la liberación de recursos del sistema, o para enviar una señal de alerta puede ser una condición del proceso. estado de sueño ininterrumpido y puede interrumpir el estado similar al sueño, pero con una excepción, que es transmitir una señal al proceso de este estado de reposo no puede cambiar su estado, lo que significa que no responde a la señal de despertar. estado de sueño ininterrumpido es generalmente usa con menos frecuencia, pero en ciertos casos esta condición es aún muy útil, por ejemplo: el proceso debe esperar, no puede ser interrumpido hasta que se produzca un evento particular.

    SIGSTOP cuando se transmite una señal al proceso, será debido a la respuesta a la señal entra en el estado TASK_STOPPED (a menos que el proceso sin responder a la señal en sí es estado TASK_UNINTERRUPTIBLE).
    (Señal SIGSTOP y SIGKILL como es obligatorio. No permite el proceso de usuario por la serie de señal correspondiente a la llamada del sistema para volver a poner la función de procesamiento de señal.) SIGCONT transmite una señal al proceso, se puede permitir que recuperarse de estado TASK_STOPPED TASK_RUNNING a estado.

  • Proceso de estado inerte en el proceso de retirada, el estado en el TASK_DEAD. En este proceso las salidas, todos los recursos se recuperarán posesión del proceso, además de la estructura task_struct (y algunos recursos). Así que el proceso task_struct dejó con una cáscara tal, se conoce como zombies. La razón por la reserva task_struct, porque task_struct mantuvo en el código de salida del proceso, así como algunos datos estadísticos. El proceso padre es probable que estar preocupado por la información. Por ejemplo, en la cáscara, $? Variable contiene el código de salida de la última salida del proceso en primer plano, y esto se utiliza a menudo como código de salida para determinar si la declaración condicional. Por supuesto, el núcleo puede guardar esta información en otros lugares, pero la estructura task_struct relevado a ahorrar algo de espacio. Pero el uso de task_struct estructura es más conveniente, ya que en la relación de búsqueda del núcleo se ha establecido, así como la relación padre-hijo entre los procesos de pid a task_struct. task_struct liberado, es necesario establecer una nueva estructura de datos para permitir a los padres a encontrar la información de salida de los procesos hijos.


    proceso padre puede ser invocado por la familia espera de sistemas (como wait4, waitid) para esperar una salida o algunos sub-proceso y obtener su información de salida. A continuación, espere serie de llamadas al sistema será la forma en que los órganos del proceso hijo (task_struct) también dio a conocer.

    En el curso de las salidas de proceso hijo, el núcleo del proceso padre enviará una señal para notificar al proceso padre a " ". cadáveres La señal por defecto es SIGCHLD, pero cuando se crea un proceso hijo llamando al sistema de copia, se puede establecer esta señal.

    puede ser fabricado por un proceso EXIT_ZOMBIE estado siguiente código:
    Si (tenedor ()), mientras que (1) del sueño (100);

    ps -aux verá a continuación utilizando un rígido procesa la información.

    Mientras que el padre no sale, el proceso hijo se ha producido un estado zombi. Así que si el proceso sale de los padres de ella, que vienen para el niño y " "? Cadáveres

    Cuando el proceso finalice, será el anfitrión de todos los procesos secundarios a otros procesos (procesos secundarios para convertirse en otro proceso). Gestionado a quién? Podría ser el siguiente proceso de grupo de proceso (si existe), o el proceso de salida del proceso No. 1 se encuentra. Por lo que cada proceso, cada momento tiene un proceso padre presencia. A menos que sea el proceso Nº 1.

  • Copyright © Conocimiento de Windows All Rights Reserved