全网五种Linux IO模型分析「值得收藏」
发布时间
阅读量:
阅读量
1.基础
在引入IO模型前,先对io等待时某一段数据的"经历"做一番解释。如图:

若某个程序或已存在的进程/线程(此处不再区分进程与线程)试图获取某段数据时,则必须在其所属的用户空间内存区域进行读写操作。假设所需的数据显示于磁盘存储区域,则该进程必须首先向内核提交相关请求以触发文件加载过程)。当内核完成文件加载后并将其暂存至其专用缓存区(暂且称之为kernel buffer)后,则必须将这些数据复制至app buffer区域以便供后续操作使用。此时该进程即可在其对应的app buffer区域内执行相应的读写操作以获取所需数据信息。
现在有几个需要说明的问题。
(1).为什么不能直接将数据加载到app buffer呢?
确实可行。某些软件或硬件系统为了提升运行效率与处理性能,在特定场景下能够绕过核心处理器完成数据传输任务。通过直接在存储介质与应用程序缓冲区之间建立通道进行通信,并非传统意义上的串行交互模式而是并行的数据流动方式。其中一种典型的技术是RDMA(基于内存的数据传输技术),它正是通过这种机制实现了高效的并行数据传输。
然而,在大多数情况下(即通常情况下),
全部评论 (0)
还没有任何评论哟~
