IO
文章平均质量分 89
d3y1
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
IO模型07:io_uring新一代异步IO模型
io_uring 是 Linux 5.1 引入的新型异步 IO 模型,通过用户态与内核态共享的提交队列(SQ)和完成队列(CQ),实现 IO 请求提交与结果回收的零系统调用优化。相比 epoll 需要多次系统调用,io_uring 在理想情况下可绕过上下文切换与数据拷贝,显著提升高并发场景下的性能。其核心机制基于环形队列与 mmap 映射的共享内存,支持批量操作与灵活扩展,是 Linux 异步 IO 的重要演进,定位类似 Windows IOCP,正逐步完善生态。原创 2026-10-28 19:14:55 · 354 阅读 · 0 评论 -
IO模型06:Java NIO Selector核心原理
Java NIO 的 Selector 通过 SelectionKey 管理 Channel 的事件注册与就绪状态,底层利用 epoll(Linux)、kqueue(macOS)或 poll 实现多路复用。注册时将 Java 事件(如 OP_READ)翻译为 Native 事件,查询时反向转换。select() 阻塞等待就绪事件,wakeup() 可唤醒阻塞线程,实现异步通知。核心流程包括注册、事件翻译、轮询与处理,支持高效并发网络编程。原创 2026-10-28 18:49:02 · 293 阅读 · 0 评论 -
IO模型05:epoll事件模式与Netty Selector
epoll 通过红黑树与就绪链表实现高效事件管理,相比 select/poll 的全量复制与线性扫描,具备高并发优势:支持海量 fd、O(1) 返回就绪事件、增量注册。其 LT/ET 模式分别适用于简单处理与高性能场景。Netty 在 Linux 下利用 epoll 构建 Reactor 模型,结合主从多线程架构,实现稳定高效的高并发服务,成为事实标准。原创 2026-10-28 18:40:11 · 220 阅读 · 0 评论 -
IO模型04:epoll内核原理与源码路径
epoll 通过解耦事件注册(epoll_ctl)与查询(epoll_wait),并利用红黑树管理监听对象、就绪链表(rdlist)高效返回已就绪事件,避免全量遍历。内核中 eventpoll 结构维护等待队列、就绪列表和红黑树,ep_insert 在添加文件描述符时注册回调函数 ep_poll_callback,实现事件驱动。相比 select/poll,epoll 在高并发场景下性能显著提升,是高性能网络服务的核心机制。原创 2026-10-28 18:28:55 · 427 阅读 · 0 评论 -
IO模型03:select与poll系统调用
select 与 poll 是多路复用的早期实现,通过一次系统调用监控多个 Socket,减少用户态与内核态频繁切换。select 使用固定大小的 fd_set,受限于 1024/2048 个文件描述符,且需重复复制和遍历集合;poll 改用动态 pollfd 数组,解除数量限制,但仍需整体复制和遍历,时间复杂度为 O(n),无法有效应对高并发场景,为后续 epoll 的诞生铺垫基础。原创 2026-10-27 10:45:17 · 287 阅读 · 0 评论 -
IO模型02:BIO底层原理与Socket内核结构
BIO 通过阻塞 I/O 实现数据读取,网卡利用 DMA 将数据直接写入内核缓冲区,进程在 recv 时若无数据则进入等待队列,让出 CPU。数据到达后,中断触发内核将数据写入接收缓冲区,并唤醒等待进程。整个过程依赖“一个连接一个线程”的模型,效率低下。为解决此问题,引入 IO 多路复用(如 select、poll、epoll),实现单线程监控多个 Socket,显著提升并发处理能力。原创 2026-10-27 10:36:33 · 159 阅读 · 0 评论 -
IO模型01:从BIO到五种IO模型
本文系统梳理从BIO到五种IO模型的演进,厘清同步/异步、阻塞/非阻塞概念。通过三层视角(应用层、框架层、OS层)解析全链路异步化路径,强调NIO本质是编程与线程模型的异步化,底层仍多为同步IO。重点剖析read/write数据拷贝机制及五类IO模型特性,指出高性能核心在于减少线程开销与上下文切换,最终实现“一个线程处理更多连接”的目标。原创 2026-10-27 10:27:15 · 223 阅读 · 0 评论 -
IO-21各种I/O模型全面对比分析
本文全面对比分析了五种I/O模型:阻塞I/O、非阻塞I/O、多路复用I/O、信号驱动I/O和异步I/O。从异步程度、编程复杂度、性能指标和平台支持等方面进行详细对比,通过图表展示各模型在并发连接数、吞吐量和延迟方面的表现差异。文章指出:阻塞I/O简单但性能差;多路复用I/O在性能和复杂度间取得平衡;异步I/O性能最优但实现复杂。最后给出选型建议:低并发用阻塞I/O,中等并发用非阻塞或复用I/O,高并发首选复用或异步I/O,特别强调Web服务器宜用多路复用I/O方案。原创 2025-09-27 10:32:17 · 748 阅读 · 0 评论 -
IO-20异步I/O算法源码
本文深入探讨了异步I/O的核心算法实现,分析了Linux AIO、Windows IOCP等平台的异步I/O机制。文章通过源码级解析,详细介绍了异步I/O的工作流程,包括请求提交、异步执行和完成通知三大核心算法模块。重点剖析了Linux AIO的上下文管理算法和请求提交算法,展示了kiocb数据结构、io_submit系统调用实现以及请求处理流程。文中还提供了完整的架构示意图和关键代码片段,揭示了异步I/O在请求队列管理、DMA传输、零拷贝优化等方面的技术实现细节,为深入理解高性能I/O系统提供了技术参考。原创 2025-09-27 10:24:26 · 972 阅读 · 0 评论 -
IO-19异步I/O执行过程流程图和时序图
本文通过一系列流程图和时序图详细展示了异步I/O的完整执行过程,包括Linux AIO和Windows IOCP的不同实现机制。图表涵盖了从请求提交、内核异步执行、DMA传输到完成事件处理等关键环节,对比了同步与异步I/O的时序差异,并展示了内存管理优化和事件批处理等高级特性。这些可视化表示有助于深入理解异步I/O的高效性和低延迟特性,为性能优化提供参考。原创 2025-09-27 10:17:33 · 962 阅读 · 0 评论 -
IO-18异步I/O主要特性及优缺点分析
异步I/O是I/O模型的最高级形式,通过完全异步操作实现极致性能。核心特性包括真正的异步执行、零拷贝传输和百万级并发支持,优势在于高吞吐量、低延迟和资源高效利用。但存在显著劣势:编程复杂度极高,需要处理回调地狱和状态管理;系统要求苛刻,依赖特定内核和硬件;调试困难,异步堆栈难以追踪。适用场景为高并发系统,但对开发团队要求较高。原创 2025-09-27 10:09:36 · 1147 阅读 · 0 评论 -
IO-17异步I/O架构详解
异步I/O架构是实现高性能系统的终极方案,其核心特点是真正的非阻塞操作。系统通过多层架构实现异步处理:应用层发起请求并注册回调,异步I/O子系统管理请求队列,内核层负责调度和DMA传输,硬件层执行零拷贝传输。Linux AIO、Windows IOCP和POSIX AIO是三种主要实现,各具特色:Linux提供原生内核支持,Windows集成线程池,POSIX强调可移植性。关键优化技术包括零拷贝传输、事件聚合和内存池管理,能显著减少上下文切换和内存拷贝开销。这种架构特别适合需要处理大量并发I/O请求的高性能原创 2025-09-27 10:03:02 · 1261 阅读 · 0 评论 -
IO-16信号驱动I/O算法源码
本文深入探讨信号驱动I/O的核心算法实现,包括信号安装、文件描述符配置和异步通知机制。通过源码分析展示了信号处理函数安装、信号掩码管理、文件描述符异步模式设置等关键技术实现。重点解析了信号驱动I/O的工作流程,从信号安装到事件触发处理的完整过程,并提供了详细的代码示例来说明如何实现信号驱动I/O的高效配置和管理。原创 2025-09-27 09:54:34 · 1032 阅读 · 0 评论 -
IO-15信号驱动I/O执行过程流程图和时序图
本文通过流程图和时序图详细展示了信号驱动I/O的完整执行过程,包括信号安装、文件描述符配置、信号生成与处理等关键环节。图表清晰呈现了从信号安装到I/O处理的完整流程,包括信号处理函数的调用时序、文件描述符状态检查以及信号去重机制。同时对比了现代替代方案如signalfd的统一事件处理流程,为理解信号驱动I/O的工作原理和实现细节提供了直观的参考。原创 2025-09-26 14:45:44 · 584 阅读 · 0 评论 -
IO-14信号驱动I/O主要特性及优缺点分析
信号驱动I/O特性分析 信号驱动I/O是Unix系统中的一种异步通知机制,通过SIGIO信号实现数据就绪通知。其主要特性包括:基于Unix信号机制的异步通知、进程级事件分发和简单的事件驱动模型。优势在于真正的异步性(无需轮询)、编程模型直观和系统资源占用低。但存在显著不足:信号处理复杂(需考虑异步安全)、可扩展性差(高并发下性能下降)以及可靠性挑战(信号可能丢失或合并)。尽管在现代系统中已被更高效的机制取代,信号驱动I/O仍是理解异步I/O演进的重要环节。原创 2025-09-26 14:44:08 · 892 阅读 · 0 评论 -
IO-13信号驱动I/O架构详解
信号驱动I/O架构摘要 信号驱动I/O是一种基于Unix信号的异步通知模型,主要由四层架构组成:应用程序层、信号机制层、内核信号驱动层和设备驱动层。其工作流程包括:1)应用程序安装SIGIO信号处理函数并设置文件描述符;2)设备数据到达触发中断;3)内核生成SIGIO信号;4)应用程序在信号处理函数中执行I/O操作。关键配置步骤包括设置异步模式(O_ASYNC)、指定接收进程(F_SETOWN)和安装信号处理器(sigaction)。该架构通过硬件中断、驱动层状态检查、文件系统层poll方法和信号递送机制的原创 2025-09-26 14:42:30 · 729 阅读 · 0 评论 -
IO-12多路复用I/O算法源码
本文深入分析了多路复用I/O的核心算法实现,重点探讨了select、poll和epoll等系统调用的底层机制。文章从内核数据结构(如位图管理、红黑树)和事件处理算法(注册、等待、通知、分发)两个维度展开,并通过源码级示例详细解析了select系统调用的实现过程,包括文件描述符集合管理、轮询等待队列初始化、文件状态检查等关键步骤。分析揭示了多路复用I/O在高效处理大量并发连接时的核心算法设计思路和性能优化策略。原创 2025-09-26 14:39:42 · 1039 阅读 · 0 评论 -
IO-11多路复用I/O执行过程流程图和时序图
本文通过流程图和时序图详细解析了多路复用I/O的工作机制,包括select、poll和epoll三种实现。select通过轮询检查所有文件描述符,poll改进了事件处理方式,而epoll采用回调机制显著提升性能。时序图展示了从系统调用到内核处理的全过程,特别突出了epoll的事件驱动特性。这些图表直观呈现了多路复用I/O从初始化到事件处理的关键环节,有助于深入理解其设计原理和性能差异。原创 2025-09-26 14:38:05 · 902 阅读 · 0 评论 -
IO-10多路复用I/O主要特性及优缺点分析
多路复用I/O是一种高效的高并发网络编程技术,具有事件驱动、单线程高并发和良好可扩展性等核心特性。其主要优势包括高性能并发处理能力(可支持C10K到C1000K连接)、统一的编程模型和跨平台支持。然而也存在编程复杂性高、单点故障风险大和CPU密集型任务处理困难等局限。性能分析显示,不同实现(如select/poll/epoll)在连接数扩展时表现差异显著,epoll的O(1)复杂度使其在大规模连接场景下优势明显。原创 2025-09-26 14:36:18 · 808 阅读 · 0 评论 -
IO-09多路复用I/O架构详解
多路复用I/O架构摘要 多路复用I/O是现代高并发网络编程的核心技术,通过单线程同时监控多个文件描述符实现高效I/O处理。其架构包含应用程序层、多路复用层和内核事件机制三层结构。主要实现方式包括select(基于位图的O(n)扫描)、poll(基于数组的O(n)遍历)和epoll(基于红黑树的O(log n)查找和就绪链表的O(1)操作)。epoll采用更高效的事件驱动模型,支持水平触发(LT)和边缘触发(ET)两种通知模式。select受限于1024个文件描述符,而epoll/kqueue可支持海量连接,原创 2025-09-26 14:32:20 · 707 阅读 · 0 评论 -
IO-08同步非阻塞I/O算法源码
立即返回机制:避免进程阻塞,提高系统响应性轮询优化:通过智能算法减少CPU开销错误分类处理:针对不同的错误情况采取不同的处理策略状态管理:跟踪文件描述符的状态变化性能优化:自适应算法和批量操作提高效率理解这些算法实现对于掌握高性能网络编程、构建事件驱动应用以及优化系统性能都具有重要意义。非阻塞 I/O 作为现代异步编程的基础,其算法设计思想直接影响着更高级 I/O 模型的实现。原创 2025-09-26 14:23:07 · 800 阅读 · 0 评论 -
IO-07同步非阻塞I/O执行过程流程图和时序图
摘要 本文通过一系列流程图和时序图详细展示了同步非阻塞I/O的执行过程。主要内容包括非阻塞I/O总体流程图、读取详细流程和轮询机制,以及系统调用时序图(如fcntl设置标志和非阻塞read)。轮询策略部分展示了忙等轮询和智能轮询(采用指数退避)的实现差异。这些图表直观呈现了非阻塞I/O的关键环节:标志设置、状态检查、错误处理(EAGAIN/EINTR)和性能优化策略(如延迟调整),帮助开发者深入理解其工作原理和性能特征。原创 2025-09-26 14:21:07 · 594 阅读 · 0 评论 -
IO-06同步非阻塞I/O主要特性及优缺点分析
同步非阻塞 I/O 是一种改进的 I/O 模型,通过轮询机制避免阻塞问题。其核心特性包括非阻塞性、轮询机制和同步操作。主要优势在于避免永久阻塞、支持单线程处理多连接以及提供精细控制能力。但存在编程复杂性高、CPU开销大和不适合高并发等劣势。性能上表现为不同的CPU使用模式,响应时间受轮询策略影响,可扩展性随连接数增加而下降。适用于中等并发、需要精细控制的场景,如单线程事件循环和资源受限环境。原创 2025-09-26 14:19:19 · 1078 阅读 · 0 评论 -
IO-05同步非阻塞I/O架构详解
同步非阻塞I/O详解:采用轮询机制避免阻塞,内核立即返回数据或EAGAIN错误。架构包含用户空间轮询循环、内核状态检查及硬件中断处理三层结构。通过fcntl设置O_NONBLOCK标志实现非阻塞模式,TCP/UDP读取时优先检查缓冲区状态。提供忙等(低延迟高CPU)和休眠(高延迟低CPU)两种轮询策略,支持自适应延迟调整。典型应用于需兼顾响应速度与CPU效率的场景。原创 2025-09-26 14:16:30 · 584 阅读 · 0 评论 -
IO-04同步阻塞I/O算法源码
本文深入分析了同步阻塞I/O的核心算法实现,涵盖系统调用、VFS层和具体文件系统的源码细节。重点剖析了read()和write()系统调用的完整流程,包括权限检查、缓冲区管理、页缓存机制等关键环节。通过代码示例展示了从用户空间调用到底层实现的完整链路,包括ext4文件系统的具体实现和通用文件操作的封装逻辑。文章还详细解析了页缓存的读取/写入机制,包括缓冲区管理、块映射和I/O提交等核心操作,为理解阻塞I/O的工作原理提供了深入的源码级视角。原创 2025-09-26 14:09:43 · 794 阅读 · 0 评论 -
IO-03同步阻塞I/O执行过程流程图和时序图
本文通过流程图和时序图详细说明了同步阻塞I/O的执行过程。主要内容包括:1)阻塞I/O的完整执行流程,从系统调用到内核处理、数据检查、进程阻塞和唤醒;2)文件读取的详细流程,包括缓存检查、权限验证和不同类型文件的处理;3)套接字读取的时序交互;4)进程状态转换机制和等待队列操作流程。这些图表清晰地展示了阻塞I/O在数据未就绪时的进程阻塞、调度切换,以及数据就绪后的唤醒恢复过程,帮助理解阻塞I/O的性能特征和实现原理。原创 2025-09-26 14:08:00 · 1013 阅读 · 0 评论 -
IO-02同步阻塞I/O主要特性及优缺点分析
同步阻塞I/O特性分析 核心特性: 同步性:应用必须等待I/O完成 阻塞性:进程进入阻塞状态,不消耗CPU 简单性:代码逻辑线性直观 优势: 编程简单:代码简洁,逻辑清晰 资源高效:阻塞期间CPU可执行其他任务 可靠性高:错误立即返回,状态一致 劣势: 并发性能差:线程创建开销大,存在C10K问题 响应延迟:高并发时调度延迟显著 资源浪费:线程栈内存占用大 适用场景: 低并发应用 简单业务逻辑 开发资源有限的项目 教学演示环境 性能特点: 低并发时吞吐量高 高并发时性能急剧下降 延迟随并发数增加而波动原创 2025-09-26 14:06:06 · 855 阅读 · 0 评论 -
IO-01同步阻塞I/O架构详解
同步阻塞I/O是最基础的I/O模型,应用程序发起I/O调用后会阻塞等待操作完成。该模型架构简单,包含用户空间、内核空间和硬件层三层交互。核心流程通过read()/write()系统调用实现,涉及数据在内核缓冲区和用户缓冲区之间的拷贝。多线程阻塞模型可提升并发能力但资源消耗大。该模型编程简单但并发性能差,适合简单应用和教学场景,不适合高并发服务。现代改进包括线程池优化、连接复用和异步包装等技术。原创 2025-09-26 13:55:19 · 583 阅读 · 0 评论
分享