epoll介绍

多个客户端连接到达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内核读数据拿到缓冲区,直接发出去

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值