El kernel de Linux sabe de pthreads en el espacio de direcciones del usuario (que no creo que sea ... pero no encontré ninguna información). ¿Cómo cambia el puntero de Instrucción cuando tiene lugar el cambio de hilo?¿Cómo se divide el intervalo de tiempo entre los subprocesos en un proceso?
Respuesta
1) El kernel no sabe acerca de los subprocesos de nivel de usuario. Sin embargo, NPTL no es el nivel de usuario
2) Esta es una pregunta realmente amplia. Deberías mirar un libro del sistema operativo. Se profundizará en ese tema y en todos los demás involucrados en un cambio de contexto.
hey ¡Gracias! Los libros de AFAIK, OS cubren el cambio de contexto del proceso. pero me estaba preguntando, ¿cómo se lleva a cabo la gestión del intervalo de tiempo entre los hilos ... si el kernel no tiene conocimiento del hilo, es algo así como parcialmente, las activaciones del programador? si no, cómo es el proceso, puede administrar y reservar mantener los hilos. y más de lo que siento, esto está más relacionado con la programación a nivel de usuario ... entonces, hizo la pregunta aquí ... – SpinLocked
Si está interesado en conocer cómo Linux hace estas cosas, consulte Desarrollo del Kernel de Linux por Robert Love. Cubre mucho, pero es bastante accesible. Disfrutar. – Avi
Bueno, el kernel de Linux no conoce los subprocesos de los usuarios (pthread sí lo hace en el espacio de usuario, además el kernel en realidad no se preocupa por ellos, excepto que solo necesita saber qué programar).
El puntero de instrucción se cambia en el kernel durante lo que se denomina un cambio de contexto. Durante este cambio, el núcleo esencialmente pregunta al programador qué sigue. el planificador le entregará una task_struct que contiene toda la información sobre el hilo y el manejador de interrupciones para un cambio de contexto continuará y establecerá los valores en la CPU en consecuencia (tablas de páginas, puntero de instrucción, etc.) y cuando ese código hecho, la CPU simplemente comienza a ejecutar desde allí.
Entonces, ¿es esencial decir que ... un hilo se apodera de una porción de tiempo completo, el proceso fue asignado? y no hay división de tiempo en el tiempo entre los hilos en un proceso? – SpinLocked
@SpinLocked Al kernel no le importa si se trata de un proceso o hilo (en realidad no hace distinción) solo le importa la prioridad (cantidad de tiempo para dar el hilo) y si es programable o no (esperando E/S o algo) –
Gracias. Probablemente dije mal la pregunta. Disculpas Tengo la intención de conocer el trabajo de programación del nivel de hilo. ¿Se trata de una división de tiempo simple a la asignación de subprocesos o existe alguna inteligencia en el nivel de proceso, que da a cada subproceso una parte del tiempo. – SpinLocked
La NPTL nativa (biblioteca de hilos posix nativos) utilizada en los mapas de Linux pthreads a "procesos que comparten recursos y, por lo tanto, parecen hilos" en el kernel. De esta forma, el programador del kernel controla directamente la programación de pthreads.
Un "pthread switch" se realiza exactamente con el mismo código (en el kernel) que maneja los switches de proceso. Simplificado, esto sería algo así como "almacenar el estado del proceso anterior; si el siguiente proceso utiliza un espacio de direcciones virtuales diferente, cambie los espacios de direcciones virtuales; cargue el siguiente estado de proceso;" (donde "estado de proceso" incluye el puntero de instrucción para el proceso/subproceso).
gracias tengo algo de información. ¿Podría citar alguna fuente de información adicional? – SpinLocked
Así es como Linux siempre ha hecho los hilos. Sí encontré algunas referencias. 1) desplácese hacia abajo hasta "5 Linux" en http://www.icir.org/gregor/tools/pthread-scheduling.html. 2) desplácese hacia abajo a "Implementaciones Linux de hilos POSIX" en http://linux.die.net/man/7/pthreads. – Brendan
- 1. cómo realizar la división en el intervalo de tiempo
- 2. ¿Cómo se comparten los registros entre subprocesos?
- 3. Cómo pasar objetos entre subprocesos al ejecutar un proceso System.Diagnostics
- 4. Spring Batch Cómo establecer el intervalo de tiempo entre cada llamada en un pedazo tasklet
- 5. ¿Cómo se divide el código HTML entre dos líneas?
- 6. ActionScript 3.0 + ¿Calcula el intervalo de tiempo entre dos fechas?
- 7. ¿Qué componentes del estado del programa se comparten entre subprocesos en un proceso multiproceso?
- 8. Visual Studio 2008 - ¿Obtener el intervalo de tiempo entre los puntos de ruptura?
- 9. mostrar el intervalo de tiempo muy bien
- 10. ¿Cómo se divide un infinito para el bucle (;;) en C?
- 11. ¿Cómo mido un intervalo de tiempo en C?
- 12. MySQL: intervalo promedio entre los registros
- 13. Cómo seleccionar elementos entre el intervalo
- 14. ¿Cómo agregar un intervalo de tiempo a un NSDate?
- 15. Doble toque en el intervalo de tiempo estándar
- 16. Grupo DateTime por un tiempo arbitrario intervalo
- 17. ¿Cómo se compartirían los datos entre un padre y el proceso hijo bifurcado en Haskell?
- 18. Ejecutar una función en el intervalo de tiempo en jQuery
- 19. intervalo de tiempo y UTC
- 20. Analizando el volcado de subprocesos de un proceso de Java
- 21. Intervalo de tiempo legible por humanos automático
- 22. ¿Cómo agregar dinámicamente el intervalo a la marca de tiempo?
- 23. Convirtiendo un flotador en un intervalo de tiempo
- 24. Cómo inicializo un intervalo de tiempo con segundos
- 25. Cortar un intervalo de tiempo en las partes
- 26. ¿Cómo se divide NSString en componentes?
- 27. Grupo Hibernate por intervalo de tiempo
- 28. Sincronización de subprocesos en tiempo real con subprocesos normales
- 29. comunicación entre subprocesos en java
- 30. ¿Cómo se asignan los subprocesos IIS7?
Si bien no existe una diferencia de programación entre subprocesos y procesos, puede agrupar subprocesos/procesos en grupos de control, cada uno de los cuales será tratado por el planificador como una "entidad de contabilidad", es decir, cargará todo el grupo de control para el Tiempo de CPU, por lo tanto, si agrupa, p. Ej. una invocación de maven (que crea muchos subprocesos), los grupos de control restantes obtendrán una participación más equitativa del tiempo de CPU. – ninjalj