LINUX五中IO模型

  1. 阻塞IO模型

    用户空间调用recvfrom命令 直到数据包到达且被复制到应用进程的缓冲区或发生错误时才返回,这个过程中 进程亦或线程一直处于等待阻塞状态。

       2.非阻塞IO模型  

             用户空间调用内核指令recvfrom后 如果内核空间缓冲区没有数据话EWOULDBLOCK  进程反复(轮询)调用recvfrom命令调用  看有没有数据包准备好在缓冲区

             

       3.IO复用   linux提供select/poll 进程通过将一个或多个fd传递给select或poll系统调用 阻塞在select操作上  这样select可以帮我们侦测多个FD是否处于一致状态。

 

       4.信号驱动  首先开启套接字信号驱动I/O功能 通过调用系统sigaction执行一个信号处理函数(当系统调用立即返回 进程继续工作 不阻塞) 当数据准备好时 生成一个sigio信号,通过信号

          回调通知应用程序调用recvfrom读取数据 并通知主循环函数处理数据

 

 

       5.异步IO  告诉内核启动某个操作 并让内核在整个操作完成后(包括将数据从内核复制到用户自己的缓冲区)通知我们

 

posted @   陶朱公Boy  阅读(377)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示