一般单次I/O请求会分为两个阶段,每个阶段对于I/O的处理方式是不同的

  • I/O会经历一个等待资源的阶段

    • 阻塞,指的是在数据不可用时,I/O请求会一直阻塞,直到数据返回
    • 数据不可用时,立即返回,直到被通知资源可用为止
  • 使用资源阶段
    • 同步:读取或者写入数据时会阻塞,直到读取或写入完成
    • 在读取或者写入数据时立即返回, 由内核完成数据拷贝,再通知应用I/O

将两阶段的四种处理方式,做一些排列组合,再做一些补充,就得到常见的五种I/O模型。
下图以展示以喝水为目的的I/O请求,第一阶段为煮水,第二阶段为倒水

  • 同步阻塞
    全程一直等待水开然后倒水。
  • 同步非阻塞
    在煮水阶段,去玩游戏,不过要经常注意水是否开了。
  • I/O多路复用
    同时煮多壶水,在玩游戏间隙去看看哪壶开了,加快烧水速度
  • 信号驱动
    总跑厨房看水好累,每个水壶加报警器,只要开了马上得到通知,再去倒水
  • 异步
    人总是懒的,许个愿来个AI黄金水壶,水开后自动会倒水:)

通过喝水清晰简单了解I/O五大模型的更多相关文章

  1. 超级简单!CentOS-8 安装 MySQL 8.0,比喝水还简单

    中国人不骗中国人 果然是系统和MySQL的版本越高安装越便利了 在阿里云的 CentOS-8 比喝开水还简单的安装 MySQL 8.0,开始~ 1.以 root 用户通过 CentOS 软件包管理器来 ...

  2. 其实SQL优化调优,就跟吃饭喝水一样简单,教你抓住SQL的本质!

    前言 SOL 优化并不简单,做好 SOL 优化需要掌握数据库体系结构.表和索引设计.高效 SOL法.高级 SOL 语法.多种优化工具等知识,甚至还得分析业务特点,以及了解优化器的缺点.只有建立 SOL ...

  3. BZOJ:3441 乌鸦喝水

    bzoj:3441 乌鸦喝水 题目传送门 Description 一只乌鸦在自娱自乐,它在面前放了n个有魔力的水缸,水缸里装有无限的水. 他准备从第1个水缸飞到第n个水缸,共m次.在飞过一个水缸的过程 ...

  4. 「模拟8.18」字符串(卡特兰数)·乌鸦喝水(树状数组,二分)·所驼门王的宝藏(tarjan,拓扑)

    最近好颓啊,所以啥都做不出来 简单说一下这次考试,分机房了,还分不同考卷,果然我还是留在二机房的蒟蒻, 大概也只有这样的简单题,才能勉强水个rank 3吧........ 其实不必管在哪个机房,努力便 ...

  5. NOIP模拟测试25「字符串·乌鸦喝水·所陀门王的宝藏(陀螺王)」

    字符串 题解 没看出catalan怎么办 dp打表啊! 考虑大力dp拿到30分好成绩!顺便收获一张表 打表发现$C_{n+m}^{m}-C_{n+m}^{m-1}$ 仔细观察然后发现其实就是之前的网格 ...

  6. FZYZOJ-1569 喝水

    P1569 -- 喝水 时间限制:2000MS      内存限制:131072KB 状态:Accepted      标签:    无   无   无 Description GH的N个妹子要喝水, ...

  7. [BZOJ 3441]乌鸦喝水

    3441: 乌鸦喝水 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 374  Solved: 148[Submit][Status][Discuss] ...

  8. Bzoj3441 乌鸦喝水

    Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 258  Solved: 97 Description [题目背景]     一只乌鸦在自娱自乐,它在面 ...

  9. 8.18 NOIP模拟测试25(B) 字符串+乌鸦喝水+所驼门王的宝藏

    T1 字符串 卡特兰数 设1为向(1,1)走,0为向(1,-1)走,限制就是不能超过$y=0$这条线,题意转化为从(0,0)出发,走到(n+m,n-m)且不越过$y=0$,然后就裸的卡特兰数,$ans ...

随机推荐

  1. nginx - 反向代理 - 配置文件模板 - nginx 代理tcp的服务 - 部署示意图

    danjan01deiMac:~ danjan01$ cat /usr/local/etc/nginx/nginx.conf|grep -v '^$' worker_processes 1; even ...

  2. kmp算法分析和C++实现

    知乎高赞分析 作者:逍遥行 链接:https://www.zhihu.com/question/21923021/answer/37475572来源:知乎著作权归作者所有.商业转载请联系作者获得授权, ...

  3. OI模板のpoke流[大型考试复习必备/kl]

    数论 快速乘: ll qmul(ll x,ll y,ll mod) { ll ans=0; while(y) { if(y&1) (ans+=x)%=mod; y>>=1; (x+ ...

  4. 小记--------spark-Wordcount经典案例之对结果根据词频进行倒序排序

    还是以经典案例Wordcount为例:   逻辑思路: 1.先把文本按空格切分成每个单词    flatMap() 2.将每个单词都转换成Tuple2类型(hello ,1)    map() 3.将 ...

  5. 坦克大战--Java类型 ---- (1)音乐播放

    实现原理 我用接口java.applet.AudioClip实现音乐播放,那么我们需要了解这个接口的情况. 我们主要使用其中的三个方法: (1)void loop(); //循环播放(2)void p ...

  6. 最短meeting路线(树的直径)--牛客第四场(meeting)

    题意: 给你一棵树,树上有些点是有人的,问你选一个点,最短的(最远的那个人的距离)是多少. 思路: 其实就是树的直径,两遍dfs,dfs第二遍的时候遇到人就更新直径就行了,ans是/2,奇数的话+1. ...

  7. python_0基础开始_day13

    第十三节 一,匿名函数 匿名函数 == 一行函数 lambda == def == 关键字 函数体中存放的是代码 生成器体中存放的也是代码 就是yield导致函数和生成器的结果不统一 lambda x ...

  8. 移动端、pc端通用点击复制

    点击复制 function copyArticle(event){ const range = document.createRange(); range.selectNode(document.ge ...

  9. 14、PCA分析

    做芯片PCA主成分分析可以选择使用affycoretools包的plotPCA方法,以样品"GSM363445_LNTT.CEL"."GSM362948_LTT.CEL& ...

  10. 实现Promise类

    基本使用: let promise = new Promise((resolve, reject) => { // do something if (true) { resolve('succe ...