zoukankan      html  css  js  c++  java
  • Unix下5种I/O模型

    Unix下I/O模型主要分为5种:

    (1)阻塞式I/O

    (2)非阻塞式I/O

    (3)I/O复用(select和poll)

    (4)信号驱动式I/O

    (5)异步I/O

    1、阻塞式I/O模型

    unix基本的套接字接口,例如:connect、accept、read/write、recv/send、recvfrom/sendto、recvmsg/sendmsg,它们默认是阻塞的。

    2、非阻塞式I/O模型

    调用fcntl可以把一个套接字设置成非阻塞式。

    3、I/O复用模型

    I/O复用是通过调用select或者poll,阻塞在这两个系统调用之上,而不是阻塞在真正的I/O系统调用上。

    4、信号驱动式I/O模型

    我们首先开启套接字的信号驱动式I/O功能,并通过sigaction系统调用安装一个信号处理函数。该系统调用将立即返回,当数据包准备好读取时,内核就为该进程产生一个SIGIO信号。我们可以在信号处理函数中读取数据包。

    5、异步I/O模型

    告知内核启动某个操作,并让内核在整个操作完成后(包括将数据从内核复制到我们的缓冲区)通知我们。这种模型和前面信号驱动模型的区别在于:信号驱动式I/O是由内核通知我们何时可以启动一个I/O操作,而异步I/O模型是由内核通知我们I/O操作何时完成。

    五种I/O模型比较:

    参考:UNIX网络编程卷1:套接字联网API(第三版)

  • 相关阅读:
    性能测试术语讲解
    Silverlight 部署
    C#数据库SQLServer查询、修改数据
    有一点点背
    Ajax与XMLHttpRequest对象
    ServletListener 之 监听HTTP会话
    JAVA中几种常见集合的使用实例
    [转]全面接触Java集合框架(二)
    自定义标签之 SimpleTag的开发
    jsp常用内置对象
  • 原文地址:https://www.cnblogs.com/justkong/p/7192896.html
Copyright © 2011-2022 走看看