2791|2

6498

帖子

10

TA的资源

版主

楼主
 

《原子Linux驱动开发》基础阅读7:阻塞式与非阻塞式IO [复制链接]

        在Linux系统编程中,IO(输入/输出)操作是不可避免的一部分。特别是在网络通信、文件读写等场景中,IO操作的效率和性能直接影响到整个系统的稳定性和响应速度。其中,阻塞式IO和非阻塞式IO是两种常见的IO模型,它们各自具有独特的特点和应用场景。注意哦,这里的IO是相对与设备而言的,是设备的输入/输出,不是STM32中定义的引脚,不过阻塞式与非阻塞式的表现形式却很相似。
一、Linux阻塞式IO介绍及特点
        阻塞式IO是Linux中最常见的IO模型。在阻塞式IO中,当一个进程发起一个IO请求时,如果该请求不能立即得到满足(例如,等待网络数据到达或磁盘数据写入),进程将被挂起,直到IO操作完成或发生错误。这种模式下,进程无法继续执行其他任务,只能等待IO操作完成。
        尽管阻塞式IO在某些场景下可能表现不佳,但它仍然是许多应用程序和系统的默认选择。这是因为它的简单性和易用性使得开发者能够快速构建和部署应用程序,而无需过多关注底层的IO细节。然而,在需要处理大量并发IO请求或追求更高性能的场景中,开发者可能会选择使用更复杂的IO模型,如非阻塞式IO、异步IO等。
 
阻塞式IO的特点主要有以下几点:
        简单易用:对于初学者来说,阻塞式IO是最容易理解和使用的IO模型。它不需要复杂的编程技巧,只需要按照常规的流程发起IO请求并等待结果即可。
        资源利用率低:由于阻塞式IO在IO操作未完成时会挂起进程,导致CPU资源无法得到有效利用。在大量IO请求的场景下,这可能导致系统性能下降。
        适用于简单场景:对于一些简单的、不需要高并发处理的场景,阻塞式IO是一个很好的选择。例如,单个用户的文件读写操作或简单的网络通信。
 
二、Linux非阻塞式IO介绍及特点
        与阻塞式IO不同,非阻塞式IO在发起IO请求时不会阻塞进程。即使IO操作不能立即完成,进程也可以继续执行其他任务。当IO操作完成时,系统会通过某种方式(如信号、回调函数等)通知进程。
        在Linux系统中,非阻塞式IO的实现通常依赖于系统内核的支持。当一个进程对一个non-blocking socket执行读操作时,如果内核中的数据还没有准备好,它不会阻塞进程,而是立即返回一个错误。进程可以根据这个错误判断数据是否准备好,并再次发起读操作。一旦内核中的数据准备好了,并且再次收到了用户进程的system call,它就会将数据拷贝到用户内存,并返回。
 
非阻塞式IO的特点主要有以下几点:
        高并发性能:由于非阻塞式IO不会阻塞进程,因此可以同时处理多个IO请求,提高系统的并发性能。这对于需要处理大量并发连接的网络服务器等场景非常有用。
        编程复杂度高:相比阻塞式IO,非阻塞式IO的编程复杂度更高。开发者需要处理IO操作的完成通知,以及可能出现的错误和异常情况。
        资源利用率高:由于进程在等待IO操作完成时可以执行其他任务,非阻塞式IO可以更有效地利用CPU资源。

最新回复

这书把阻塞式与非阻塞式IO的特点讲的还是挺明白的   详情 回复 发表于 2024-3-17 16:21
点赞 关注
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引


回复
举报

6815

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

这书把阻塞式与非阻塞式IO的特点讲的还是挺明白的

点评

嗯,就怕进入死胡同,毕竟学习liunx都有一定的单片机基础的,怕弄混淆  详情 回复 发表于 2024-3-17 19:38
 
 

回复

6498

帖子

10

TA的资源

版主

板凳
 
Jacktang 发表于 2024-3-17 16:21 这书把阻塞式与非阻塞式IO的特点讲的还是挺明白的

嗯,就怕进入死胡同,毕竟学习liunx都有一定的单片机基础的,怕弄混淆

 
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表