当前位置:网站首页>epoll介绍

epoll介绍

2022-07-01 11:19:00 每日一悟

多个客户端连接到达kernel(内核)

线程/进程 read fd 读内核

BIO:socket在 这个时期是blocking (多进程)

NIO:同步非阻塞时期 (但进程)

多路复用NIO:kernel中增加了select 

NIO:如果有1000fd代表用户进程轮训调用1000次kernel,成本大

多路复用NIO:kernel中增加了select ,内核先select(1000fds),返回有用的,进程再read(fd)

用户态、内核态 

内核的区域,用户是不能访问的,所以需要传递数据,导致fd相关数据拷来拷去

如何改善:共享空间(红黑树、链表、mmap)属于内核的部分,也属于用户的部分

进程中文件描述符放红黑树,将数据放到链表里

零拷贝:kernel中多了个sendfile(系统调用)(out,in) 、read(fd)、write(fd)

网卡到kernel socketIO 

文件到kernel 文件IO

sendfile:进程调sendfile内核读数据拿到缓冲区,直接发出去

原网站

版权声明
本文为[每日一悟]所创,转载请带上原文链接,感谢
https://blog.csdn.net/yw_2022/article/details/125510543