网络

网络分层模型

IO模式

阻塞I/O

普普通通

  • 进程发出IO请求后阻塞
  • 操作系统完成后,唤醒进程

非阻塞I/O

操作系统不阻塞而是返回结果

  • 进程发出IO请求,不阻塞而是继续往下走
  • 进程循环查询系统,系统立即返回完成/进行中
特点是用户进程需要不断的主动询问kernel数据好了没有。

I/O多路复用

即一个进程,通过一种机制,可以监听多个 IO 请求,多个 socket

也就是一个方法,同时监听10个连接。当有一个连接准备就绪后,方法就会返回,此时业务可以新起一个线程去处理该就绪连接。

select

仅仅知道有IO事件发生,不知道具体是哪个事件,需要轮询

poll

与select相同,区别在于没有最大连接数的限制

epoll

即event poll,事件驱动。会告知调用时,哪个流发生哪个事件

异步IO

发起 IO 后,进程不阻塞也不再关心。IO 完成时,操作系统主动把数据复制到用户空间并通知进程。

异步指的是:操作系统收到数据并复制到用户空间(即进程接收数据)这个步骤。

其它3种模式,进程接收数据时,均会阻塞。

发布于 2020/08/23 浏览