码迷,mamicode.com
首页 > 其他好文 > 详细

谈I/O模型

时间:2016-10-27 01:20:46      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:参考   blog   调用   java   read   i/o模型   for   同步   str   

一个IO操作涉及两个系统对象:

  • 调用这个IO的用户Process/Thread
  • 系统内核 - System Kernel

一个具体的Read操作包括两个阶段:

  • 内核等待数据准备就绪:Waiting for the data to be ready
  • 从内核向用户进程/线程拷贝数据:Copying the data from the Kernel to the Process/Thread

只有在同步的情况下才会有“阻塞”和“非阻塞”之说,异步情况,必须是非阻塞的!

同步 vs 异步

同步与异步是针对应用程序与内核的交互而言的,进程/线程触发IO操作后:

  • 同步过程:进程/线程等待IO操作完成(阻塞)或轮询查看IO操作是否完成(非阻塞);
  • 异步过程:直接返回,进程/线程做自己的事情,IO操作交给内核处理、完成后内核通知进程/线程;

同步 Synchronous

A Synchronous-I/O operation causes the requesting process to be blocked until that I/O operation completes.

 串行,无条件等待。

异步 Asynchronous

An Asynchronous-I/O operation does not cause the requesting process to be blocked.

 并发,

阻塞 vs 非阻塞

关于阻塞/非阻塞,在网络编程中通常应用在是不是需要等待数据就绪。

阻塞 Blocking

 挂起等待,

非阻塞 Non-Blocking

 轮询检查等待,

参考:怎样理解阻塞非阻塞与同步异步的区别? - 知乎

I/O模型

阻塞I/O(Blocking I/O)

技术分享

非阻塞I/O(Non-Blocking I/O)

技术分享

I/O多路复用(I/O Multiplexing)

技术分享

信号驱动I/O(Signal Driven I/O)

技术分享

异步I/O(Asynchronous I/O)

技术分享

 

推荐书籍

  • 《UNIX网络编程 - 卷1》:第六章

参考

谈I/O模型

标签:参考   blog   调用   java   read   i/o模型   for   同步   str   

原文地址:http://www.cnblogs.com/wjcx-sqh/p/6002454.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!