linux网络io和网络带宽,Linux五大网络IO模型

一、须知

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

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

内核空间:这是Linux内核的运行空间,可以执行任意命令,调用系统的一切资源

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

二、网络io模型

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

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

你就是:用户空间, 然后发现有人在上厕所:代表内核空间正在处理其他事情

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

785b2a66294b

图片

这是一个很有味道的话题

五大io模型分为:

阻塞模型

非阻塞模型

io多路复用模型

信号模型

异步io模型

三、阻塞模型

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

785b2a66294b

图片

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

四、非阻塞模型

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

785b2a66294b

图片

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

五、io多路复用模型

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

我们:用户空间

火炉子:内核空间

烧水壶:资源/socket(用户与内核通信的内容)

我们接水:代表连接

烧水过程:内核处理事情

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

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

785b2a66294b

图片

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

六、信号模型

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

785b2a66294b

图片

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

七、异步io模型

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

简称人工智能

785b2a66294b

图片

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值