Java Nio 및 Nodejs를 지원하는 기본 기술
우리 모두가 알고 있듯이 Java Nio 및 Nio2에 대한 일부 지원은 최근 버전의 Java에 추가되었습니다. 동시에, NodeJS Technology Stack의 가장 칭찬 된 장점 중 하나는 고성능 IO입니다. 오늘날 우리가 논의 할 주제는 이러한 기술을 지원하는 기본 기술입니다.
시작하기 전에 물어볼 한 가지 질문은 다음과 같습니다.
Nodejs와 Java Nio2가 이전에 나타나지 않은 이유는 무엇입니까?
답변 : 저는 개인적으로 기본 지원 기술이 아직 성숙하지 않다고 생각합니다.
그렇다면 기본 기술은 무엇을 의미합니까? 그렇습니다. 많은 사람들이 운영 체제 기술이라고 추측했다고 생각합니다. 이 기사에서 제안 된 두 가지 개념 인 Java Nio2와 NodeJS는 모두 사용자 상태 기술 또는 응용 프로그램 계층 기술이며 이러한 응용 프로그램 계층 기술은 OS에서 실행됩니다. 동시에 운영 체제의 발전으로 지원할 수있는 프로그래밍 모델도 더 풍부합니다. 이 두 기술은 운영 체제 진행에 의해 가져온 배당금을 적용하도록 완전히 진화된다고 말할 수 있습니다. 일반적으로,이 보너스를 먼저 즐기는 기술은 C/C ++이어야합니다. OS의 최신 발전은 시스템 호출을 제공하고 C/C ++가 이러한 시스템 호출을 적용하는 데 가장 편리하지만 가장 복잡하기 때문입니다. 동일한 성능을 얻으려면 다른 플랫폼은 사용자가 이러한 배당금을 사용할 수 있도록 지속적으로 발전하고 패키지해야합니다. 해당 플랫폼이 정체되고 업데이트되면이 플랫폼이 감소 할 때입니다. 캡슐화가 편리할수록 사용자에게 더 친근하고 더 많은 사람들이 사용할 수 있습니다. 많은 사람들이 이러한 플랫폼을 기반으로 코드를 신속하게 쓸 수 있지만,이 기술의 동기와 원리를 이해하지 못하기 때문에 종종 본질을 이해하지 못합니다. 아래에서 논의하는 기술은이 두 기술과 관련된 기본 기술입니다.
어떤 OS 디자인에 관계없이 다음 5 개의 IO 모델이 필수적입니다.
1. 차단 I/O
2. 비 차단 I/O
3. I/O 멀티플렉싱 (선택, 폴링 및 에포)
4. 신호 드라이브 I/O (Sigio)
5. 비동기 I/O (POSIX AIO_ 함수)
1. 차단 I/O
그림에서 볼 수 있듯이이 IO 모델의 장점은 프로그램이 간단하고 OS에서 지원하는 최초의 IO 모델 중 하나라는 것입니다. 단점은 시스템이 블록 사용자의 동적 스레드 실행을 호출하여 CPU 시간 낭비와 낮은 IO 효율성을 불러 일으킨다는 것입니다.
2. 비 차단 I/O
그림에서 볼 수 있듯이,이 IO 모델의 개선은 IO가 차단하지 않지만 긴 폴링이 필요하며 CPU 클록 사이클을 낭비해야합니다.
3. I/O 멀티플렉싱 (선택, 폴링 및 에포)
그림에서 볼 수 있듯이이 IO 모델은 오늘날 OS에서 제공하는 가장 안정적인 IO 모델입니다. 대부분의 주류 응용 프로그램은 Nodejs와 같은이 IO 모델을 기반으로합니다. 그러나 이러한 플랫폼은 종종 AIO를 직접 지원하기 위해이 모델에 캡슐화 계층을 추가합니다.
4. 신호 드라이브 I/O (Sigio)
그림에서 볼 수 있듯이 데이터는이 IO 모델이 비교 모델 3에서 성능 이점이 없으며 시스템 지원의 불안정성으로 인해 디자이너가 거의 사용하지 않는다는 것을 기록합니다.
5. 비동기 I/O (POSIX AIO_ 함수)
그림에서 볼 수 있듯이이 IO 모델은 가장 완벽한 AIO이며 프로그래밍 모델도 가장 간단하지만 모델을 완벽하게 지원할 수있는 OS는 거의 없습니다. 온라인 정보는 Linux가 이와 관련하여 노력하고 있음을 보여줍니다. OS가 이러한 측면에서 진행되면 프로그래밍 프레임 워크, 플랫폼 및 프로그래밍 모델을 여전히 단순화해야 할 수도 있습니다.
이 모델은 OS에서 거의 지원되지 않지만 현재 그러한 AIO 모델이 없다는 것을 의미하지는 않습니다. 많은 프레임 워크 가이 측면을 수행하고 사용자 모드에서 AIO를 시뮬레이션하여 사용자가 비즈니스 로직 코드에 더 많은주의를 기울일 수 있습니다.
6. 동기 비동기, 차단 및 비 블로킹
동기 및 비동기식은 응용 프로그램과 커널 간의 상호 작용을위한 것입니다. 데이터가 읽히고 반환은 동기식이며 반환은 비동기식입니다. 차단 및 비 블로킹은 프로세스 및 스레드 용입니다. 읽기 또는 쓰기 스레드는 차단 모드가 아닌 차단 모드에서 대기 중입니다. 읽기 또는 쓰기 스레드는 즉시 상태 값을 반환합니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.