proceso de roscado artículo clásico Linux

  
 

proceso es actividades de ejecución de programas en el equipo. Cuando ejecutas un programa, comienzas un proceso. Es evidente que el programa está muerto (estática), el proceso está vivo (dinámico). El proceso se puede dividir en los procesos del sistema y de usuario. Los que utiliza para completar el sistema operativo
función del proceso de varios

es un proceso del sistema que se ejecuta en el sistema operativo del propio Estado; el proceso de usuario es que todos los procesos iniciados por ti. Proceso es el sistema operativo de la unidad de asignación de recursos.

En Windows
, el proceso ha sido refinado como un hilo, es decir, hay un número de unidades más pequeñas puede operar independientemente de la siguiente proceso.

procesos y subprocesos bajo Linux artículo relacionado leen mucho, creo que esto se puede decir que el más clásico

Lo básico: hilos y procesos

Según los libros de texto definición, el proceso es la unidad mínima de gestión de recursos, el hilo es la unidad más pequeña de la ejecución del programa. En el diseño del sistema operativo, evolucionado a partir de la rosca proceso, el propósito principal es mejor SMP apoyo, y reducir (proceso /hilo) contexto sobrecarga de conmutación.

No importa qué tipo de sistema de puntos, de acuerdo con un proceso requiere por lo menos un hilo de ejecución, el proceso de gestión de recursos (como la CPU, memoria, archivos, etc.) como su directiva, y el hilo asignado a una CPU ejecución. Un proceso puede tener múltiples hilos de supuesto, en este momento, si el proceso se ejecuta en máquinas SMP, se puede utilizar simultáneamente múltiples CPU para realizar varios hilos, para conseguir el mayor grado de paralelismo para mejorar la eficiencia, al mismo tiempo, incluso en una sola CPU en la máquina, multi-threading modelo para el proceso de diseño, como el modelo multi-proceso de años en lugar de los modelos de procesos individuales, hacer el diseño más compacto, más completa, la eficiencia de la ejecución del programa también es mayor, como el uso de varios subprocesos para responder a la entrada múltiple , modelo en una característica de tiempo multihilo se implementa realmente también se puede utilizar para lograr modelo multi-proceso, en comparación con el último, el contexto hilo de conmutación de cabeza a ser más pequeño que el proceso, semánticamente, mientras responde a múltiples insumos tales funciones, de hecho comparten todos los recursos excepto la CPU.

importancia para los dos modelos de roscado, respectivamente, desarrolló un threads a nivel de núcleo y de nivel de usuario roscar dos modelos de subprocesamiento, criterios de clasificación son el programador de subprocesos o fuera del núcleo en el núcleo. El primero es más propicio para el uso concurrente de múltiples recursos del procesador, mientras que el último se considera más el cambio de contexto por encima. En el sistema comercial actual, por lo general se utilizan en combinación los dos, tanto para proporcionar el hilo de núcleo para satisfacer las necesidades de sistema de SMP, también soporta el mecanismo para conseguir otro conjunto de hilos en el modo de usuario con la forma en la biblioteca de hilo, en cuyo caso un hilos de núcleo en una pluralidad de hilos de programador de modo de usuario. Por mucho que la tecnología, " híbrida " se suele dar lugar a una mayor eficiencia, sino también para lograr una mayor dificultad, para " " sencilla; ideas de diseño, Linux no se dio cuenta de la mezcla de inicio plan de modelo, pero utiliza otra idea en la realización de " quot mezclado y;.

En el mecanismo de aplicación de roscado específica se puede lograr en el sistema operativo hilos del núcleo también se pueden conseguir en el exterior nuclear, lo que obviamente requiere por lo menos logrado el proceso nuclear, mientras que los antiguos requisitos generales en el núcleo, mientras también es compatible con el proceso. modelo hilo de nivel Core obviamente requiere el apoyo de la primera, mientras que el modelo de rosca de nivel de usuario no se basa necesariamente en el último de lograr. Esta diferencia, señaló anteriormente, son dos clasificaciones diferentes formas estándar de traer.

