golang的select借鉴linux的实现思路

首先强化一个概念:
    所有的用户态进程想要访问系统资源(硬盘,网卡)必须切换到内核态,而进程的切换回造成巨大的性能开销

select操作:
    内核会监听select范围内的全部connection,轮训全部connection,如果有数据ready了,那么就通知相应的进程
epoll操作:
    异步的,当connection建立后内核态进行操作,数据ready之后自动通知相关用户态进程。

零拷贝技术:
    当网卡接收到消息后,需要将数据拷贝到内核态,这个过程中,性能浪费。零拷贝技术采用DMA技术,使得系统
    调用函数在收到网卡回调的时候cpu给DMA发出拷贝数据到内核指定空间的命令,在真正拷贝的过程中不需要cpu
    的真正的参与,故称为零拷贝技术。