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

Java NIO와 NodeJS의 하부 기술을 지원

支撑Java NIO 与 NodeJS的底层技术

众所周知在近几个版本的Java中增加了一些对Java NIO、NIO2의 지원과 동시에 NodeJS 기술 스택에서 가장 인정받는 장점 중 하나는 고성능 IO입니다. 따라서 우리가 오늘 논의할 주제는 이러한 기술을 지원하는 하부 기술입니다.

저녁을 시작하기 전에 제기되어야 할 하나의 문제는:

NodeJS와 Java NIO2추가로 어떻게 나타났을까요?

답변:개인적으로는 하부 지원 기술이 아직 성숙하지 않다고 생각합니다.

그래서, 하부 기술이란 무엇을 의미할까요? 맞습니다, 많은 사람들이 이미 예상했을 것입니다. 운영 체제 기술입니다. 이 글에서 제안하는 두 개념 Java NIO2와 NodeJS는 모두 사용자 모드 기술이나 다른 말로 하면 애플리케이션 레이어 기술로, 이러한 애플리케이션 레이어 기술은 OS 위에서 실행되며, 동시에 운영 체제의 진화와 함께 지원할 수 있는 프로그래밍 모델도 더 다양해집니다. 이렇게 말하면, 이 두 기술은 운영 체제의 진화로 인한 혜택을 누릴 수 있도록 진화한 기술입니다. 일반적으로 이러한 혜택을 가장 먼저 누릴 수 있는 기술은 C\C++، OS의 진화로 인해 최신 제공된 대부분은 시스템 호출이며, C\C++은 이러한 시스템 호출을 가장 쉽게 사용할 수 있는 것이지만, 동시에 가장 복잡합니다. 다른 플랫폼은 동일한 성능을 얻기 위해 지속적으로 진화하고, 포장하여 사용자가 이러한 혜택을 받을 수 있도록 해야 합니다. 플랫폼이 진화하지 않으면, 이 플랫폼의 쇠퇴가 시작됩니다. 사용자에게 포장이 더 쉬울수록, 사용자에게 더 친숙하게 느껴지며, 사용자가 더 많이 사용할 가능성이 있습니다. 많은 사람들이 이러한 플랫폼을 기반으로 코드를 빠르게 작성할 수 있지만, 대부분 그 본질을 이해하지 못하기 때문에 기술의 동기와 원리를 이해하지 못합니다. 아래에서 논의하는 기술은 이 두 기술과 관련된 하부 기술입니다.

어떤 OS 설계에도 관계없이, 아래5이 모든 IO 모델은 필수적입니다.

1. blocking I/O
2. nonblocking I/O
3. I/O 복합 선택 (select, poll 및 epoll)
4. 신호 유도 I/O (SIGIO)
5. 비동기 I/O (POSIX aio_ 함수)

1. blocking I/O

그림에서 보듯이, 이 IO 모델의 장점은 프로그래밍이 간단하며, OS가 가장 먼저 지원한 IO 모델 중 하나입니다. 단점은 시스템 호출이 사용자 동적 스레드의 실행을 블로킹하여 CPU 시간 낭비와 IO 효율성이 낮습니다.

2. nonblocking I/O

그림에서 보듯이, 이 IO 모델의 개선된 점은 IO가 비대기형이지만 장기적인 루프가 필요하며, 그로 인해 CPU 클록サイ클을 낭비합니다.

3. I/O 복합 선택 (select, poll 및 epoll)

그림에서 보면, 이러한 IO 모델은 현재 OS가 제공하는 가장 안정적인 IO 모델이며, 대부분의 주요 애플리케이션은 이러한 IO 모델을 기반으로 구축되었습니다. 예를 들어 NodeJS,但这些平台通常在这一模型之上增加一层封装来直接支持 AIO.

4. 신호 유도 I/O (SIGIO)

그림에서 보면, 이러한 IO 모델은 대조 모델3성능 우위가 없으며, 시스템 지원 불안정성으로 인해 설계자들이 드물게 사용합니다.

5. 비동기 I/O (POSIX aio_ 함수)

그림에서 보면, 이러한 IO 모델은 가장 완벽한 AIO이며, 프로그래밍 모델도 가장 간단하지만, 이 모델을 완벽히 지원하는 OS는 많지 않습니다. 인터넷 자료에 따르면 Linux가 이 분야에서 노력하고 있으며, OS가 이 분야에서 진전을 이루면, 프로그래밍 프레임워크, 플랫폼, 프로그래밍 모델은 대폭 간소화될 수 있습니다.

이 모델은 OS의 지원이 드물지만, 이제 이러한 AIO 모델이 없는 것은 아닙니다. 많은 프레임워크가 이 분야에서 일을 하고 있으며, 사용자 상태에서 AIO를 모의하여 사용자가 더 많은 비즈니스 로직 코드에 집중할 수 있도록 합니다.

6. 동기 비동기, 블록 및 비블록

동기화와 비동기화는 애플리케이션과 커널의 상호작용에 대해 말합니다. 데이터를 읽고 돌아오기 전까지 기다리는 것이 동기화이고, 즉시 돌아오는 것이 비동기화입니다. 블록과 비블록은 프로세스와 스레드에 대해 말합니다. 블록 방식에서는 읽거나 쓰는 스레드가 계속 기다리지만, 비블록 방식에서는 읽거나 쓰는 스레드가 즉시 상태 값을 반환합니다.

이것이 본 문서의 모든 내용입니다. 많은 도움이 되었기를 바랍니다. 또한, 노래 튜토리얼을 많이 지지해 주시기 바랍니다.

명시: 본 문서의 내용은 인터넷에서 수집된 것이며, 저작권은 원저자에게 있습니다. 내용은 인터넷 사용자가 자발적으로 기여하고 업로드한 것이며, 본 사이트는 소유권을 가지지 않으며, 인공적인 편집을 거치지 않았으며, 관련 법적 책임도 부담하지 않습니다. 저작권 침해가 의심되는 내용이 발견되면 notice#w로 이메일을 보내 주시기 바랍니다.3codebox.com에 대한 신고를 보내는 경우, #을 @으로 변경하십시오. 관련 증거를 제공하시면, 해당 내용이 확인되면 즉시 해당 내용을 삭제하겠습니다.