网络IO模型的介绍引出nginx的网络IO模型

用PLECS搞定三相逆变器电流环:从传递函数推导到PI参数整定的保姆级教程 本文提供了一份详细的PLECS教程,指导如何从传递函数推导到PI参数整定,实现三相逆变器电流环的闭环控制。通过坐标变换、控制器设计和仿真验证等步骤,帮助工程师快速掌握电流环控制技术,提升电力电子系统的稳定性和可靠性。 阅读详情

 

1. 什么是IO?

简单来说就是输入输出

2. 网络IO经历步骤

  1. 用户在获取网络资源是在进入网卡,经过网络七层模型将请求交给nginx用户进程

  2. 用户进程无法直接获取磁盘上的资源,会将请求获取什么资源翻译并转发给内核,内核驱动磁盘寻道找到文件(最耗时间的环节)

  3. 文件同样也不能直接交给用户进程,首先磁盘将文件放至内核缓冲区,然后内核告知用户进程请求的资源结果已准备好(耗时比较短)

  4. 内核缓冲区将文件拷贝一份至用户进程缓冲区,用户进程拿到文件 构建响应报文,通过http回传给用户

 

 

总结:

IO总共要经历两个阶段

1.磁盘读取数据,将数据拷贝至内核缓冲区

2.将内核缓冲区数据拷贝至用户进程缓冲区


 

3. 网络IO模型种类

 

同步阻塞

比如你要去完成这样一件事情,把水烧开,灌入暖瓶

现在给你一口普通的锅,你也不知道水什么时候可以烧开,你决定守在旁边等待水开。

这个时候的你是什么也做不了的,是不是觉得很浪费时间

当水开了就需要你把水灌入暖瓶,你还是做不了其他的事情

 

 

 

 

同步非阻塞

比如还是烧一锅开水,你还是不知道水什么时候会开,你选择了另外一个策略,去忙其它的事情但是要时不时看下谁开没开

 

改进了什么呢?

你可以在空挡时间忙其它的事情

 

增加了什么麻烦呢?

  1. 你得时不时的确认水开没开(就意味着得不停的调用cpu,占用cpu资源)

  2. 可能你上一次刚看的时候水没开,等你刚看完水开了,那就得等下一次查看的时候才能发现,增加了延迟,等你知道了水开了,自己去把水灌好

 

 

 

Linuxc/c++服务器开发高阶视频学习资料+qun720209036获取

更多视频内容包括C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,K8S,Docker,TCP/IP,协程,DPDK多个高级知识点分享。

 

异步阻塞

这个就比较二了

假如给你一个智能热水壶,水开了会自动的提醒你的,但是你还是要傻傻的等

完全没有利用好智能热水壶的优势(不做解释)

 

 

同步异步:关注的是消息的通知机制

阻塞非阻塞:关注的是在收到结果之前调用者的状态是等待还是忙自己的事情

 

IO多路复用

还拿烧水的例子

不要你来管水开没开,直接交给一个代理,假如代理名叫select,select在那帮你监控水开没开,捎带他还会看饭有没有煮好,你把所有的事情都交代给它,可以去忙自己的事情了在饭还没熟,水还没开的时候select就处于一个等待的状态,假如这个时候水开了select会水开了的结果写到一个小黑板你可以看到并知道水开了,不需要你去查看水开没开,接下来由你将烧开的水灌进暖瓶(用户进程前半部分不阻塞,后半部份阻塞)

 

 

 

select、poll、epoll的区别

无论是select、poll、epoll都可以面对多个用户进程的请求,它相当于一个代理人,收集很多用户进程的请求,他帮你从磁盘上获取数据,复制到内核中,那么这个数据准备没准备好它的实现机制是不一样的

通知方式:假设有一个用户数据准备好了,那么还有很多用户数据还没有准备好,那么如何通知?

select和poll是遍历扫描,效率低下

epoll采用回调机制,epoll会主动通知,效率更高(nginx支持)

 

信号驱动IO

举例:比如我们的智能热水壶我么设定好烧水以后,会给你一个反馈结果为设定成功,然后你就可以去忙其他的事情了,等到水烧开了会发给你一条短息,这个时候你再回去把水灌入暖瓶

 

 

通知机制: 水平触发:多次通知 边缘触发:只通知一次

 

 

