老男孩教育专注IT教育10余年,只培养IT技术精英

全国免费咨询电话(渠道合作):400-609-2893

Linux下有哪些IO模型?Linux入门

老男孩IT教育

行业新闻

2021年7月6日 18:38

在Linux学习过程中,会涉及到IO模型,IO分为同步IO和异步IO,还有阻塞IO和非阻塞IO又是什么呢?区别又在哪里?如果你还不太清楚,点进来就对了,希望本篇文章能帮助到你,请看下文:

       在Linux学习过程中,会涉及到IO模型,IO分为同步IO和异步IO,还有阻塞IO和非阻塞IO又是什么呢?区别又在哪里?如果你还不太清楚,点进来就对了,希望本篇文章能帮助到你,本篇适合有一定基础的小伙伴,在后期会接触到IO模型,请看下文:

Linux

       Linux主要有以下5种IO模型:

       1、阻塞IO:进程会一直处在阻塞状态,直到数据传送完成,调用一个IO函数,就会导致应用阻塞,等待数据准备好后,从内核拷贝到用户空间。

       2、非阻塞IO:通过进程反复调用IO函数,在数据拷贝过程中,进程是阻塞的。

       3、IO复用模型:主要说的是select和epoll,一个线程可以对多个IO端口进行监听,当socket有读写事件时会分发到具体的线程进行处理。

       4、信号驱动IO模型:先允许socket进行信号驱动IO,并安装一个信号处理函数,进程继续运行且不阻塞,当数据准备好后,进程会收到一个sigio信号,可以在信号处理函数中调用IO操作函数进行数据的处理。

       5、异步IO模型:异步IO不是顺序执行。用户进程进行aio_read系统调用之后,无论内核数据是否准备好,都会直接返回给用户进程,然后用户态进程可以去做别的事情。等到socket数据准备好了,内核直接复制数据给进程,然后从内核向进程发送通知。IO两个阶段,进程都是非阻塞的。

       同步IO:调用端会一直等待被调用端响应,直到返回结果。异步IO:调用端发起调用请求后,不会立刻返回数据,也不会等待被调用端响应,会通过一些机制或回调函数来通知客户端。阻塞IO:服务端返回结果前,客户端会挂起,这个时候线程不能被CPU调度。非阻塞IO:在服务端返回前,不会阻塞调用端线程,会立刻进行返回。

       学习之路贵在坚持,尤其是互联网行业,要学到的东西还有很多,自学容易半途而废,这个时候就需要选择一个靠谱的机构了,在Linux方面,推荐老男孩教育,我们的Linux课程体系已经十分完善,我们开设了线上、线下两种班级体系,时间不太充足的同学,可以选择进行线上学习,我们也支持免费的试听课,希望能帮到你们。

       推荐阅读:

       Linux各发行版本的区别是什么?老男孩Linux

       Linux常用系统有哪些?老男孩Linux学习

       Linux学习前需要注意什么?老男孩Linux

本文经授权发布,不代表老男孩教育立场。如若转载请联系原作者。