博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
五种IO模型
阅读量:2384 次
发布时间:2019-05-10

本文共 793 字,大约阅读时间需要 2 分钟。

  • 同步模型(synchronous IO)

  • 阻塞IO(bloking IO)

  • 非阻塞IO(non-blocking IO)

  • 多路复用IO(multiplexing IO)

  • 信号驱动式IO(signal-driven IO)

  • 这四种都是同步IO模型

  • 异步IO(asynchronous IO)

信号驱动和异步驱动的区别

  信号驱动IO是指:进程预先告知内核,使得 当某个socketfd有events(事件)发生时,内核使用信号通知相关进程。

当有数据可用时,你通过发送一个信号告诉我,我再去完成相应的io操作。

下面的这个是内核完成相应的IO操作之后,通知这个进程IO操作已经完成了,你可以接着运行了。

  异步IO(Asynchronous IO)是指:进程执行IO系统调用(read / write)告知内核启动某个IO操作,内核启动IO操作后立即返回到进程。IO操作即内核当中的服务例程。

  异步I/O和信号驱动I/O的区别很容易被混淆。前者与后者的区别在于启用异步I/O意味着通知内核启动某个I/O操作,并让内核在整个操作(包括数据从内核复制到用户缓冲区)完成时通知我们。也就是说,异步I/O是由内核通知我们I/O操作何时完成,即实际的I/O操作也是异步的;而 信号驱动I/O是由内核通知我们何时可以启动一个I/O。

异步IO是IO操作什么时候完成,由内核完成数据的拷贝,完成之后通知进程。

信号驱动IO是告诉进程何时数据准备好了,你可以去拷贝,然后继续运行了。

  I/O究竟什么时候能用这个信息实际上只有内核才能 事先知道,因为是内核在最终处理系统中的所有打开的描述符。

  信号驱动I/O模型

  内核:I/O能用了。

  进程:接受到I/O能用的消息并执行接下来的操作。

   异步I/O模型

  内核:等待这个I/O有消息了,接受到数据。

  进程:从缓存中得到数据。

 

转载地址:http://cwbab.baihongyu.com/

你可能感兴趣的文章
pkg-config指南
查看>>
不用任何变量,实现strlen函数
查看>>
关于C语言的位移操作
查看>>
由“输出从1到1000的数”想到的
查看>>
键盘上各个按键的英文名
查看>>
Linux系统文本模式下的截屏技巧
查看>>
php中$_Get $_POST $_REQUEST区别
查看>>
PHP - 解决中文乱码问题
查看>>
php empty() isset() is_null()
查看>>
PHP学习-面向对象
查看>>
js页面跳转整理
查看>>
在64位Win7操作系统中安装Microsoft Access Engine的解决方案
查看>>
30类CSS选择器
查看>>
微信支付的使用介绍
查看>>
PHP单例模式应用详解
查看>>
冒号课堂§5.2:数据类型
查看>>
博客搬家
查看>>
冒号课堂§6.2:平台语言
查看>>
《关于信息系统组织方式的一个提案》的评论与反评
查看>>
冒号和他的学生们(连载10)——超级范式
查看>>