io
文章平均质量分 94
hellozhxy
这个作者很懒,什么都没留下…
展开
-
网络 IO 演变过程
作者:jaydenwen,腾讯 pcg 后台开发工程师在互联网中提起网络,我们都会避免不了讨论高并发、百万连接。而此处的百万连接的实现,脱离不了网络 IO 的选择,因此本文作为一篇个人学习的笔记,特此进行记录一下整个网络 IO 的发展演变过程。以及目前广泛使用的网络模型。1.网络 IO 的发展在本节内容中,我们将一步一步介绍网络 IO 的演变发展过程。介绍完发展过程后,再对网络 IO 中几组容易混淆的概念进行对比、分析。1.1 网络 IO 的各个发展阶段通常,我们在此讨论的网络 IO转载 2021-04-25 10:01:36 · 309 阅读 · 0 评论 -
Redis 是单线程凭什么能支撑高并发
最近在看 UNIX 网络编程并研究了一下 Redis 的实现,感觉 Redis 的源代码十分适合阅读和分析,其中 I/O 多路复用(mutiplexing)部分的实现非常干净和优雅,在这里想对这部分的内容进行简单的整理。几种 I/O 模型为什么 Redis 中要使用 I/O 多路复用这种技术呢?首先,Redis 是跑在单线程中的,所有的操作都是按照顺序线性执行的,但是由于读写操作等待用户输入或输出都是阻塞的,所以 I/O 操作在一般情况下往往不能直接返回,这会导致某一文件的 I/O 阻塞导致整个转载 2021-04-23 11:42:11 · 156 阅读 · 0 评论 -
Linux I/O 原理和 Zero-copy 技术全面揭秘
作者:allanpan,腾讯 IEG 后台开发工程师两万字长文从虚拟内存、I/O 缓冲区,用户态&内核态以及 I/O 模式等等知识点全面而又详尽地剖析 Linux 系统的 I/O 底层原理,分析了 Linux 传统的 I/O 模式的弊端,进而引入 Linux Zero-copy 零拷贝技术的介绍和原理解析,将零拷贝技术和传统的 I/O 模式进行区分和对比,帮助读者理解 Linux 内核对 I/O 模块的优化改进思路。 全网最深度和详尽的 Linux I/O 及零拷贝技术的解析文章导言如今转载 2021-04-19 11:55:50 · 333 阅读 · 0 评论 -
什么是mmap?
传统IO在开始谈零拷贝之前,首先要对传统的IO方式有一个概念。基于传统的IO方式,底层实际上通过调用read()和write()来实现。通过read()把数据从硬盘读取到内核缓冲区,再复制到用户缓冲区;然后再通过write()写入到socket缓冲区,最后写入网卡设备。整个过程发生了4次用户态和内核态的上下文切换和4次拷贝,具体流程如下:用户进程通过read()方法向操作系统发起调用,此时上下文从用户态转向内核态 DMA控制器把数据从硬盘中拷贝到读缓冲区 CPU把读缓冲区数据拷贝转载 2021-03-29 21:55:01 · 11559 阅读 · 2 评论