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

Java NIOとNodeJSのベーステクノロジーをサポート

Java NIOとNodeJSをサポートする基盤技術

ご存知のように、Javaの最新バージョンではJava NIO、NIO2のサポートがあり、同時にNodeJS技術スタックの中で最も称賛される利点の一つはその高性能なIOであり、それでは今日私たちが議論するトピックは、これらの技術を支える基盤技術です。

その前に、提起するべき問題があります:

なぜNodeJSとJava NIO2もっと早い時期に現れなかったのか?

答え:個人的には、基盤技術がまだ成熟していないと思います。

という二つの概念が基盤技術です。2、そしてNodeJSはどちらもユーザーレベルの技術または言い換えればアプリケーションレベルの技術であり、これらのアプリケーションレベルの技術はOSの上で動作します。その一方で、オペレーティングシステムの進歩に伴い、サポートできるプログラミングモデルもより豊富になります。これら二つの技術は、アプリケーションオペレーティングシステムの進歩から得られる利点を享受するために進化した技術と言えます。一般的には、最初にこの利点を享受する技術はC\\C++、なぜならOSの進歩により最新に提供される多くはシステムコールであり、C\\C++はこれらのシステムコールを最も便利に使用できるものですが、同時に最も複雑です。他のプラットフォームが同じ性能を得るために、進化し、封装し、ユーザーがこれらの利点を利用できるようにする必要があります。プラットフォームが更新を停止すると、それはそのプラットフォームの衰退の時期です。ユーザーにとって封装がより便利であればあるほど、ユーザーにとってよりフレンドリーで、利用者が増える可能性があります。多くの人々はこれらのプラットフォームに基づくコードを素早く書けるかもしれませんが、それでも本質的な技術の動機や原理を理解していないことが多いです。以下に議論する技術は、これら两项技術に関連する基盤技術です。

どのOSの設計でも、以下5IOモデルはどれも不可欠です。

1. blocking I/O
2. nonblocking I/O
3. I/O/O マルチプレックス(select、pollおよびepoll)
4. シグナル駆動I/O/O (SIGIO)
5. 非同期I/O/O (POSIX aio_関数)

1. blocking I/O

図のように、このIOモデルの利点はプログラミングが簡単であり、OSが最初にサポートしたIOモデルの一つでもありますが、欠点はシステムコールがユーザーの動的スレッドの実行をブロックし、CPU時間の無駄とIO効率の低さが原因です。

2. nonblocking I/O

図のように、このIOモデルの改良点はIOが非ブロッキングであることですが、長回線が必要で、CPUのクロック周期の無駄も発生します。

3. I/O/O マルチプレックス(select、pollおよびepoll)

図に示されるように、このIOモデルは現在のOSが提供する最も安定したIOモデルであり、ほとんどの主要なアプリケーションはこのモデルに基づいて構築されています。例えば、NodeJSですが、これらのプラットフォームは通常、AIOを直接サポートするためにこのモデルの上にレイヤーを追加します。

4. シグナル駆動I/O/O (SIGIO)

図に示されるように、このIOモデルは比較モデル3パフォーマンス上の利点はなく、システムのサポートが不安定であるため、設計者に採用されることは少ないです。

5. 非同期I/O/O (POSIX aio_関数)

図に示されるように、このIOモデルは最も完璧なAIOであり、プログラミングモデルも最もシンプルですが、このモデルを完全にサポートするOSは少なく、ネットワーク上の情報によると、Linuxがこの分野で努力をしています。一旦OSがこの分野で進展を遂げると、プログラミングフレームワーク、プラットフォーム、プログラミングモデルは大幅に簡素化されるかもしれません。

このモデルはOSのサポートが少ないため、今でもこのAIOモデルが存在しないとは言い切れません。多くのフレームワークがこの分野の作業を行っており、ユーザーレベルでAIOをシミュレートして、ユーザーがビジネスロジックコードに集中できるようにしています。

6. 同期非同期、ブロッキングおよびノンブロッキング

同期と非同期はアプリケーションとカーネルの相互作用について言及しています。データを読み終えるまで待つのは同期であり、直接戻るのは非同期です。ブロッキングとノンブロッキングはプロセスやスレッドについて言及しており、ブロッキングモードでは読み書きスレッドが常に待機し、ノンブロッキングモードでは読み書きスレッドがすぐに状態値を返します。

これでこの記事のすべての内容が終わります。皆様の学習に役立つことを願っています。また、呐喊チュートリアルを多くのサポートをお願いします。

声明:この記事の内容はインターネットからネットワークで提供されています。著作権はそれぞれの権利所有者に帰属します。インターネットユーザーが自発的に貢献し、アップロードしたものであり、このサイトは所有権を持ちません。また、人工的な編集は行われていません。著作権侵害の疑いがある場合は、以下のメールアドレスまでお知らせください:notice#oldtoolbag.com(メールの際には、#を@に変更して報告してください。関連する証拠を提供し、一旦確認されると、このサイトは即座に侵害疑いのコンテンツを削除します。)

おすすめ