Java io が重要なのはなぜですか?

(*-*)浩
リリース: 2019-05-29 16:59:21
オリジナル
2399 人が閲覧しました

Java の IO ストリームは入出力を実現する基盤であり、データの入出力操作を簡単に実現できます。Java ではさまざまな入出力ソースを「ストリーム」として抽象的に表現します。

ストリームは順序付けられたバイトのセットであり、データ送信の一般用語または抽象化です。

ストリームには入力と出力があり、入力中にストリームはデータ ソースからプログラムに流れます。出力する場合、ストリームはプログラムからデータ ソースに転送されます。データ ソースはメモリ、ファイル、ネットワーク、プログラムなどです。

Java io が重要なのはなぜですか?

ユーザー プロセスとオペレーティング システム カーネル

Java の IO は、Java プログラムとオペレーティング システムの間にあるものとして理解できます。カーネル、オブジェクト間。
後で説明するブロッキングとノンブロッキング、同期と非同期は、これら 2 つのオブジェクト間の相互作用の結果です。この記事では、ユーザー プロセスとは Java プログラムを指します。

プログラム空間とカーネル空間

データの準備ができるまで待機中(データがカーネル バッファに到着するのを待機中)

カーネルからプロセスへのデータ (カーネル バッファからプログラム バッファへのデータのコピー)

Linux では、読み取り IO 操作の場合、データはプログラムのプログラム バッファに直接コピーされません。

最初にオペレーティング システム カーネルのバッファにコピーされ、次にオペレーティング システム カーネルのバッファからアプリケーションのバッファにコピーされます。

プログラム空間: ユーザープログラムに割り当てられるメモリ空間。

カーネル空間: カーネルが所有するメモリ空間。

ブロッキングと非ブロッキング

ブロッキング: ユーザー プロセスがシステム コールを行った後、ユーザー プロセスは常にロック状態になり、他の操作を実行できなくなります

ノンブロッキング: ユーザー プロセスがシステム コールを行った後、ユーザー プロセスはロックされず、他の操作を実行できます。

ブロッキングとノンブロッキングは、ユーザー プロセスのステータスを指します。ユーザー プロセスがロックされているかどうか

#同期と非同期##同期 I/O 操作では、その I/O 操作が完了するまで要求元のプロセスがブロックされます。

非同期 I/O 操作では、要求側のプロセスはブロックされません。


同期 I/O 操作では、IO 操作が完了するまで、要求側のプロセスがブロックされます。非同期 IO 操作では、要求元のスレッドがブロックされることはありません。

同期: ユーザー スレッドと IO スレッドは同じことを行います (ユーザー スレッドはブロックされ、カーネルが処理結果を返すのを待ちます)

非同期: ユーザー スレッドと IO スレッドはスレッドはさまざまな処理を実行します (ユーザー スレッドはブロックされず、他の処理を行い、カーネル処理が完了し、結果がユーザー スレッドに送信されます)

ファイル記述子

Linux ではすべてがファイルです。ファイル記述子は、カーネルによってファイルに対して作成されるインデックスであり、後述するソケットを含め、すべての I/O 操作はファイル記述子 (インデックス) を呼び出すことによって実行されます。 Linux を初めて起動すると、標準入力として 0、標準出力として 1、標準エラーとして 2 が自動的に設定されます。

以上がJava io が重要なのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!