Unp结课—读书笔记(0.3)

 

Unp结课读书笔记(0.3)

Io复用细节

n       select函数的设计问题

     受限于FD_SETSIZE

     拷贝数据、O(n)的检查、多次检查

n       poll解决了FD_SETSIZE的问题,但是设计仍然低效

n       最佳的选择是:epollkqueue

     epoll当前只支持文件上的读、写等事件,eventfdsignalfdtimerfd

     kqueue支持文件添加、删除,AIO,进程fork、终止等,是一种更一般的事件通知机制。

66注:下图是效率对比                                            clip_image002

超时处理

n       三种方法

     alarm

     select

     SO_RCVTIMEOSO_SNDTIMEO选项

n       alarm采用异步信号机制

n       select是同步机制

n       alarmselect在多客户连接的情况下,如何管理?参考ACE

n       简单的方法,推荐采用SO_RCVTIMEOSO_SNDTIMEO,可惜与实现相关

零拷贝技术

n       应用程序àß内核àß网卡,报文零拷贝

n       底层硬件scatter-gather支持

n       内核mbuf/skbuf

n       readvwritevsendfileTCP_CORK (Linux), TCP_NOPUSH (BSD)

更多的参考

n       C10K网站、Scalable Network ProgramminglibeventlighttpdBoost asio库、ACE库。

 

 

原文地址:https://www.cnblogs.com/titer1/p/2004405.html