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(第三版)

转载于:https://www.cnblogs.com/justkong/p/7192896.html

Unix下5种I/O模型相关推荐

  1. I/O模型之一:Unix的五种I/O模型

    目录: <I/O模型之一:Unix的五种I/O模型> <I/O模型之二:Linux IO模式及 select.poll.epoll详解> <I/O模型之三:两种高性能 I ...

  2. linux 网络io命令详解,Linux下五种网络IO模型详解

    本文我们主要来了解一下Unix/Linux下5种网络IO模型:blocking IO, nonblocking IO, IO multiplexing, signal driven IO, async ...

  3. 详解 Java 中 4 种 I/O 模型

    同步.异步.阻塞.非阻塞都是和I/O(输入输出)有关的概念,最简单的文件读取就是I/O操作.而在文件读取这件事儿上,可以有多种方式. 本篇会先介绍一下I/O的基本概念,通过一个生活例子来分别解释下这几 ...

  4. 一文弄懂Linux下五种IO模型

    Linux下主要的IO主要分为:阻塞IO(Blocking IO),非阻塞IO(Non-blocking IO),同步IO(Sync IO)和异步IO(Async IO). 同步:调用端会一直等待服务 ...

  5. .NET平台下几种SOCKET模型的简要性能供参考

    .NET平台下几种SOCKET模型的简要性能供参考 这个内容在cnblogs中也讨论过很多次了,这两天大概看了一些资料,看到一些简单的性能指标拿出来和大家讨论一下. Socket + Threads/ ...

  6. 【广告算法工程师入门 13】机制设计-私人价值模型下四种拍卖形式的报价策略与均衡分析

    回顾 私人价值模型的五个假设:风险中兴,私有估价,独立性,对称型,理性. 四种拍卖形式:英式拍卖,荷兰式拍卖,第一价格密封拍卖,第二价格密封拍卖 从竞价策略上分析,荷兰式拍卖与第一价格密封拍卖存在等价 ...

  7. cad模型轻量化_CAD环境下一种支持大装配的产品模型轻量化技术

    CAD环境下一种支持大装配的产品模型轻量化技术 针对CAD环境下操作复杂大装配常出现加载和显示困难的问题,提出了一种CAD环境下的轻量化解决方案,将参数化表达和多细节层次(LOD)轻量表达共同定义于产 ...

  8. Windows下6种IO模型

    文章目录 1. IO模型 2. 阻塞(blocking)IO和非阻塞(non-blocking) 3. 同步(synchronous)IO和异步(asynchronous) 4. 6种I/O模型 1. ...

  9. 大白话详解5种网络IO模型

    1 前言 我们都知道,为了实现高性能的通信服务器,BIO在高并发的情况下会出现性能急剧下降的问题,甚至会由于创建过多线程而导致系统OOM.因此在Java业界,BIO的性能问题一直被开发者所诟病,所幸的 ...

最新文章

  1. 如何利用FPGA进行时序分析设计
  2. MySQL数据库:SQL优化与索引优化
  3. 【jquery】基于 jquery 实现 ie 浏览器兼容 placeholder 效果
  4. 我的世界服务器里怎么无限随机传送,我的世界随机传送插件使用教程 权限指令分享...
  5. arctime工程文件怎么打开_怎么办?Vegas的项目工程文件打不开
  6. android动态添加控件在指定位置,Android 如何动态添加 View 并显示在指定位置。
  7. flv怎么转换成html5,怎么转asf格式 如何将flv格式转换成asf格式?
  8. Axure与markman
  9. Visio绘制论文文献技术路线图流程图
  10. rk3588调试之imx415摄像头
  11. csgo显示未加入国服服务器,csgo国服新手常见问题汇总介绍
  12. Android studio下载插件失败问题
  13. Android电子牌外接USB读卡器读取内容模拟键盘事件
  14. iceberg Flink操作
  15. Android安卓的发展史
  16. # 计算圆周长和面积
  17. 随机梯度下降C语言,梯度下降法Gradient descent(最速下降法Steepest Descent)
  18. 一年外包工作经验深圳辞职后工资水平能达到多少?
  19. 目前最好的家用投影仪,网友强烈推荐这款10款
  20. scala 函数方法、函数方法的实现原理

热门文章

  1. cython python3_30倍!使用Cython加速Python代码
  2. mongodb python 大于_Python中使用MongoDB详解
  3. 核酸结果统计难?130行代码实现基于ocr的核酸截图识别存储Excel(复现代码核查核酸报告)
  4. 1+X web中级 Laravel学习笔记——查询构造器简介及新增、更新、删除、查询数据
  5. Chapter7-10_Deep Learning for Question Answering (1/2)
  6. LeetCode 1702. 修改后的最大二进制字符串(贪心)
  7. 05.序列模型 W3.序列模型和注意力机制(作业:机器翻译+触发词检测)
  8. LeetCode 272. 最接近的二叉搜索树值 II(栈+优先队列)
  9. 程序员面试金典 - 面试题 17.16. 理发师(动态规划DP)
  10. python官方的扩展索引_Python列表操作与深浅拷贝(6)——列表索引、查询、修改、扩展...