Wrayの知识库 Wrayの知识库
首页
  • Java 基础
  • Java 集合
  • Java 并发
  • Java IO
  • JVM
  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Security
  • MySQL
  • Redis
  • 计算机基础
  • 操作系统原理
  • Linux
  • MacOS
  • Windows
  • 系统工程与研究专题
  • AI 基础
  • 大模型基础
  • Prompt 工程
  • RAG 检索增强生成
  • Agent 智能体
  • AI 应用开发
  • AI 工程化
  • AI 安全与治理
  • AI 面试与设计题
  • 纸质书
  • 电子书
  • 学习课程
疑难杂症
GitHub (opens new window)
首页
  • Java 基础
  • Java 集合
  • Java 并发
  • Java IO
  • JVM
  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Security
  • MySQL
  • Redis
  • 计算机基础
  • 操作系统原理
  • Linux
  • MacOS
  • Windows
  • 系统工程与研究专题
  • AI 基础
  • 大模型基础
  • Prompt 工程
  • RAG 检索增强生成
  • Agent 智能体
  • AI 应用开发
  • AI 工程化
  • AI 安全与治理
  • AI 面试与设计题
  • 纸质书
  • 电子书
  • 学习课程
疑难杂症
GitHub (opens new window)
  • 操作系统概述
  • 计算机基础

  • 操作系统原理

    • 操作系统职责与内核架构
    • 进程线程与调度
    • 内存管理与虚拟内存
    • 文件系统与VFS
    • IO模型与中断
      • 1. 学习目标
      • 2. 知识框架
      • 3. 核心概念
      • 4. 机制与实践
      • 5. 常用命令与工具
      • 6. 常见误区
      • 7. 进阶研究方向
      • 8. Tips 快问快答
      • 9. 总结
    • 权限安全与隔离
    • 启动流程与系统服务
    • 性能观测与故障定位
  • Linux

  • MacOS

  • Windows

  • 系统工程与研究专题

目录

IO模型与中断

IO 模型决定应用如何等待外部事件。阻塞、非阻塞、多路复用、异步 IO、信号和中断共同影响服务并发能力。

# 1. 学习目标

  • 理解阻塞 IO、非阻塞 IO、IO 多路复用和异步 IO。
  • 能解释 select、poll、epoll、kqueue、IOCP 的差异。
  • 能把应用线程模型和操作系统 IO 模型联系起来。

# 2. 知识框架

IO模型与中断
├─ 入门:建立术语、对象和日常操作的直觉
├─ 进阶:理解机制、边界和跨平台差异
└─ 专家:能排障、能设计、能阅读实现和研究材料

高并发 IO 的核心不是“线程越多”,而是用更少线程管理更多等待中的连接,把 CPU 留给真正可处理的事件。

# 3. 核心概念

主题 说明 工程关注
阻塞 IO 调用方等待 IO 完成后返回 简单但线程占用高
非阻塞 IO 调用立即返回,需要轮询或事件通知 适合事件循环
多路复用 一个线程等待多个 IO 事件 epoll、kqueue、Selector、Netty
异步 IO 提交请求后由系统完成并回调或通知 Windows IOCP、部分平台 AIO

# 4. 机制与实践

  1. 低并发同步业务可以使用阻塞 IO,高并发长连接优先事件驱动模型。
  2. 事件循环线程不要执行耗时阻塞任务,避免拖慢所有连接。
  3. 网络问题要结合连接状态、事件循环延迟、内核队列和应用线程池分析。

# 5. 常用命令与工具

命令或工具 作用 使用建议
strace -e trace=network -p pid 观察网络相关系统调用 定位 accept、read、write、epoll_wait
netstat -s 查看协议栈统计 观察重传、丢包和错误
lsof -iTCP -sTCP:LISTEN 查看监听端口 确认服务是否真正监听

# 6. 常见误区

  • 把 NIO 等同于一定高性能:模型只是基础,业务阻塞、内存分配和锁竞争仍会拖慢系统。
  • 在事件循环中写阻塞代码:一个慢操作会影响同一事件循环上的大量连接。
  • 忽略背压:写入速度超过下游消费能力时,队列和内存会持续膨胀。

# 7. 进阶研究方向

  • 比较 epoll、kqueue、IOCP 的通知模型。
  • 阅读 Netty、Redis、Nginx 的事件循环设计。
  • 研究 io_uring 对 Linux 异步 IO 的改进。

# 8. Tips 快问快答

Q:IO 多路复用解决什么问题?

A:让少量线程等待大量连接的就绪事件,减少一连接一线程的资源开销。

Q:非阻塞 IO 是否不需要等待?

A:不是。它只是调用不阻塞当前线程,等待逻辑需要由事件机制或轮询处理。

Q:epoll 为什么适合高并发?

A:它能高效管理大量文件描述符的就绪事件,避免每次扫描全部连接。

# 9. 总结

IO 模型是高并发系统的底层支点。理解阻塞、非阻塞、事件通知和异步完成后,才能真正看懂服务器、数据库和中间件的网络模型。

上次更新: 2026/06/25, 10:02:19
文件系统与VFS
权限安全与隔离

← 文件系统与VFS 权限安全与隔离→

Copyright © 2023-2026 Wray | 鄂ICP备2024050235号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式