linux shell操作 - 05 IO 模型

文章目录

  • IO模型
  • 阻塞IO
  • 非阻塞IO
  • IO多路复用
  • 异步IO
  • 网络IO模型

  • 可以进行IO(input输入、output输出)操作的内核对象
  • 如文件、管道、socket…
  • 流的入口是fd (file descriptor);

IO模型

  • 阻塞IO, 一直等待,不占用资源;无法同时处理多个任务;

流程图

  • 非阻塞IO, 忙轮询,占用CPU;

  • IO多路复用,多个IO复用一个进程/线程,既可以阻塞等待不占用资源,又可以同时并发处理多个任务;

    • linux 支持select, poll, epoll
  • 异步IO;
     

阻塞IO

 

非阻塞IO

  • 忙轮询,占用CPU;
  • 性能不如阻塞IO;
  • 代码流程,不停地 遍历所有的fd,查看是否就绪;
    在这里插入图片描述

 

IO多路复用

多个IO复用一个进程/线程,既可以阻塞等待不占用资源,又可以同时并发处理多个任务;

  • select
    • 最大连接数默认1024;
    • 两次拷贝,先将所有的fd 从用户空间拷贝到内核空间,由内核监控是否有fd就绪(可读或可写),也就是有网络事件发生;一旦有fd就绪,则遍历所有的fd集合,找到对应的fd并将其 标记为就绪态(可读、可写),然后将所有的fd(fd集合)从内核空间拷贝到用户空间,用户进程内遍历所有的fd,找出就绪的从进行读写;
    • 两次遍历
    • 并发量大时,性能下降;
    • 代码流程:
      在这里插入图片描述
  • poll,与select 没有本质的区别,只是连接数比select多;
  • epoll,高性能的IO多路复用
    • 连接数更大,上限为进程的最大连接数;
    • 内核中采用红黑树结构,可高效地增删改,仅返回就绪的fd;
    • 将就绪的fd拷贝给用户进程,避免无用的遍历;
    • 适合并发量大的场景,可以解决C10K问题(单台服务器并发1w)
      在这里插入图片描述

 

异步IO

 

网络IO模型

socket网络通信

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/186809.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LLMLingua:集成LlamaIndex,对提示进行压缩,提供大语言模型的高效推理

大型语言模型(llm)的出现刺激了多个领域的创新。但是在思维链(CoT)提示和情境学习(ICL)等策略的驱动下,提示的复杂性不断增加,这给计算带来了挑战。这些冗长的提示需要大量的资源来进行推理,因此需要高效的解决方案,本文将介绍LLM…

分布式篇---第五篇

系列文章目录 文章目录 系列文章目录前言一、你知道哪些限流算法?二、说说什么是计数器(固定窗口)算法三、说说什么是滑动窗口算法前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去…

golang panic关键词执行原理与代码分析

使用的go版本为 go1.21.2 首先我们写一个简单的panic调度与捕获代码 package mainfunc main() {defer func() {recover()}()panic("panic test") }通过go build -gcflags -S main.go获取到对应的汇编代码 可以看到当我们调度panic时,Go的编译器会将这段…

利用Nginx与php处理方式不同绕过Nginx_host实现SQL注入

目录 首先需要搭建环境 nginxphpmysql环境: 搭建网站 FILTER_VALIDATE_EMAIL 绕过 方法1:冒号号分割host字段 方法2:冒号号分割host字段 方法3:SNI扩展绕过 首先需要搭建环境 nginxphpmysql环境: php安装包&a…

具有150KHz固定频率的PWM控制降压型稳压电路芯片D2504,可兼容型号XL4001

D2504是一块具有150KHz固定频率的PWM控制降压型稳压电路,具有高转换效率、2A负 载能力和优异的负载调整率和电压线性度。 主要特点: ● 输入电压范围: 4.5~40V ● 可调输出电压: 1.235~37V ● 最小Drop电压1 5V2A ● 150K 固…

迈巴赫S480升级主动式氛围灯 浪漫婉转的气氛

主动式氛围灯有263个可多色渐变的LED光源,营造出全情沉浸的动态光影氛围。结合智能驾驶辅助系统,可在转向或检测到危险时,予以红色环境光提示,令光影艺术彰显智能魅力。配件有6个氛围灯,1个电脑模块。 1、气候&#xf…

超分辨率重建

意义 客观世界的场景含有丰富多彩的信息,但是由于受到硬件设备的成像条件和成像方式的限制,难以获得原始场景中的所有信息。而且,硬件设备分辨率的限制会不可避免地使图像丢失某些高频细节信息。在当今信息迅猛发展的时代,在卫星…