Cadence 17.2配置CIS数据库报错?手把手解决ODBC驱动位数不匹配问题 本文详细解析了Cadence 17.2配置CIS数据库时常见的ODBC驱动位数不匹配问题,提供了从系统环境检查到分步解决方案的完整指南。重点解决32位应用程序与64位ODBC驱动之间的架构冲突,包含驱动安装、DSN配置及高级排查技巧,帮助电子工程师快速恢复设计环境。 阅读详情

相关推荐

案例分析|一篇文章带你看懂养鸡场智慧管理系统

养鸡场智慧管理系统是为了满足现代化养鸡业对精细化管理的需求而设计的一款专业软件。随着科技的发展和农业产业的升级,传统的手工记录和管理方式已无法满足高效、准确和实时的数据跟踪需求。本软件旨在通过集成各种功能模块,帮助养鸡场主实现从鸡苗孵化、饲养管理、饲料控制到销售结算等全链条的智能化操作。该系统的核心目标是提升养鸡场的运营效率和盈利能力,通过自动化数据处理,减少人工误差,节省时间和精力。例如,孵化报表和记录模块可以帮助管理者实时监控孵化过程,及时调整策略;

muyu2980的专栏 930

Uniapp学习笔记(数据展示、数据循环、条件编译、计算属性、组件的使用、组件插槽、生命周期)

1.项目准备 1.1开发方式 uni-app为我们提供2种开发方式: 使用DCloud公司提供HBuilderX工具来快速开发; 使用脚手架来快速开发(我们这次项目使用此方式); 1.2脚手架搭建项目 全局安装,如果你以前安装过就不需要重复安装了。 npm install -g @vue/cli 创建项目。 vue create -p dcloudio/uni-preset-vue dnpicture 启动项目(微信小程序)。 npm run dev:mp-weixin

zep 628

DBC到ARXML:AUTOSAR CAN通信栈自动化配置完整指南

在AUTOSAR架构下,DBC(CAN数据库文件)与ARXML(AUTOSAR XML)分别扮演着描述总线通信和ECU内部配置的关键角色。DBC定义了网络上的报文与信号,而ARXML则是AUTOSAR工具链交换配置数据的标准格式。在实际的ECU开发中,如何将DBC中的通信信息高效、准确地转换为ARXML,并自动生成可编译的CAN通信栈BSW配置,是许多工程师面临的痛点。借助DaVinci Configurator等工具,我们可以通过自动化导入链路消除手工映射带来的字节序错误、信号起始位偏差等高风险问题,大幅

weixin_34183910的博客 538

uni-app之数据的存储

目录uni-app之数据的存储存储 取 删 数据同步的 存储 取 删 数据 uni-app之数据的存储 存储 取 删 数据 官网 uni.setStorage(obj) 存储数据 obj里面有着以下参数:obj 为 { key, data, success, fail, complete } 其中:key为存储的值,data为存储的数据,suc为成功的回调,fail为失败的回调,complete为接口调用结束的回调函数(调用成功、失败都会执行) uni.getStorage(obj) 拿

weixin_43845137的博客 6413

涨姿势|小众建模软件Make human,MakeClothes插件使用详解教程(2)

衣服可以从头开始建模,或者通过改变人体网格或由MakeClothes工具提供的“服装助手”(见下文)来建模。在设计和建模一件衣物时,应该记住两个限制。首先,将服装网格映射到人体网格的算法要求服装网格完全由四面体组成。其次,知道MakeClothes每件衣服只支持一种材料是很重要的。 完成MakeClothes工作流程后,您的HOME / makehuman / v1 / data / clothes中的工具将创建一个新文件夹。该文件夹将采用用户为服装项目提供的唯一名称。该文件夹将填充必要的资源,以使该项目在

Crazy_in_3Dmax的博客 1874

在Ubuntu 20.04上,用EtherCAT Igh 1.6.2驱动高创BD3E伺服电机(附完整C代码)

本文详细介绍了在Ubuntu 20.04实时内核环境下,使用EtherCAT Igh 1.6.2主站驱动高创BD3E伺服电机的完整实现方案。从实时系统配置、伺服电机PDO映射到精确控制线程设计,提供了完整的C代码样例和实际项目中的调试技巧,帮助开发者实现工业自动化中的高精度运动控制。

weixin_30772105的博客 110

Nginx(二)—IO模型详解

现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核(kernel),保证内核的安全,操作系统将虚拟空间划分为两部分,一部分为内核空间,一部分为用户空间。

敲代码的小小酥的博客 817

LightTools宏 vs Python API:光学仿真自动化方案选型指南