Cuando el núcleo soporta tanto el proceso también es compatible con hilos, el hilo se puede conseguir - el proceso de " muchos- " modelo, a saber, un hilo de un proceso de programación por el núcleo, mientras que también puede ser como un grupo de subprocesos programador a nivel de usuario, seleccione los hilos a nivel de usuario apropiadas que se ejecutan en su espacio. Esta es la mencionada " mixta " modelos roscado, sistemas multi-procesador puede satisfacer la necesidad, pueden reducir el máximo overhead programación. Este modelo de hilos se puede realizar plenamente las normas POSIX1003.1c de la gran mayoría de los sistemas operativos comerciales (tales como DigitalUnix, Solaris, Irix) se utilizan. En el hilo de núcleo aplicación se puede dividir en " uno ", " muchos-a-" dos modelos, la primera corresponde a un hilo con un proceso central (tal vez un proceso ligero), la programación de subprocesos es equivalente a la programación de proceso, al núcleo para completar, mientras que el último es completamente fuera de la multi-threading núcleo, la programación es también el modo de usuario para completar. Esta última es la implementación de un modelo simple hilo a nivel de usuario se mencionó anteriormente, obviamente, fuera de este hilo programador de subprocesos núcleo funcionando, de hecho, sólo es necesario para completar la pila de conmutadores, programación de sobrecarga es muy pequeña, pero debido a que la señal de núcleo (si a) se basa en el proceso como una unidad, y por lo tanto no puede localizar el hilo, por lo que este método no puede ser utilizado para lograr sistema multi-procesador, y esta demanda se está volviendo más y más, por lo tanto, en realidad síncrono o asíncrono para lograr las discusiones a nivel de usuario puros, excepto para fines de investigación algoritmo, que casi ha desaparecido.

Linux kernel sólo proporciona soporte para procesos ligeros, lo que limita la realización del modelo de hilos más eficiente, pero se centró en la optimización del proceso de programación por encima de Linux, en cierta medida, compensar este defecto. El mecanismo de rosca más popular se utiliza un hilo LinuxThreads - el proceso de " un " modelo, la programación para el núcleo, y en el mecanismo de gestión de hilos a nivel de usuario para lograr, incluyendo procesamiento de señales, incluyendo. mecanismo operativo Linux-hilos de Linux es el foco de este artículo se describen.

dos .Linux2.4 central de proceso ligero para lograr

La definición del proceso inicial contiene los procedimientos, los recursos y la ejecución de tres partes, que normalmente se denomina el código y los recursos a nivel de sistema operativo programar los recursos incluyen típicamente memoria, recursos IO, la sección de procesamiento de señales, y la ejecución del programa por lo general se entiende como el contexto de ejecución, incluyendo la ocupación de la CPU, y posteriormente desarrollado en un hilo. Antes de la aparición del concepto de hilos, con el fin de reducir la sobrecarga de conmutación de procesos, los diseñadores de sistemas operativos revisados ​​gradualmente el concepto del proceso, y permitir gradualmente el proceso comparten algunos recursos desde el cuerpo principal despojados a cabo, lo que permite una cierta parte del proceso de compartir recursos, como archivos, señales , memoria de datos, e incluso el código, que desarrolló el concepto de procesos ligeros. Linux 2.0.x versión del núcleo ha logrado un proceso ligero, la aplicación puede llamar a la interfaz a través de un sistema único clon (), designado con diferentes parámetros para crear un proceso de peso ligero es un proceso normal. En el núcleo, clone () llamada después de paso de parámetros de llamada, y explicaría do_fork (), el núcleo también es una función de tenedor (), en última instancia vfork () llamada al sistema:

< linux-2.4 0,20 /kernel /fork.c >

intdo_fork (unsignedlongclone_flags, unsignedlongstack_start,

structpt_regs *, reglas, unsignedlongstack_size) guía

clone_flags que se toma de la macro " o " valor:

< linux-2.4.20 /include /linux /sched.h >

#defineCSIGNAL 0x000000ff /* signalmasktobesentatexit * /

#defineCLONE_VM 0x00000100 /* * setifVMsharedbetweenprocesses /

# defineCLONE_FS0x00000200 /* * setiffsinfosharedbetweenprocesses /

# defineCLONE_FILES0x00000400 /* * setifopenfilessharedbetweenprocesses /

#defineCLONE_SIGHAND 0x00000800 /* * setifsignalhandlersandblockedsignalsshared /

#defineCLONE_PID 0x00001000 /* * setifpidshared /

#defineCLONE_PTRACE 0x00002000 /* * setifwewanttolettracingcontinueonthechildtoo /

#defineCLONE_VFORK 0x00004000 /* setiftheparentwantsthechildtowakeitup onmm_release * /

#defineCLONE_PARENT 0x00008000 /* * setifwewanttohavethesameparentasthecloner /

Copyright © Conocimiento de Windows All Rights Reserved