数据结构与算法编程题21

判别两棵树是否相等。 #define _CRT_SECURE_NO_WARNINGS#include <iostream> using namespace std;typedef char ElemType; #define ERROR 0 #define OK 1typedef struct BiNode {ElemType data;BiNode* lchild, * rchild; }BiNode, * BiTree;bool Create_tree(BiTree&a…

python之pyqt专栏3-QT Designer

从前面两篇文章python之pyqt专栏1-环境搭建与python之pyqt专栏2-项目文件解析&#xff0c;我们对QT Designer有基础的认识。 QT Designer用来创建UI界面&#xff0c;保存的文件是"xxx.ui"文件&#xff0c;"xxx.ui"可以被pyuic转换为"xxx.py",而&…

html table样式的设计 表格边框修饰

<!DOCTYPE html> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetutf-8" /> <title>今日小说排行榜</title> <style> table {border-collapse: collapse;border: 4px double red; /*…

VC++彻底理解链接器:四,重定位

重定位 程序的运行过程就是CPU不断的从内存中取出指令然后执行执行的过程&#xff0c;对于函数调用来说比如我们在C/C语言中调用简单的加法函数add&#xff0c;其对应的汇编指令可能是这样的: call 0x4004fd 其中0x4004fd即为函数add在内存中的地址&#xff0c;当CPU执行这条…

2023大模型安全解决方案白皮书

今天分享的是大模型系列深度研究报告&#xff1a;《2023大模型安全解决方案白皮书》。 &#xff08;报告出品方&#xff1a;百度安全&#xff09; 报告共计&#xff1a;60页 前言 在当今迅速发展的数字化时代&#xff0c;人工智能技术正引领着科技创新的浪潮而其中的大模型…

Linux(7):Vim 程序编辑器

vi 基本上 vi 共分为三种模式&#xff0c;分别是【一般指令模式】、【编辑模式】与【指令列命令模式】。 这三种模式的作用分别是&#xff1a; 一般指令模式(command mode) 以 vi 打开一个文件就直接进入一般指令模式了(这是默认的模式&#xff0c;也简称为一般模式)。在这个模…

使用 HTML、CSS 和 JavaScript 创建图像滑块

使用 HTML、CSS 和 JavaScript 创建轮播图 在本文中&#xff0c;我们将讨论如何使用 HTML、CSS 和 JavaScript 构建轮播图。我们将演示两种不同的创建滑块的方法&#xff0c;一种是基于opacity的滑块&#xff0c;另一种是基于transform的。 创建 HTML 我们首先从 HTML 代码开…

WPF实战项目十七(客户端):数据等待加载弹框动画

1、在Common文件夹下新建文件夹Events&#xff0c;新建扩展类UpdateLoadingEvent public class UpdateModel {public bool IsOpen { get; set; }}internal class UpdateLoadingEvent : PubSubEvent<UpdateModel>{} 2、新建一个静态扩展类DialogExtensions来编写注册和推…

JSP EL 通过 三元运算符 控制界面 标签 标签属性内容

然后 我们来说说 EL配合三元运算符的妙用 我们先这样写 <% page contentType"text/html; charsetUTF-8" pageEncoding"UTF-8" %> <%request.setCharacterEncoding("UTF-8");%> <!DOCTYPE html> <html> <head>&l…

分布式篇---第六篇

系列文章目录 文章目录 系列文章目录前言一、说说什么是漏桶算法二、说说什么是令牌桶算法三、数据库如何处理海量数据?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码…

css三角,鼠标样式,溢出文字

目录 css三角 鼠标样式 例子&#xff1a;页码模块 溢出文字表示方式 margin负值运用 css三角强化 css三角 css三角中&#xff1a;line-height&#xff1a;0和font-size&#xff1a;0是防止兼容性的问题 jd {position: relative;width: 120px;height: 249px;background-…

【matlab程序】matlab利用工具包nctool读取grib2、nc、opendaf、hdf5、hdf4等格式数据

【matlab程序】matlab利用工具包nctool读取grib2、nc、opendaf、hdf5、hdf4等格式数据 引用&#xff1a; B. Schlining, R. Signell, A. Crosby, nctoolbox (2009), Github repository, https://github.com/nctoolbox/nctoolbox Brief summary: nctoolbox is a Matlab toolbox…

「Verilog学习笔记」数据串转并电路

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 关于什么是Valid/Ready握手机制&#xff1a; 深入 AXI4 总线&#xff08;一&#xff09;握手机制 - 知乎 时序图含有的信息较多&#xff0c;观察时序图需要注意&#xff1a…
最新文章