Java NioとNodejsをサポートする根本的な技術
誰もが知っているように、Java NioとNio2のサポートが最近のJavaのバージョンに追加されました。同時に、NodeJSテクノロジースタックの最も賞賛されている利点の1つは、その高性能IOです。したがって、今日議論するトピックは、これらのテクノロジーをサポートする根本的なテクノロジーです。
開始前に尋ねる1つの質問は、次のとおりです。
NodejsとJava Nio2が以前に表示されなかったのはなぜですか?
回答:私は個人的に、基礎となるサポート技術はまだ成熟していないと思います。
それで、基礎となるテクノロジーとはどういう意味ですか?はい、多くの人がそれがオペレーティングシステムテクノロジーであると推測していると思います。この記事で提案されている2つの概念、Java NIO2とNodeJSはすべて、ユーザー状態のテクノロジーまたはアプリケーション層テクノロジーであり、これらのアプリケーション層テクノロジーはOSで実行されます。同時に、オペレーティングシステムの進歩により、サポートできるプログラミングモデルも豊富です。これらの2つのテクノロジーは、オペレーティングシステムの進捗状況によってもたらされる配当を適用するために完全に進化していると言えます。一般的に言えば、OSの最新の進歩のほとんどはシステムコールを提供し、C/C ++がこれらのシステムコールを適用するのに最も便利であるため、このボーナスを最初に享受するテクノロジーはC/C ++でなければなりませんが、最も複雑です。同じパフォーマンスを得るには、他のプラットフォームが常に進化し、パッケージ化する必要があり、ユーザーがこれらの配当を使用できるようにする必要があります。そのプラットフォームが停滞して更新されると、このプラットフォームが衰退する時が来ました。カプセル化するのが便利であればあるほど、ユーザーにとってはより友好的であり、より多くの人を使用する可能性があります。多くの人はこれらのプラットフォームに基づいてコードをすばやく書き込むことができますが、これらのテクノロジーの動機と原則を本質的に理解していないため、多くの場合、本質を理解していません。以下で説明しているテクノロジーは、これら2つのテクノロジーに関連する基礎となるテクノロジーです。
どのOS設計であっても、次の5つのIOモデルが不可欠です。
1。I/Oのブロック
2。ノンブロッキングI/O
3。I/O多重化(Select、Poll、およびApoll)
4。信号駆動I/O(Sigio)
5。非同期I/O(POSIX AIO_機能)
1。I/Oのブロック
図に示されているように、このIOモデルの利点は、プログラムが簡単であり、OSでサポートされる最も初期のIOモデルの1つでもあることです。欠点は、システムがユーザーの動的スレッド実行をブロックするため、CPU時間が無駄になり、IO効率が低下することです。
2。ノンブロッキングI/O
図に示されているように、このIOモデルの改善は、IOが非ブロッキングであることですが、長いポーリングが必要であり、CPUクロックサイクルも浪費しています。
3。I/O多重化(Select、Poll、およびApoll)
図に示すように、この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をもっとサポートすることを願っています。