本文深入对比了LightTools光学仿真自动化中VBA宏与Python API两种方案。VBA宏内嵌易用,适合固定流程批处理;Python API生态强大,尤其在参数优化算法集成方面优势显著,便于构建复杂工作流。文章结合案例,为不同场景下的技术选型提供清晰指南。

garlic的博客 940

NGINX的IO模型详解

普及: 用户空间与内核空间: 现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核(kernel),保证内核的安全,操作系统将虚拟空间划分为两部分,一部分为内核空间,一部分为用户空间。针对linux操作系统而言,将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供内核使用,称为内核空...

liuyuinsdu的专栏 438

uniapp - 最新实现APP连接使用MQTT流程及源码教程,uniapp app端接入mqtt发布订阅和接收消息队列传送消息、断开重连等各种示例代码(完美兼容安卓Android与苹果ios手机)

uniapp app端接入mqtt示例代码教程,uni-app中使用mqtt,uniapp安卓app接入mqtt,uniApp苹果ios集成MQTT教程,uniapp vue3 mqtt app端的接入流程,uniapp开发安卓和ios如何在项目里集成mqtt,Mqtt协议,uniapp开发APP,主动连接mqtt,订阅消息,实现发布,订阅和接收消息,如何在uniapp项目中使用mqtt,uniapp mqtt的使用示例,mqtt连接报错,搭建MQTT通讯做聊天项目,uniapp与设备通信 通过mqtt实现

🏆 前端领域优质创作者 6570

ardupilot 日志分析《xKF1信息》

ardupilot 日志分析系列将会把ardupilot所有的日志文档进行分析,为我们分析无人机的运行状态,炸鸡原因,传感器状态,电机状态,控制信息,滤波信息做准备。本节主要分析xKF1日志信息,欢迎批评指正。学习好ardupilot必须会分析飞行日志,从飞行日志中我们可以学到很多无人机的知识。无人机是综合知识的体现,涵盖:导航、控制、滤波、算法、协议等各种知识,只有更全面的学习,才能在无人机的道路上越走越远。

陌城烟雨 1225

nginx 安装及配置

nginx 配置

qq_42988315的博客 1483

基于STM32L4XX、HAL库的CH182H1以太网收发器(PHY)驱动程序设计

define PHY_REG_PHYSCR 0x12 // PHY特殊控制寄存器。#define PHY_REG_PHYSTS 0x10 // PHY状态寄存器。#define PHY_REG_PHYIDR 0x11 // PHY标识寄存器。#define PHY_REG_ID1 0x02 // PHY标识符1。#define PHY_REG_ID2 0x03 // PHY标识符2。

zhusl6688的博客 404

uniapp网络请求获取数据_网络IO模型的介绍引出nginx的网络IO模型

1. 什么是IO? 简单来说就是输入输出 2. 网络IO经历步骤用户在获取网络资源是在进入网卡,经过网络七层模型将请求交给nginx用户进程用户进程无法直接获取磁盘上的资源,会将请求获取什么资源翻译并转发给内核,内核驱动磁盘寻道找到文件(最耗时间的环节)文件同样也不能直接交给用户进程,首先磁盘将文件放至内核缓冲区,然后内核告知用户进程请求的资源结果已准备好(耗时比较短)内核缓冲区将文件拷贝一份至...

weixin_28868927的博客 134

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

IO模型

IO模型 Redis是单线程的,为什么支持高并发?node.js,nginx也是单线程的。除了Redis数据是存在内存里面的,所有操作都是内存级别的,还有其它原因导致它有如此高的性能? 多路复用(事件轮训) 多路复用是一种IO模型,那系统中还有哪些IO模式?一起来看看吧 常见的IO模型 同步阻塞IO(Blocking IO) 传统IO模型,请求server,如果server没有返回,clien...

weixin_34336292的博客 102

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

五种IO模型祥解

