美文网首页
Linux五大网络IO模型

Linux五大网络IO模型

作者: Acto | 来源:发表于2021-04-09 09:06 被阅读0次

一、须知

对于操作系统来说,空间会分为用户空间与内核空间

用户空间:用户程序的运行空间。为了安全,它们是隔离的,即使用户的程序崩溃,内核也不会受到影响。只能执行简单的运算,不能直接调用系统资源,必须通过系统接口(system call),才能向内核发出指令。
内核空间:这是Linux内核的运行空间,可以执行任意命令,调用系统的一切资源

通过用户空间 访问 系统空间 并让其帮助我们完成我们所需要执行的操作或者任务

二、网络io模型

网络IO的本质是socket的读取,socket在linux系统被抽象为流,IO可以理解为对流的操作 对于系统来说用户空间需要访问内核空间的方式就是通过socket,而socket在linux中实际上就是一个文件resouce 或者说是一个资源;那么网络io模型就是 用户空间 去访问 内核空间的方式;

你可以这么理解:你去上厕所,然后发现有人在上厕所,你是选择一直等还是玩一会再看看好了没? 厕所在这里我们可以理解为是:系统的内核空间,
你就是:用户空间, 然后发现有人在上厕所:代表内核空间正在处理其他事情

你是选择一直等还是玩一会再看看好了没?:代表通信的方式 图片

这是一个很有味道的话题

五大io模型分为:

  1. 阻塞模型
  2. 非阻塞模型
  3. io多路复用模型
  4. 信号模型
  5. 异步io模型

三、阻塞模型

一句话解释:一直在哪儿干等,不做其他事;(看你什么时候出来)


图片

说明:这种模型在用户空间会一直阻塞等待内核空间是否ok;

四、非阻塞模型

一句话解释:一边玩手机,一边看是不是可以了;

图片

说明:用户空间会设置为非阻塞,同时会通过轮询的方式不断访问内核空间是否ok;

五、io多路复用模型

一句话解释:这里我们借助烧水来理解,对于烧水我们希望可以更快的烧很多的水,那么我们可以通过买多个烧水壶,同时也会对应多个火炉子;

我们:用户空间
火炉子:内核空间
烧水壶:资源/socket(用户与内核通信的内容)
我们接水:代表连接
烧水过程:内核处理事情

io多路可以这么理解,你需要烧很多的水,准备了很多个烧水壶,一个火炉子;我们可以在烧水的时候去用其他空的水壶接水然后在哪儿等待;(值得注意的是io多路并非多线/进程)

专业点就是 在用户空间访问内核空间的时候,可以通过重复利用多个连接

图片

对于内核来说处理还是一个单线程的

六、信号模型

一句话解释:在烧水的时候设置一个信号,完成了就吱一声

图片

说明:用户空间事先向内核空间设置一个信号,完成了内核空间就会根据信号回调用户空间所设置的回调函数

七、异步io模型

一句话解释:火炉子升级了变成了一个智能的(代表 linux 2.6以上的版本);我自己事先设置在早上我准备起床的时候帮我接水,在我准备喝水的时候帮助我烧好水了

简称人工智能

图片

说明:就是用户空间向内核空间设置好连接事件,接收事件,发送事件等;由内核空间根据不同的事件自动触发处理执行;

【转自】https://user.qzone.qq.com/2598352200/blog/1578902149

相关文章

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

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

  • 【Netty开发指南】搭稳Netty开发的地基

    Linux网络编程5种IO模型 根据UNIX网络编程对于IO模型的分类,UNIX提供了5种IO模型,分别是 阻塞I...

  • linux select/epoll

    一、Unix/Linux网络IO模型在经典的Unix网络编程中,总结出了5种不同的网络IO模型,分别是阻塞式IO,...

  • 2018-07-03

    Netty实践与NIO原理 一、阻塞IO与非阻塞IO Linux网络IO模型(5种) (1)阻塞IO模型 所有文件...

  • 高并发服务器IO模型

    高并发服务器 IO 模型一、 什么是 IO?二、 IO 的 5 种模型三、Linux 并发网络编程模型四、sele...

  • Linux IO模型

    Linux IO模型 网络IO的本质就是socket的读取,socket在linux系统被抽象为流,IO可以理解为...

  • Linux网络IO模型

    什么是同步与异步、阻塞与非阻塞 引用知乎 怎样理解阻塞非阻塞与同步异步的区别? 上面的一个回答,很生动的说明了同步...

  • NIO

    JavaIO演进之路 IO基础入门 Linux 网络IO模型简介 linux内核把所有的外部设备都看做一个文件,对...

  • Linux五大网络IO模型

    一、须知 对于操作系统来说,空间会分为用户空间与内核空间 用户空间:用户程序的运行空间。为了安全,它们是隔离的,即...

  • Linux中的I/O模型

    本文参考资料深入理解JAVA I/O系列六:Linux中的IO模型,五种网络IO模型 1. I/O模型基本概念 1...

网友评论

      本文标题:Linux五大网络IO模型

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