zoukankan      html  css  js  c++  java
  • 并发编程之IO模型

    IO模型

    IO指的是输入输出,模型指的是套路,IO模型就是指所有可以实现输入输出的套路。

    IO的分类

    IO分为两类:1.本地IO 指的是输入输出到本地计算机,比如写入硬盘,从硬盘中读取数据等

          2.网络IO 指的是输入输出到网络计算机,速度远比本地IO慢。(网络IO是非常重要的一个知识点)

    IO模型一共分为4类分别是:1.阻塞型IO

                  2.非阻塞型IO

                  3.多路复用IO

                  4.异步IO

    接下里我们来讲讲这几个类型的IO模型。

    阻塞IO模型

    之前学习的IO操作处理全部都是阻塞性型的。阻塞型IO模型的操作大致如下图:

     当用户进程调用了recvfrom这个系统调用,kernel就开始了IO的第一个阶段:准备数据。对于network io来说,很多时候数据在一开始还没有到达(比如,还没有收到一个完整的UDP包),这个时候kernel就要等待足够的数据到来。

        而在用户进程这边,整个进程会被阻塞。当kernel一直等到数据准备好了,它就会将数据从kernel中拷贝到用户内存,然后kernel返回结果,用户进程才解除block的状态,重新运行起来。
        所以,blocking IO的特点就是在IO执行的两个阶段(等待数据和拷贝数据两个阶段)都被block了。

  • 相关阅读:
    MongoDB之Limit及Skip方法
    MongoDB之$type操作符
    MongoDB之条件操作符
    MongoDB之文档的增删改查
    MongoDB之集合的创建与删除
    MongoDB之数据库的创建及删除
    MongoDB之术语解析
    很少用的U盘,今天居然无法打开(插入盘后能看到盘符但是无法打开的问题)
    IDEA安装后必须设置的选项
    IDEA2020离线更新迭代小版本
  • 原文地址:https://www.cnblogs.com/846617819qq/p/10225552.html
Copyright © 2011-2022 走看看