feat: 新增多个Redis相关的文章,更新Footer和Navbar组件,优化配置文件,修改搜索文本
This commit is contained in:
47
src/content/posts/操作系统/IO多路复用技术.md
Normal file
47
src/content/posts/操作系统/IO多路复用技术.md
Normal file
@@ -0,0 +1,47 @@
|
||||
---
|
||||
title: IO多路复用技术
|
||||
published: 2025-07-19
|
||||
description: ''
|
||||
image: ''
|
||||
tags: [IO,操作系统]
|
||||
category: '操作系统'
|
||||
draft: false
|
||||
lang: ''
|
||||
---
|
||||
|
||||
# 参考资料
|
||||
|
||||

|
||||
|
||||
# 为什么要有IO多路复用技术?
|
||||
|
||||
在没有 I/O 多路复用(如 select/poll/epoll)时,同步 I/O 确实主要分为以下两种模式:
|
||||
|
||||

|
||||
|
||||

|
||||

|
||||
|
||||
当处理 大量并发连接 时,上述两种同步模型存在致命缺陷:
|
||||
|
||||
阻塞 I/O:需要 1 线程/连接 → 线程切换开销大(C10K 问题)
|
||||
非阻塞 I/O:CPU 空转轮询 → 资源浪费严重
|
||||
|
||||

|
||||

|
||||
|
||||
# IO多路复用技术
|
||||
|
||||
IO多路复用是一种允许单个进程同时监视多个文件描述符的技术,使得程序能高效处理多个并发连接而无需创建大量线程。
|
||||
|
||||
## **select/poll/epoll**
|
||||
|
||||
select 的缺点是单个进程能监视的文件描述符数量有限,一般为 1024 个,且每次调用都需要将文件描述符集合从用户态复制到内核态,然后遍历找出就绪的描述符,性能较差。
|
||||
|
||||
poll 的优点是没有最大文件描述符数量的限制,但是每次调用仍然需要将文件描述符集合从用户态复制到内核态,依然需要遍历,性能仍然较差。
|
||||
|
||||
epoll 是 Linux 特有的 IO 多路复用机制,支持大规模并发连接,使用事件驱动模型,性能更高。其工作原理是将文件描述符注册到内核中,然后通过事件通知机制来处理就绪的文件描述符,不需要轮询,也不需要数据拷贝,更没有数量限制,所以性能非常高。
|
||||
|
||||
epoll使用了事件驱动模型
|
||||
|
||||

|
||||
Reference in New Issue
Block a user