- UNIXシステムのI / Oモデルは、5を持っています
同期ブロッキングI / O、同期非ブロッキングI / O、I / Oマルチプレクサ、駆動信号I / Oおよび非同期I / O
- I / Oとは何ですか
いわゆるI / Oは、コンピュータと外部メモリデバイスとの間でデータをコピーする処理です。私たちは、その後、処理され、CPU速度は、外部メモリアクセス装置よりもはるかに高い、CPUは外部メモリからデータを読み込むための最初のデバイスであることを知っています
-
この問題を解決するためのI / Oモデル
多くの場合、ある程度の時間がかかり、この時CPUは何もしなかった、あなたのプログラムが他の人にCPUのイニシアチブであるデータがメモリに外部デバイスからコピーされ、あなたのプログラムがCPUを介して外部装置にリードコマンドを発行すると、このシナリオを考えてみましょう?あるいは、CPUは常にチェックしてみましょう:右のデータにデータを右に......
-
Java I/O 模型
- ネットワークI / Oの通信プロセス
このようなネットワークデータの読み出しなどのネットワークI / O通信プロセスは、一つのユーザスレッドのこのI / Oオペレーションを呼び出して、2つのオブジェクトを含むことになるため、他のオペレーティング・システムのカーネルです。プロセスのアドレス空間は、直接カーネル空間にアクセスすることはできませんユーザ空間とカーネル空間とユーザスレッドに分割されています。
ユーザスレッドは、I / O操作を開始すると、ネットワークのデータ読み出し動作は、2つのステップを通過します。
- ユーザカーネルスレッドはカーネル空間にカードからデータをコピーするために待っています。
- ユーザ空間カーネルにカーネル空間からデータをコピーします。
様々なI / Oモデルを区別し、このです:彼らは、この2段階のアプローチは同じではありません実現。
- 同期のブロッキングI / O
ユーザーが読み取りコールを遮断した後、スレッドを開始し、CPUをしましょう。カーネル空間にカードからデータをコピーし、カーネルデータカードの到着を待って、その後、その後、ユーザスレッドウェイクユーザ空間にデータをコピーします。
- 同期のノンブロッキングI / O
ユーザーは、カーネル空間への読み取りスレッドの呼び出しではなく、データを開始していき、それぞれの時間は、カーネル空間へデータまで戻ることができなかったこの時間はユーザ空間にカーネル空間から今回のデータをコピーするのを待っている、コールを読んだ後、スレッドまたはブロック、および他のデータのユーザ空間にして、スレッドを覚まします。
- I / Oマルチプレクサ
読み取り操作は、2段階のユーザーのスレッドに分割して、目的の準備ができてカーネルデータを依頼することです、スレッドは、第1の選択呼び出しを開始した(分割予告(ポーリングの場合を選択)、またはパラメータがある、例(障害物)ユーザー・プロセスをウェイクアップ)それは?他のコアデータの準備ができていると、ユーザーは再びスレッドを読むために通話を開始します。ユーザ空間にこの時間をカーネル空間からデータをコピーするのを待つ、スレッドがブロックされています。なぜそれは、I / Oの多重化、それと呼ばれていますか?内側に検証可能なデータチャネル(チャンネル)、いわゆる多重の複数の選択通話状態以来。
- 异步 I/O
ユーザーはすぐに復帰し、コールバック関数を登録し、同時にスレッドを読んで読むために通話を開始し、他のカーネルデータの準備ができたら、その後、プロセスを完了するために、指定されたコールバック関数を呼び出します。このプロセスでは、ユーザスレッドがブロックされていません。