>Java >java지도 시간 >Java를 지원하는 NIO 및 NodeJS의 기반 기술에 대한 그래픽 분석

Java를 지원하는 NIO 및 NodeJS의 기반 기술에 대한 그래픽 분석

黄舟
黄舟원래의
2017-03-22 10:49:481770검색

우리 모두 알고 있듯이 최신 버전의 Java에는 Java NIO 및 NIO2에 대한 일부 지원이 추가되었습니다. 동시에 NodeJS 기술 스택의 가장 칭찬받는 장점 중 하나는 높은 수준입니다. -성능 IO. 그래서 오늘 논의하고 싶은 주제는 이러한 기술을 지원하는 기본 기술입니다.

시작하기 전에 물어봐야 할 질문은 다음과 같습니다.

NodeJS와 Java NIO2가 더 일찍 등장하지 않은 이유는 무엇입니까?

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

그럼 그 근간이 되는 기술이란 무엇을 말하는 걸까요? 네, 많은 분들이 운영체제 기술이라고 짐작하셨을 것 같아요. 본 글에서 제안하는 두 가지 개념인 Java NIO2와 NodeJS는 예외 없이 유저 모드 기술이나 애플리케이션 계층 기술이며, 이러한 애플리케이션 계층 기술은 운영체제의 발전과 함께 동시에 운영될 수 있다. 지원 프로그래밍모델도 더욱 풍부해졌습니다. 이 두 기술은 운영체제의 발전이 가져온 배당금을 적용하기 위해 완전히 진화했다고 할 수 있다. 일반적으로 이러한 이점을 누릴 수 있는 첫 번째 기술은 CC++여야 합니다. 왜냐하면 최신 OS 개선 사항의 대부분은 시스템 호출이고, CC++는 이러한 시스템 호출을 적용하는 데 가장 편리하지만 가장 복잡하기 때문입니다. 동일한 성능을 얻으려면 사용자가 이러한 보너스를 활용할 수 있도록 다른 플랫폼이 지속적으로 발전하고 캡슐화되어야 합니다. 해당 플랫폼이 업데이트를 중단하면 이제 이 플랫폼이 쇠퇴할 때입니다. 패키지가 사용자에게 편리할수록 사용자 친화적이고, 더 많은 사람들이 사용할 수 있습니다. 많은 사람들이 이러한 플랫폼을 기반으로 코드를 빠르게 작성할 수 있지만, 여전히 이러한 기술의 동기와 원리를 이해하지 못하기 때문에 코드의 본질을 파악하지 못하는 경우가 많습니다. 아래에서 논의하는 기술은 이 두 기술과 관련된 기반 기술입니다.

어떤 종류의 OS 설계라도 다음 5가지 IO 모델은 필수입니다.

  • 1. 차단 I/O

  • 2. 비차단 I/O

  • 3. I/O 다중화(선택, 폴 및 epoll)

  • 4. 신호 구동 I/O(SIGIO)

  • 5. O (POSIX aio_ 기능)

1. 블로킹 I/O

그림에서 볼 수 있듯이 이 IO 모델의 장점은 프로그래밍이 간단하다는 것입니다. IO 모델의 단점 중 하나는 시스템 호출이 사용자 동적 스레드의 실행을 차단하여 CPU 시간이 낭비되고 IO 효율성이 낮다는 것입니다.

2. Nonblocking I/O

그림에서 볼 수 있듯이 이 IO 모델의 개선점은 IO가 Non-Blocking이지만 Long Polling이라는 점입니다. 필수이며 이는 CPU 클럭 주기도 낭비합니다.

3. I/O 다중화(select, poll, epoll)

그림과 같이 이 IO 모델은 현재 제공되는 가장 안정적인 IO 모델입니다. OS 대부분의 주류 애플리케이션은 NodeJS와 같은 이 IO 모델을 기반으로 구축되지만 이러한 플랫폼은 종종 AIO를 직접 지원하기 위해 이 모델 위에 캡슐화 계층을 추가합니다.

4. SIGIO(Signal Driven I/O)

그림에서 볼 수 있듯이 데이터에 따르면 이 IO 모델은 이전 모델에 비해 성능 이점이 없습니다. 모델 3. 동시에 불안정한 시스템 지원으로 인해 디자이너는 거의 사용하지 않습니다.

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

그림에서 볼 수 있듯이 이 IO 모델은 가장 완벽한 AIO 및 프로그래밍 모델입니다. 가장 간단하지만 이 모델을 완벽하게 지원할 수 있는 OS는 거의 없습니다. Linux가 이 분야에 노력을 기울이고 있다고 합니다. > 프레임워크 플랫폼과 프로그래밍 모델은 여전히 ​​상당 부분 단순화되어야 할 수 있습니다.

이 모델은 OS에서 거의 지원되지 않지만 현재 이러한 AIO 모델이 없다는 의미는 아닙니다. 많은 프레임워크가 이 영역에서 작업을 수행하고 사용자 모드에서 AIO를 시뮬레이션하여 사용자가 더 많은 Focus를 수행할 수 있도록 했습니다. 비즈니스 로직 코드에 대해

6. 동기 및 비동기, 차단 및 비차단

동기화와 비동기는 애플리케이션과 커널 간의 상호 작용을 위한 것입니다. 데이터를 읽을 때까지 기다린 후 반환하는 것은 동기식이며, 직접 반환하는 것은 비동기식입니다. 차단 및 비차단은 프로세스와 스레드를 참조합니다. 차단 모드에서는 읽기 또는 쓰기 스레드가 항상 대기합니다. 비차단 모드에서는 읽기 또는 쓰기 스레드가 즉시

상태 값을 반환합니다.

위 내용은 Java를 지원하는 NIO 및 NodeJS의 기반 기술에 대한 그래픽 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.