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(第三版)
转载于:https://www.cnblogs.com/justkong/p/7192896.html
Unix下5种I/O模型相关推荐
- I/O模型之一:Unix的五种I/O模型
目录: <I/O模型之一:Unix的五种I/O模型> <I/O模型之二:Linux IO模式及 select.poll.epoll详解> <I/O模型之三:两种高性能 I ...
- linux 网络io命令详解,Linux下五种网络IO模型详解
本文我们主要来了解一下Unix/Linux下5种网络IO模型:blocking IO, nonblocking IO, IO multiplexing, signal driven IO, async ...
- 详解 Java 中 4 种 I/O 模型
同步.异步.阻塞.非阻塞都是和I/O(输入输出)有关的概念,最简单的文件读取就是I/O操作.而在文件读取这件事儿上,可以有多种方式. 本篇会先介绍一下I/O的基本概念,通过一个生活例子来分别解释下这几 ...
- 一文弄懂Linux下五种IO模型
Linux下主要的IO主要分为:阻塞IO(Blocking IO),非阻塞IO(Non-blocking IO),同步IO(Sync IO)和异步IO(Async IO). 同步:调用端会一直等待服务 ...
- .NET平台下几种SOCKET模型的简要性能供参考
.NET平台下几种SOCKET模型的简要性能供参考 这个内容在cnblogs中也讨论过很多次了,这两天大概看了一些资料,看到一些简单的性能指标拿出来和大家讨论一下. Socket + Threads/ ...
- 【广告算法工程师入门 13】机制设计-私人价值模型下四种拍卖形式的报价策略与均衡分析
回顾 私人价值模型的五个假设:风险中兴,私有估价,独立性,对称型,理性. 四种拍卖形式:英式拍卖,荷兰式拍卖,第一价格密封拍卖,第二价格密封拍卖 从竞价策略上分析,荷兰式拍卖与第一价格密封拍卖存在等价 ...
- cad模型轻量化_CAD环境下一种支持大装配的产品模型轻量化技术
CAD环境下一种支持大装配的产品模型轻量化技术 针对CAD环境下操作复杂大装配常出现加载和显示困难的问题,提出了一种CAD环境下的轻量化解决方案,将参数化表达和多细节层次(LOD)轻量表达共同定义于产 ...
- Windows下6种IO模型
文章目录 1. IO模型 2. 阻塞(blocking)IO和非阻塞(non-blocking) 3. 同步(synchronous)IO和异步(asynchronous) 4. 6种I/O模型 1. ...
- 大白话详解5种网络IO模型
1 前言 我们都知道,为了实现高性能的通信服务器,BIO在高并发的情况下会出现性能急剧下降的问题,甚至会由于创建过多线程而导致系统OOM.因此在Java业界,BIO的性能问题一直被开发者所诟病,所幸的 ...
最新文章
- 如何利用FPGA进行时序分析设计
- MySQL数据库:SQL优化与索引优化
- 【jquery】基于 jquery 实现 ie 浏览器兼容 placeholder 效果
- 我的世界服务器里怎么无限随机传送,我的世界随机传送插件使用教程 权限指令分享...
- arctime工程文件怎么打开_怎么办?Vegas的项目工程文件打不开
- android动态添加控件在指定位置,Android 如何动态添加 View 并显示在指定位置。
- flv怎么转换成html5,怎么转asf格式 如何将flv格式转换成asf格式?
- Axure与markman
- Visio绘制论文文献技术路线图流程图
- rk3588调试之imx415摄像头
- csgo显示未加入国服服务器,csgo国服新手常见问题汇总介绍
- Android studio下载插件失败问题
- Android电子牌外接USB读卡器读取内容模拟键盘事件
- iceberg Flink操作
- Android安卓的发展史
- # 计算圆周长和面积
- 随机梯度下降C语言,梯度下降法Gradient descent(最速下降法Steepest Descent)
- 一年外包工作经验深圳辞职后工资水平能达到多少?
- 目前最好的家用投影仪,网友强烈推荐这款10款
- scala 函数方法、函数方法的实现原理
热门文章
- cython python3_30倍!使用Cython加速Python代码
- mongodb python 大于_Python中使用MongoDB详解
- 核酸结果统计难?130行代码实现基于ocr的核酸截图识别存储Excel(复现代码核查核酸报告)
- 1+X web中级 Laravel学习笔记——查询构造器简介及新增、更新、删除、查询数据
- Chapter7-10_Deep Learning for Question Answering (1/2)
- LeetCode 1702. 修改后的最大二进制字符串(贪心)
- 05.序列模型 W3.序列模型和注意力机制(作业:机器翻译+触发词检测)
- LeetCode 272. 最接近的二叉搜索树值 II(栈+优先队列)
- 程序员面试金典 - 面试题 17.16. 理发师(动态规划DP)
- python官方的扩展索引_Python列表操作与深浅拷贝(6)——列表索引、查询、修改、扩展...