Alguien puede darse cuenta de que después de que un proceso salga, el proceso no desaparece de inmediato, dejando una estructura de datos llamada zombie. En los cinco estados del proceso de Linux, el proceso zombie es un tipo muy especial: ha abandonado casi todo el espacio de memoria, no tiene código ejecutable, no se puede programar, solo mantiene una posición en la lista de procesos, registra el proceso. La información como el estado de salida es recopilada por otros procesos, y el proceso zombie ya no ocupa ningún espacio de memoria.
La razón del proceso zombie, volviendo a Unix, los diseñadores de Unix no están diseñando esto porque no tienen nada que ver con las cosas geniales. Como se mencionó anteriormente, el proceso zombie contiene mucha información que es muy importante para los programadores y administradores de sistemas. Primero, ¿cómo muere este proceso? ¿Es una salida normal, o hay un error, o se ve obligado a retirarse por otros procesos? En otras palabras, ¿cuál es el código de salida para este programa? Segundo, ¿cuál es el tiempo total de CPU del sistema y el tiempo total de CPU del usuario ocupado por este proceso? El número de fallos de página y el número de señales recibidas. Esta información se almacena en el proceso zombie. Imagínese si no hay un proceso zombie, cuánto tiempo se ejecuta el proceso. No sabemos, una vez que sale, toda la información relacionada se borra inmediatamente del sistema, y si el proceso principal o El administrador del sistema necesita usarlo, así que tengo que parpadear.
Entonces, después de que el proceso finalice, el sistema cambiará el estado del proceso a Zombie, y luego le dará tiempo para esperar a que el proceso primario recopile su información de salida, ya que el proceso principal puede ser Ocupado con otras cosas no se puede recopilar, por lo que el uso del estado Zombie indica que el proceso sale y está a la espera de que el proceso principal recopile información.
El proceso de Zombie no puede ser claro con el comando kill, porque el proceso ha sido cancelado. Si necesita limpiar dicho proceso, debe borrar su proceso principal o esperar un tiempo prolongado para que el núcleo lo elimine. Debido a que el proceso de Zombie también ocupa un número de ID de proceso, si hay muchos de esos procesos, no es propicio para la programación de procesos del sistema.
Aquí, veamos un ejemplo:
/* zombie.c * /# include < sys /types.h > #include < unistd.h > main () {pid_t pid; pid = fork (); if (pid < 0) {/* Si el error es * /printf (" error ocurrido \\ n " quot;);} else if (pid == 0) {/* Si es un proceso secundario * /Exit (0);} else {/* Si es el proceso principal * /sleep (60); /* sleep 60 seconds * /wait (NULL); /* collect zombie process * /}}
Compile este programa: < Br> $ cc zombie.c -o zombie
Ejecute el programa en segundo plano para que podamos ejecutar el siguiente comando
$ ./zombie &[1] 1217
enumerar los procesos en el sistema
$ ps -ax ... ... 1137 pts /0 S 0:00 -bash1217 pts /0 S 0:00 ./zombie1218 pts /0 Z 0:00 [zombie] 1578 pts /0 R 0:00 ps - Axe
donde "Zor" es el sello distintivo del proceso zombie, lo que significa que el proceso 1218 ahora es un proceso zombie.
La recopilación de información sobre los procesos de Zombie y la terminación de estos procesos de zombie requiere que usemos las llamadas a la espera y las llamadas de espera en el proceso principal. El rol de ambos es recopilar información dejada por el proceso zombie mientras el proceso desaparece por completo.
Al mantener el archivo del blog de hoy, encontré que algunas carpetas y archivos en la ruta del siti
badblocks es el comando o utilidad en Linux como sistema operativo que puede escanear o probar nuest
De repente se encontró que el sitio web no se puede abrir, la base de datos muestra que el enlace no
BSD (Berkeley Software Distribution) es un derivado de Unix que fue desarrollado y publicado por la
¿Cómo resolver el problema de CentOS Linux no puede montar la unidad de CD-ROM
¿Cómo agregar /eliminar usuarios de FTP y establecer permisos en Linux?
Tutorial básico de conversión de codificación de Linux
Cálculo del tiempo de shell de Linux y método de cálculo de diferencia de tiempo
La escritura del controlador de Linux
Linux y win7 problema de error de tiempo del sistema dual
La computadora Win7 no puede arrancar el código de la pantalla azul 0x000007B ¿cómo hacerlo?
¿Dónde está la variable de entorno win7? Tutorial de configuración de la variable de entorno Win7
El método Win10 para modificar la contraseña de usuario
Cómo ver amigos en WeChat no está en línea
Cómo configurar el enrutador inalámbrico
Win7 eliminar método de carpeta de información de volumen del sistema
Fallas y soluciones de las aplicaciones del sistema Windows XP
Mito maquillaje muestra cómo hacer una foto maquillaje belleza mapa maquillaje show tutorial