网络IO模型

两阶段式IO:

网络IO模型_第1张图片
image.jpeg

【阻塞 blocking IO】:

recvfrom -> [syscall -> wait -> copy ->] return OK!

网络IO模型_第2张图片
image.jpeg

【非阻塞 nonblocking IO】:

recvfrom ->[syscall -> wait -> ] return no data ready

recvfrom ->[syscall -> wait -> ] return no data ready

recvfrom ->[syscall -> wait -> ] return data ready

recvfrom ->[syscall -> copy -> ] return OK!

网络IO模型_第3张图片
image.jpeg

【多路复用IO multiplexingIO】

其中每个IO都是非阻塞IO,先使用poll/select 轮训IO句柄,如果有准备好的,开始第二阶段IO(阻塞读数据)

select/poll -> [syscall -> wait -> ] return readable

recvfrom -> [syscall -> copy -> ] return OK!

网络IO模型_第4张图片
image.jpeg

【信号驱动IO signal driven IO】

首先构建一个信号处理器,然后第二阶段阻塞读数据

signal handle -> [syscal -> wait -> ] return

[syscall -> ] signal handle-> recvfrom -> [syscall -> copy -> ] return OK!

网络IO模型_第5张图片
image.jpeg

【异步IO asynchronous IO】

两个阶段都是非阻塞的

aio_read -> [syscall -> wait -> ] return

[syscall -> copy -> ] aio_readCallback

【对比】

网络IO模型_第6张图片
image.jpeg
网络IO模型_第7张图片
image.jpeg

你可能感兴趣的:(网络IO模型)