IO模式——同步(堵塞、非堵塞)、异步
为什么IO模式非常重要?由于现代的计算机和操作系统的架构决定了CPU是稀缺资源,大家都要来一起竞争。而IO(特别是网络相关的IO)的速度往往较慢。所以怎样进行IO就有了多种模式,包含同步、异步、堵塞、非堵塞等等。
不少人把这几个概念放到一起讨论,非常多时候也难以区分。
这里从根上剖析下该怎么看待这几个概念。
首先。异步和同步是相对的,而同步情况下又有堵塞和非堵塞之分。
异步非常easy理解。当用户程序须要进行IO的时候,发出IO请求,然后就立马返回。能够继续做其他事情。
比如。从网络收包,当包抵达后放到内核某个缓存区,而且从内核空间放置到程序须要的用户空间后(一种是直接复制。比較费资源;一种是映射mmap),通知程序,程序之后就能够处理数据了。
这是最理想的模式。CPU干活效率最高。
同步情况则是,当用户程序须要进行IO的时候,发出IO请求。然后就等着数据到达后进行处理(首先将数据从内核空间拷贝到用户空间,然后进行操作)。
详细怎么等呢?一种就是堵塞在那里。CPU就处理其他的程序去了;一种就是发现没有数据就返回一个错误,程序能够干点别的事情(一般是不断轮询)。过会还得自动回来看看数据OK了么。
同步情况下显然效率比較差,于是有了各种技术来改进它,一种就是IO多路复用(用一个专门的线程来负责IO)。包含Linux上的select、poll和epoll。
select和poll类似,都是用一个内核优化线程来不断轮询IO,一旦有数据了用户程序就能够利用系统调用将数据从内核空间拷贝到用户空间。之后进行处理。这尽管提高了效率,但事实上仍然是一种同步模式。
epoll则更进一步。採用了底层的notify机制和mmap,底层数据可用后通知IO线程,并利用mmap将数据直接映射到用户空间。
此时用户程序能够直接对数据进行操作了。
IO模式——同步(堵塞、非堵塞)、异步的更多相关文章
- Java IO:同步、非堵塞式IO(NIO)
转载请注明出处:jiq•钦's technical Blog 引言 JDK1.4中引入了NIO,即New IO,目的在于提高IO速度.特别注意JavaNIO不全然是非堵塞式IO(No-Blocking ...
- linux 下同步异步,堵塞非堵塞的一些想法
补充: 发现一个更好的解释样例:同步是一件事我们从头到尾尾随着完毕.异步是别人完毕我们仅仅看结果. 堵塞是完毕一件事的过程中可能会遇到一些情况让我们等待(挂起).非堵塞就是发生这些情况时我们跨过. 比 ...
- 转:IO模型-- 同步和阻塞,异步和非阻塞的区别
源地址 http://hi.baidu.com/deep_pro/item/db0c581af1c1f17e7b5f2534 这些词之间的区别难倒了很多人,还有什么同步阻塞, 同步非阻塞, 异步阻塞, ...
- Node.js 回调函数 1) 阻塞 ,同步 2) 非阻塞 ,异步.
1.阻塞. 同步. 1) 读取的文件: input.txt 菜鸟教程官网地址:www.runoob.com 2) main.js var fs = require("fs"); / ...
- 普通B/S架构模式同步请求与AJAX异步请求区别(个人理解)
在上次面试的时候有被问到过AJAX同步与异步之间的概念问题,之前没有涉及到异步与同步的知识,所以特意脑补了一下,不是很全面... 同步请求流程:提交请求(POST/GET表单相似的提交操作)---服务 ...
- Linux下文件的堵塞与非堵塞对部分系统调用的影响
1.基本概念 所谓的堵塞,即内核在对文件操作I/O系统调用时.假设条件不满足(可能须要产生I/O),则内核会将该进程挂起.非堵塞则是发现条件不满足就会马上返回. 此外须要注意的是非堵塞并非轮询.不然就 ...
- 网络编程----堵塞、非堵塞和同步、异步IO
我是学渣.但我想进步. 本文是面试我的牛人问我的.你知道什么是堵塞.非堵塞和同步.异步IO么?自觉得是分布式系统程序猿的我居然不知道.学习吧. 首先介绍堵塞IO和非堵塞IO: 堵塞IO:是指说程序等待 ...
- 阻塞IO、非阻塞IO、同步IO、异步IO等
https://www.cnblogs.com/zingp/p/6863170.html 阅读目录 1 基础知识回顾 2 I/O模式 3 事件驱动编程模型 4 select/poll/epoll的区别 ...
- IO中同步、异步与阻塞、非阻塞的区别
一.同步与异步同步/异步, 它们是消息的通知机制 1. 概念解释A. 同步所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回. 按照这个定义,其实绝大多数函数都是同步调用(例如si ...
随机推荐
- HDU - 1705 Count the grid
昨天吉老师讲了皮克定理 皮克定理用于计算点阵中顶点在格点上的多边形面积.对于一个顶点全部在格点上的多边形来说,它的面积计算有如下特点: 如果用a表示位于多边形内部的格点数,b表示位于多边形边界上的格点 ...
- Eclipse调试程序及项目的导入导出
Eclipse调试程序 调试概述: ① 调试就是测试程序的方法,主要的目的就是解决程序的逻辑问题,流程是:发现问题.修改问题.正确执行; ② 以前我们可以使用System.out.printl ...
- springMVC 引入静态资源Js的方式
前两天项目出现了Js无法引入的情况,本篇博客先总结分析+批判自己犯的低级错,再说说几种访问静态资源的方式! 首先,由于在web.xml里面的servlet拦截匹配为<url-pattern> ...
- webpack的像素转vw单位的loader插件
安装: npm i px2vw-view-loader 配置: 按以下loader格式,添加进入webpack配置文件,实现从px转换成vw,适用于移动端项目 module: { rules: [{ ...
- BZOJ 3729 Gty的游戏 ——Splay
很久很久之前,看到Treap,好深啊 很久之前看到Splay,这数据结构太神了. 之后学习了LCT. 然后看到Top-Tree就更觉得神奇了. 知道我见到了这题, 万物基于Splay 显然需要维护子树 ...
- BZOJ4819 [Sdoi2017]新生舞会 【01分数规划 + 费用流】
题目 学校组织了一次新生舞会,Cathy作为经验丰富的老学姐,负责为同学们安排舞伴.有n个男生和n个女生参加舞会 买一个男生和一个女生一起跳舞,互为舞伴.Cathy收集了这些同学之间的关系,比如两个人 ...
- samba安装和配置
windows和windows系统之间要实现文件共享是通过网络邻居实现linux和windows之间通过什么来实现文件共享呢?一.通过文件挂载(首先要制作ISO镜像文件,然后在用挂载命令)二.通过sa ...
- 如何应对pm2.5
细颗粒物又称细粒.细颗粒.PM2.5:指环境空气中空气动力学当量直径小于等于 2.5 微米的颗粒物,也称细颗粒物.能较长时间悬浮于空气中,其在空气中含量(浓度)越高,就代表空气污染越严重.可吸入颗粒物 ...
- OpenJudge 东方14ACM小组 / 20170123 02 岛屿
总时间限制: 40000ms 单个测试点时间限制: 4000ms 内存限制: 128000kB 描述 从前有一座岛屿,这座岛屿是一个长方形,被划为N*M的方格区域,每个区域都有一个确定的高度.不 ...
- 【BZOJ1101】Zap(莫比乌斯反演)
题意:多组询问,对于给定的整数a,b和d,有多少正整数对x,y,满足x<=a,y<=b,并且gcd(x,y)=d. T,a,b,d,x,y<=50000 思路:下底函数分块+积性函数 ...