Introducción a la distribución de subprocesos múltiples en la CPU
Hay dos problemas clave con el subproceso múltiple de Java: la programación concurrente y la oscilación del reloj de la CPU. Como todos sabemos, en los sistemas DOS hace mucho tiempo sólo se podía realizar una única tarea. Pero ahora el Windows que utilizamos puede realizar operaciones multitarea, como chatear en línea, escuchar música, descargar películas, etc. Entonces, ¿cómo admite el sistema operativo la multitarea? Cada vez que se abre un programa, significa iniciar un proceso y asignarle el espacio de memoria correspondiente, para que los programas puedan ejecutarse al mismo tiempo. Una CPU tiene una frecuencia de reloj, que es la cantidad de instrucciones de la CPU que puede ejecutar por segundo, y una CPU en realidad solo puede ejecutar una (o más) instrucciones en un ciclo de reloj.
El sistema operativo administra los subprocesos del proceso, asignando tiempo a cada proceso y luego, dentro de cada proceso, el código del programa mismo maneja la asignación de tiempo a los subprocesos en ese proceso, con múltiples subprocesos interactuando entre sí de una manera muy corto período de tiempo. Por lo tanto, esto da la impresión de que se están ejecutando varias tareas y subprocesos al mismo tiempo, pero de hecho, el programa todavía se ejecuta de forma asincrónica.
Dado que se ejecuta de forma asincrónica, se puede entender que la CPU se ejecuta en serie en lugar de en paralelo. Entonces, ¿cómo se llama subproceso múltiple? El profesor Chen, programador de Shangxuetang Baizhan, señaló que la razón es que la CPU funciona demasiado rápido y nuestra velocidad de lectura de E/S, transmisión de red, conexión de base de datos, etc., son muy lentas en comparación con la velocidad de computación de la CPU. Para utilizar completamente la CPU, se puede reducir el tiempo de inactividad de la CPU.
El propósito del subproceso múltiple es maximizar el uso de los recursos de la CPU. En la CPU, la frecuencia principal = FSB × multiplicador Cuanto mayor sea la frecuencia principal, más instrucciones se pueden completar en un ciclo de reloj. La CPU Por supuesto, la velocidad es más rápida. En el pasado, la forma de aumentar la velocidad de la CPU era aumentar la frecuencia principal de la CPU. Sin embargo, a medida que pasa el tiempo, la frecuencia principal de la CPU ha alcanzado. límite físico y es difícil aumentarlo más. Pero a medida que pasa el tiempo, la frecuencia principal de la CPU ha alcanzado su límite físico y es difícil aumentarla. Por lo tanto, para solucionar este problema, las CPU multinúcleo se están volviendo cada vez más populares.
Hay dos preguntas importantes sobre el subproceso múltiple de Java:
Primero, una breve introducción a la memoria. En Java, todas las variables se almacenan en la memoria principal y cada hilo tiene su propia memoria de trabajo, que suele ser una copia de las variables en la memoria principal. Los subprocesos operan en todas las variables en la memoria de trabajo. Los subprocesos no pueden acceder directamente entre sí. Las transferencias de variables deben completarse en la memoria principal. La comunicación entre subprocesos es simple y rápida. Los procesos son independientes entre sí y no pueden comunicarse entre sí sin depender de la red.
La segunda pregunta es sobre la programación de subprocesos. La programación de CPU de cada subproceso es aleatoria (programación de tiempo compartido), mientras que en Java, la JVM es responsable de la programación de subprocesos y puede asignar mejor el uso de la CPU. La programación de subprocesos generalmente tiene dos modos, a saber, programación de tiempo compartido y programación preventiva. La programación de tiempo compartido se asigna uniformemente en orden; la programación preventiva se asigna según la prioridad.