English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tecnologías subyacentes que soportan Java NIO y NodeJS

las tecnologías subyacentes que apoyan Java NIO y NodeJS

es sabido que en las últimas versiones de Java se han añadido algunas características para Java NIO, NIO2el apoyo, al mismo tiempo, una de las ventajas más elogiadas de la tecnología de pila de NodeJS es su alta eficiencia IO, por lo que el tema que vamos a discutir hoy es las tecnologías subyacentes que apoyan estas tecnologías.

antes de comenzar, debemos plantear una pregunta:

por qué NodeJS y Java NIO2¿por qué no apareció en un tiempo más temprano?

Respuesta:creo que las tecnologías subyacentes son aún inmaduras.

entonces, ¿qué son las tecnologías subyacentes? Correcto, creo que mucha gente ya ha adivinado, es la tecnología del sistema operativo. Las dos conceptos que proponemos en este artículo son Java NIO2y NodeJS sin excepción son tecnologías de estado de usuario o, en otras palabras, tecnologías de capa de aplicación, y estas tecnologías de capa de aplicación se ejecutan sobre el sistema operativo. Al mismo tiempo, con el progreso del sistema operativo, los modelos de programación que puede soportar también se vuelven más ricos. Se puede decir que estas dos tecnologías evolucionaron completamente para aprovechar los beneficios del progreso del sistema operativo. Generalmente, la tecnología que primero disfruta de este beneficio es C\C++debido a que el progreso del sistema operativo ofrece la mayoría de las llamadas del sistema más recientemente, y C\C++es lo más conveniente para aplicar estas llamadas del sistema, pero también es el más complejo. Otras plataformas para obtener el mismo rendimiento, deben evolucionar constantemente, encapsular, para que los usuarios puedan aprovechar estos beneficios. Una vez que una plataforma se detiene la actualización, es el momento en que esta plataforma cae en desgracia. Para el usuario, cuanto más conveniente sea el encapsulamiento, más amigable será para el usuario, y más personas lo usarán. Aunque muchas personas pueden escribir rápidamente código basado en estas plataformas, a menudo no capturan el espíritu, porque en esencia no entienden los motivos y principios de estas tecnologías. A continuación, discutiremos estas tecnologías que son tecnologías subyacentes a estas dos tecnologías.

En cualquier diseño de OS, lo siguiente5este modelo IO es indispensable.

1. blocking I/O
2. nonblocking I/O
3. I/O multiplexing (select, poll y epoll)
4. I impulsado por señales/O (SIGIO)
5. I asincrónico/O (las funciones aio_ POSIX)

1. blocking I/O

Como se muestra en la figura, una ventaja de este modelo IO es que la programación es simple, y también es uno de los modelos IO que el sistema operativo ha soportado por primera vez, pero la desventaja es que las llamadas del sistema bloquean la ejecución de la hilo dinámico del usuario, lo que lleva al desperdicio de tiempo de CPU y una baja eficiencia de IO.

2. nonblocking I/O

Como se muestra en la figura, una mejora de este modelo IO es que IO no es bloqueante, pero requiere una larga espera, lo que también desperdicia ciclos de reloj de CPU.

3. I/O multiplexing (select, poll y epoll)

Como se muestra en la figura, este modelo de IO es el modelo de IO más estable proporcionado por el sistema operativo hoy en día, la mayoría de las aplicaciones populares se construyen basándose en este modelo de IO, como NodeJS, pero estos plataformas a menudo añaden una capa de encapsulación sobre este modelo para soportar directamente AIO.

4. I impulsado por señales/O (SIGIO)

Como se muestra en la figura, este modelo de IO se describe en los materiales debido a la comparación con el modelo3No tiene ventaja en términos de rendimiento, y debido a que el soporte del sistema es inestable, rara vez se adopta por los diseñadores.

5. I asincrónico/O (las funciones aio_ POSIX)

Como se muestra en la figura, este modelo de IO es el AIO más perfecto, el modelo de programación también es el más simple, pero los sistemas operativos que pueden soportar perfectamente este modelo son muy pocos, según la información en línea, Linux está haciendo esfuerzos en este aspecto, una vez que el sistema operativo hace progresos en este aspecto, los marcos de programación, plataformas y modelos de programación pueden necesitar una gran simplificación.

Aunque este modelo es poco apoyado por los sistemas operativos, no significa que ahora no haya este modelo AIO, muchos marcos han hecho este trabajo, en el estado de usuario simulan AIO, permitiendo que los usuarios se concentren más en el código lógico de negocios.

6. Sincronización y asincronía, bloqueo y no bloqueo

La sincronización y la asincronía se refieren a la interacción entre la aplicación y el núcleo. La devolución después de que se lean los datos es sincrónica, y la devolución inmediata es asincrónica. El bloqueo y el no bloqueo se refieren a los procesos y hilos, en el modo de bloqueo, la lectura o escritura del hilo espera constantemente, y en el modo no bloqueo, la lectura o escritura del hilo devuelve inmediatamente un valor de estado.

Esto es todo el contenido de este artículo, espero que sea útil para su aprendizaje y que todos apoyen el tutorial de grito.

Declaración: El contenido de este artículo se ha obtenido de la red, es propiedad del autor original, el contenido se ha contribuido y subido por usuarios de Internet, este sitio no posee los derechos de propiedad, no se ha realizado un procesamiento editorial manual y no asume responsabilidades legales relacionadas. Si encuentra contenido sospechoso de infracción de derechos de autor, le invitamos a enviar un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, reemplace # con @) para denunciar y proporcionar evidencia relevante. Una vez verificada, este sitio eliminará inmediatamente el contenido sospechoso de infracción.

Te gustará