I / Oの基本的な考え方

I / Oの基本的な考え方

⼀次完整的I/O是⽤⼾空间的进程数据与内核空间的内核数据的报⽂的完整交换,但是由于内核空间与⽤⼾空间是严格隔离的,所以其数据交换过程中不能由⽤⼾空间的进程直接调⽤内核空间的内存数据,⽽是需要经历⼀次从内核空间中的内存数据copy到⽤⼾空间的进程内存当中,所以简单说I/O就是把数据从内核空间中的内存数据复制到⽤⼾空间中进程的内存当中。

⽹络通信就是⽹络协议栈到⽤⼾空间进程的IO就是⽹络IO

磁盘I/O是进程向内核发起系统调⽤,请求磁盘上的某个资源⽐如是⽂件或者是图⽚,然后内核通过相应的驱动程序将⽬标图⽚加载到内核的内存空间,加载完成之后把数据从内核内存再复制给进程内存,如果是⽐较⼤的数据也需要等待时间。

同期/非同期:フォーカスは、物質処理結果⼀を待っている間にオファーが完了通知を使用して調整されているかどうかということ、メッセージ通信機構イベント処理です。

同步:synchronous,调⽤者等待被调⽤者返回消息后才能继续执⾏,如果被调⽤者不提供消息返回则为同步,同步需要调⽤者主动询问事情是否处理完成。 
异步:asynchronous,被调⽤者通过状态、通知或回调机制主动通知调⽤者被调⽤者的运⾏状态

閉塞/閉塞に便利です:国家の注意トーンを使用して結果を待っているリターンの前に

阻塞:blocking,指IO操作需要彻底完成后才返回到⽤⼾空间,调⽤结果返回之前,调⽤者被挂起,⼲不了别的事情。 
⾮阻塞:nonblocking,指IO操作被调⽤后⽴即返回给⽤⼾⼀个状态值,⽆需等到IO操作彻底完成,最终的调⽤结果返回之前,调⽤者不会被挂起,可以去做别的事情。

単純な例を理解するためにどのように非同期および同期のブロッキングとノンブロッキング

私は10個のパンを注文した
同期および非同期:
:私は私に言ったかどうかをポイントした後、パンを調理
同期:シェフが指定した場所にパンした後に行うが、バンズの前に所有する必要性を行うだろう-時間とパンが表示されない、シェフバンズではありません
良い後に私に気づきます。
非同期:調理パンはどこまんじゅうが行う入れを教えてください。

ブロッキングと非ブロック:
私はポイントのパンを述べる:
ブロック:コックを焼成時-パントレイの前面にストレート待って、何かを行うことはできません。
ノンブロッキング:エンドポイントのバンズは、このようなモルタルのショッピングなど、それ以外の場合は行うか、買い買いを購入することができます。

I0モデルポートフォリオ:
同期ブロック:私はパン、パンの終点の後に何かを行うことができないとは良いがないかわからない、彼はシェフの時間を待ってみませんかされています必要はあり
ません。
ノンブロッキング同期:私はまだパンは行っていないかわからないが、またので、パンのエンドポイントは何かを行うことができますが、長い時間のために何かを行うことはできませんした後
、彼は再び時間と時間を待っていたこととやってシェフに頼みましたノーも、あなただけの何かをする時間を見つけることができます。
非同期ブロック:私はあなたがパンの後に何かを行う行くことを指すが、私はパンを調理する時間がないことを、私に教えてくれるパンシェフをやった後、再度することはできません
何の準備はありません。
非同期非ブロック:I終了点のバンズは、何かを行うだけでなく、することができます後-パンシェフをやった後、私に教えてくれるので、やって他のものに直進。

おすすめ

転載: www.cnblogs.com/luck-pig/p/12132856.html