五种I/O模型
- 同步阻塞IO模型(BlockIng IO)
- 同步非阻塞IO模型(Non-blockIng IO )
- 多路复用IO模型(IO Multiplexing )
- 异步IO(Asynchronous IO)
- 信号驱动IO模型
首先,我们需要明确几个基础概念:
同步:操作系统种的概念:是指必须在先行条件满足之后才能开始执行某一任务。在这里主要是指在触发了IO操作之后必须等待IO操作完成,才能执行接下来的任务。有同步阻塞和同步非阻塞之分。
异步:是指可以和某一个任务同时进行,互不干扰。在这里主要是指出发了IO操作后可以同时执行其他的任务。
阻塞:表示是否停滞在某一状态,无法进行其他操作。
非阻塞:开始某一任务后,可以进行其他操作,但需要定时询问此任务是否完成,也称为轮询。
同步阻塞IO模型(BlockIng IO)
从图中可以看出,同步阻塞模型中,线程在进行了系统调用之后,由于数据还没有准备好,此后一直处于内核态,直到数据准备完成并且从内核的缓冲区中拷贝到用户态的数据区中,系统才从内核才切换成用户态,才能继续执行下面处理数据的操作。
显而易见,这样的方式,大量的时间都阻塞在了内核态中,等待数据的时间都被白白浪费掉了。大大降低了系统的吞吐量,影响系统的并发性。

本文详细介绍了五种I/O模型:同步阻塞IO、同步非阻塞IO、多路复用IO、信号驱动IO及异步IO。通过对比不同模型的特点与应用场景,帮助读者理解各种模型的工作原理及其优缺点。
最低0.47元/天 解锁文章
8367

被折叠的 条评论
为什么被折叠?



