linux下I/O多路复用技术基础知识

基础知识:I/O多路复用常用技术
    根据服务端或客户端对I/O操作的不同,网络编程人员须选择不同的多路
复用模型,在大多数情况下,单类模型已不能满足复杂业务要求,此时更多的是
采用几类I/O复用的组合形式。
    select、poll、epoll等是linux下常用的I/O多路复用API,以此
衍生出的大规模并发网络编程模型如PPC、TPC等。
    1.PPC/TPC思想是为每一个到来的连接创建进程(PPC)和线程(TPC)由
派生的进程和线程处理业务,此模型当连接数多时进程和线程间的切换开销不可
忽略,适用于最大连接数不多的情况。
    2.select:对于公平的轮询业务操作来说适应性较好,但也存在最大并发数限制,
由于单个进程打开的文件描述符有限(FD_SETSIZE默认为1024/2048),select每次
调用为线性扫描FD集合,效率会线性下降,且存在内核到用户空间的内存拷贝问题。
    3.epoll:
      3.1 epoll无最大并发连接数限制,上限是最大可打开文件数目,该文件数目
和系统内存大小有关;
      3.2 epoll只关心活跃的连接,不产生无效轮询;
      3.3 epoll使用了类似共享内存方式,无内存拷贝操作;
      3.4 epoll通知用户态有I/0事件到来,并通过结构体告诉应用程序已经注册的相关事件的信息,

根据事件信息用户态直接定位到事件,不必遍历整个FD集合。


linux下I/O多路复用技术基础知识_第1张图片


你可能感兴趣的:(linux下I/O多路复用技术基础知识)