加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

计算机I/O模型详解:深入比较同步、异步与非阻塞

(2025-08-15 16:33:26)
标签:

it

分类: 技术
https://baijiahao.baidu.com/s?id=1829670344057724353&wfr=spider&for=pc

01 计算机I/O基础

计算机组成与总线
计算机的三大核心部件为CPU、内存、I/O,总线是它们的连接纽带,分为PCI、前端总线、内存总线等。北桥芯片负责连接IO总线和CPU,起到桥接的作用,而前端总线也称为系统总线,是连接CPU与北桥的关键通道。内存总线则负责连接内存与北桥,确保内存数据的顺畅传输。

由于北桥的高速性能与IO总线的相对低速性能之间的差异,通常会引入南桥网桥。南桥上集成了众多外设控制器,如磁盘控制器和USB控制器等,以有效协调高速北桥与慢速IO总线之间的工作。

此外,总线本身分为数据总线、地址总线和控制总线。地址总线用于寻址操作,数据总线负责发送和接收数据,而控制总线则用于发送中断信号等控制指令。这种并行传输的方式,确保了I/O操作的高效性和稳定性。

I/O定义及理解
I/O是输入输出的简写,描述数据在计算机内部与外部设备之间的流动过程。这一过程不仅涉及数据的传输,更体现了计算机与外界的交互。理解I/O时,关键在于明确主体,因为不同的主体会对I/O的属性产生不同的解读。例如,人发出的指令是输入,而计算机的响应则是输出。

在计算机架构中,I/O描述了数据从存储设备到内存的转移过程。而从编程的角度来看,I/O操作通常被划分为IO调用和IO执行两个阶段,其中IO调用由进程发起,IO执行由操作系统负责完成。

02 I/O模型解析

同步与异步概述
同步IO要求进程等待操作系统的响应,而非阻塞IO则允许进程或线程在操作系统IO未就绪时执行其他任务。同步与异步是与消息通信机制相关的概念。同步意味着进程必须在发出IO调用后等待操作系统的完成通知,而异步则允许进程在请求IO操作后继续执行其他任务,操作系统会在完成后主动通知进程。

值得注意的是,阻塞与非阻塞是独立于同步与异步的概念,它们描述了进程在等待时的状态。

非阻塞与信号驱动IO
非阻塞IO允许进程在等待中运行其他任务,同时通过定期轮询检查就绪状态。以生活中类比,这样的进程就像是可以边钓鱼边做其他事情,但必须时常回来检查鱼竿,这就是一种轮询的过程。

信号驱动IO则通过信号机制来减少阻塞。在信号驱动IO中,进程通过告诉内核在数据准备就绪时发送信号,从而在不阻塞的情况下捕捉数据。这种方式下,应用进程无需持续监视描述符,也不必阻塞等待数据的到来。

多路复用与异步IO
多路复用(I/O multiplexing)是一种可以同时监控多个文件描述符的IO模型,通过select函数可以高效地监听多个文件描述符,等到任何一个就绪时进行处理。尽管多路复用本质上仍属于阻塞IO,但相比传统的阻塞IO,其效率有显著提升。

异步IO则是最高的非阻塞程度,模型允许进程发起IO请求后立即继续执行其他任务,而不必等待内核完成数据转移。在这种模型下,内核负责主动处理数据的转移,并在完成时通知进程。

总结来看,从阻塞程度来看,各IO模型从高到低排列为:阻塞IO,非阻塞IO,信号驱动IO,多路复用,异步IO。同时,它们的效率则相反,从低到高排列。下图清晰地展示了这一趋势。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有