IO多路复用技术

IO多路复用技术应用场景:

1、服务器需要同时处理多个处于监听状态或多个连接状态的套接字
2、服务器需要处理多个网络协议的套接字

UNIX编程提供了5种IO模型

1、阻塞IO
2、非阻塞IO
3、异步IO
4、I/O复用模型
linux提供了select/poll,select/poll顺序扫描fd是否处于就绪状态,而且支持的fd的个数有限。linux还提供了epoll操作,使用基于事件驱动的方式代替了顺序扫描,且fd的个数不受限制,因此性能更高。当fd就绪时,会立即回调函数rollback。
5、信号驱动IO

epoll总结

1、支持一个进程打开的socket描述符(fd)不受限制(仅受限于操作系统的最大文件句柄数)
2、I/O效率不会随着fd的数量增加而线性下降
3、使用mmap加速内核与用户空间的消息传递
无论是select、poll还是epoll,都需要内核把FD消息通知给用户空间,如何避免不必要的内存复制就显得很重要了,epoll是通过内核和用户空间 mmap 同一块内存实现。
4、epoll的API更加简单

你可能感兴趣的:(IO多路复用技术)