在学习nginx的架构时讲到:NGINX是最知名的模块化,事件驱动,异步,单线程Web服务器和Web代理之一。所以就稍微了解下网络IO模型的基础知识。 网络IO的本质是socket的读取,socket在linux系统被抽象为流,IO可以理解为对流的操作。对于一次IO访问(以read举例)当一个read操作发生时,它会经历两个阶段: 第一阶段:等待数据准备,数据从磁盘拷贝到内核空间 (Wait...

qq_36462472的博客 1684

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

reactor线程模型_网络编程模型的演进之路

在没有IO多路复用的模型的情况下,为了支持高并发采取以下网络模型一:阻塞IO+多线程client连接服务器,服务器有一个线程阻塞的调用accept,accept接收到连接后,创建一个线程来读写读写,并且处理业务逻辑阻塞IO不能充分利用CPU,后面就出现了reactor模型二:reactor模型特点:1:非阻塞IO+IO多路复用(此处的IO多路复用采用的是epoll模型,关于为何选用epoll,可以...

weixin_40008566的博客 84

Reactor 模型

传统IO模型: PPC 是 Process Per Connection 的缩写,其含义是指每次有新的连接就新建一个进程去专门处理这个连接的请求。 TPC shi Thread Per Connection 的缩写,其含义是每次有新的连接就创建一个线程去处理。 缺点: 资源浪费,每次连接就创建一个线程,结束后线程就销毁了 基于以上缺点,我们可以使用线程池进行线程复用,但是如果某个线程阻塞...

qq_39158142的博客 690

2.2.2 redis、memcached、nginx 网络组件

【代码】2.2.2 redis、memcached、nginx 网络组件。

ALex_zry的博客 906

草稿! Linux网络系统总结!

以文件传输,分析io工作方式 以及如何优化传输文件的性能。

weixin_47868976的博客 772

NGINX Ingress Controller路由外部请求至Sonic前端界面

通过Kubernetes的NGINX Ingress Controller,实现对Sonic数字人系统的高效路由与统一接入。该方案解决了前后端服务暴露、跨域访问与路径转发等关键问题,支持HTTPS加密、动态配置更新和多租户扩展,为轻量级AI模型提供了生产级网关能力,助力数字人系统在教育、电商等场景中实现低门槛、高可用的部署。

weixin_42402664的博客 1031

Linux高性能网络编程:从Epoll到io_uring的演进

网络I/O多路复用技术是提升服务器并发处理能力的关键。从基础的select/poll到高效的epoll,再到革命性的io_uring,Linux系统不断突破性能瓶颈。epoll通过红黑树管理文件描述符,将时间复杂度优化到O(1),成为处理C10K问题的标准方案。而io_uring则通过共享环形队列实现零拷贝通信,彻底消除系统调用开销。这些技术在游戏服务器、金融交易系统等高性能场景中发挥着重要作用。理解不同I/O模型的实现原理和适用场景,对于构建高吞吐、低延迟的网络服务至关重要。

weixin_34195546的博客 298

一次性讲清楚,Nginx详解其原理,可以给我鼓掌了

金三银四即将到来,推荐阅读:过关斩将!三面字节,27k*17offer,原来也没那么难 一、Nginx进程模型分析  在介绍Nginx的进程模型之前我们先来给大家解释下一些常见的名词,这能辅助我们更好地了解Nginx的进程模型。作为Web服务器,设计的初衷就是为了能够处理更多的客户端的请求,一般来说,完成并行处理请求工作有三种方式可以选择,多进程、多线程、异步方式。 二、多进程方式 服务器每接收到一个客户端请求,就会由主进程生成一个子进程出来和该请求建立连接进行交互,直到连接断开以后子进程.

weixin_51954021的博客 1657

学习Nginx往这看

沉淀、积累

weixin_48173866的博客 1005

sql server ldf 文件突然增大_一条SQL注入引出的惊天大案

虚拟机的世界一个安静的夜晚,我,一个新的线程诞生了!我抬头一看,原来我降生的地方是在一个IE浏览器中,这里是一个Windows帝国!一生下来就要干活了,拿着我的代码开始忙活。忙碌了一会儿,正当我在磁盘上写入了一个kernerl32.dll文件,我突然被冻结了,动弹不得,不仅如此,我看到其他线程也被冻结了,整个Windows帝国像是被冰封了一般!“小样,总算现出了原型,果然是一个漏洞攻击网页!”,周...

weixin_39580727的博客 122

nginx 服务器

一、几种web服务器的比较 Apache的发展时期很长,Apache 有许多优点, 如稳定、 开源、 跨平台等, 但它出现的时间太长了,在它兴起的 所以它被设计成了一个重量级的、 不支持高并发的 Web 服务器。 在 Apache 服务器上, 如果有数以万计的并发 HTTP 请求同时访问, 就会导致服务器上消耗大量内存, 操作系统内核对成百上千的 Apache 进程做进程间切换也会消耗大量 CPU...

yangxiaoyan12的博客 348
上一篇: 高性能库DPDK精简理解
下一篇: Linux 内核及 GNU/Linux 操作系统的基本体系结构
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值