美文网首页
五大网路io模型

五大网路io模型

作者: Newzer | 来源:发表于2021-06-28 10:42 被阅读0次

io是相对于操作系统内存或缓存来说的,当用户所需要操作的数据在内存/缓存中不存在时,需要从其他地方获取数据,比如数据库,文件和网络请求等等,这就发生了数据输入,就是i,o是相反的情况,称这个过程为io

用户空间从内核空间获取数据的过程分为两个阶段

数据准备阶段和数据拷贝阶段

数据准备阶段是数据获取阶段,用户空间对于这个过程无能为力

数据拷贝阶段是从缓冲区拷贝到用户空间(用户空间的概念可以理解为应用程序运行的空间,比如php运行超内存限制的这个运行内存),这个过程的获取时间用户空间可以参与,比如是自己在这干等着内核返回(阻塞),还是我不停的主动询问是否(非阻塞),

是用户空间通知我准备就绪我再来拿数据(io多路复用),还是内核空间准备好数据自己返回给我(异步io)

1,阻塞io模型(同步,用户空间只请求一次)

用户空间什么也不干,一直等着内核空间返回数据

2,非阻塞io模型(同步,用户空间可能要多次请求)

用户空间轮训询问内核空间数据是否准备好

3,io多路复用模型 (同步,用户空间请求两次)

多路表示多个io,可以理解成多个socket,复用表示一个进程或线程;一个进程或一个现成可以处理多个请求,处理过程是select对多个socket进行监听,数据准备就绪就返回所有准备就绪的socket,然后通知用户进程去取数据,可以看到这里是用户进程主动取数据,这个进程/线程其实是一直被select阻塞的,但这多个socket中的每个socket是异步的的,因为是内核空间返回所有可读的socket。

4,异步io模型(只请求一次,主动回调数据结果)

用户空间只是请求数据,然后内核空间准备好数据后自动返回数据,如果用循环处理多个请求就和io多路复用很相似,但不相同,io多路复用是告诉用户空间该socket已就绪,本身并不返回数据,还需要用户进程自己去获取数据,但异步io是内核空间自己返回了数据

5,信号模型

信号是操作系统本身的一个机制,操作系统有很多的信号,信号可以跟进程id绑定,发生了信号事件,就该进程有相应的操作,进程id可以用户自定义方法绑定,所以发生了信号时间,可以触发用户自定义方法执行

另外,io多路复用加上线程/进程池就叫reactor模型

相关文章

  • 网路IO模型

    高并发即我们所说的 C10K(一个 server 服务 1w 个 client),C10M,写出高并发的程序相信是...

  • 五大网路io模型

    io是相对于操作系统内存或缓存来说的,当用户所需要操作的数据在内存/缓存中不存在时,需要从其他地方获取数据,比如数...

  • Java IO 模型

    五大IO模型 Blocking IO Non-Blocking IO I/O multiplexing (sele...

  • 五大IO模型

    对程序员而言,I/O操作是程序中最常见的操作之一。比如说磁盘文件的读写、数据的网络传输等等。程序=数据结构+算法,...

  • 1.Nette入门第一章——IO演进

    1. IO 基础 1.1. linux网络IO模型 阻塞IO模型 非阻塞IO模型 IO多路复用模型(NIO) 信...

  • 细谈Select,Poll,Epoll

    阻塞 io 模型 blocking IO非阻塞 io 模型 nonblocking IOio多路复用模型 IO m...

  • 2.五种IO模型

    0.IO介绍1.阻塞IO模型2.非阻塞IO模型3.IO多路复用模型4.信号驱动IO模型5.异步IO模型6.五种IO...

  • 网络IO模型

    网络IO的模型大致包括下面几种 同步模型(synchronous IO)阻塞IO(bloking IO)非阻塞IO...

  • 「基础知识总结」 IO模型

    IO模型 五种IO模型包括:阻塞IO、非阻塞IO、信号驱动IO、IO多路转接、异步IO。其中,前四个被称为同步IO...

  • 五种 IO 模型

    五种 IO 模型 参考链接 一共有五种 IO 模型 阻塞 IO 非阻塞 IO 多路复用 IO 信号驱动 IO 异步...

网友评论

      本文标题:五大网路io模型

      本文链接:https://www.haomeiwen.com/subject/dvgtkltx.html