您当前的位置:首页 > 电脑百科 > 网络技术 > 网络知识

探索计算机的I/O控制方式:了解DMA控制器的作用与优势

时间:2023-09-07 15:53:17  来源:微信公众号  作者:灵墨AI探索室

/ I/O 控制方式 /

在前面我们已经了解到,每个设备都配备了一个设备控制器。当 CPU 向设备控制器发送命令并将其存储在寄存器中时,设备控制器会执行相应的操作。然而,尽管设备控制器会更新状态寄存器的状态,但是如何将这些信息传达给 CPU 呢?

在设备控制器的寄存器中,通常会有一个状态标志位,用于指示输入或输出操作是否完成。因此,我们可以考虑第一种简单的方法,即轮询等待的方式,让 CPU 一直检查寄存器的状态,直到状态标志位被设置为完成。然而,显然这种方式非常低效,它会占用 CPU 的全部时间。

除了轮询等待的方式,还有一种更高效的方法是采用异步通知。这种方式需要一个中间人来进行通知,即中断控制器,它负责向 CPU 发送中断信号。当设备控制器完成操作后,会触发中断信号发送到中断控制器,然后中断控制器通过通知 CPU 来暂停当前的处理逻辑,以处理中断。这种方式能够有效地利用 CPU 的时间,提高系统的响应速度和效率。

中断可以分为软中断和硬中断两种形式。软中断可以由程序或操作系统主动触发,而硬中断则是由硬件通过中断控制器触发的,例如鼠标等外部设备。是由硬件设备发出的信号,通知系统进行相应的处理。中断的使用可以大大提高系统的并发性和响应能力,使得 CPU 能够更加高效地处理多个任务。

中断虽然是一种优化方法,但它也存在一个不足之处,就是会打断 CPU 当前的工作。特别是在需要进行耗时的操作,例如从磁盘读取数据到内存的 IO 操作,CPU 会被占用大量的时间,导致无法同时处理其他任务。对于这种情况,我们可以借助 DMA(直接内存访问)控制器来解决这个问题。

DMA 控制器是在学习 JAVA 零拷贝技术时经常提到的一个概念。它的作用是让设备在没有 CPU 参与的情况下,能够自行将设备的输入/输出数据传输到内存中。要实现 DMA 功能,需要有硬件上的支持,即 DMA 控制器。那么我们来看看 DMA 是如何帮 CPU 解决问题的。

DMA 的工作方式如下:

首先,CPU 向 DMA 控制器发送指令,告知需要读取的内容以及存储数据的内存地址。

接着,DMA 控制器代替 CPU 与磁盘控制器通信,向磁盘控制器发送读取数据的命令。当磁盘控制器将数据缓冲区填满后,它会将数据传输到指定的内存地址。

一旦磁盘控制器完成将数据传输到内存的操作,它会通过总线向 DMA 控制器发送一个确认成功的信号。

当 DMA 控制器接收到确认信号后,它会发送中断通知给 CPU,告知数据传输已经完成。

此时,CPU 可以直接从内存中读取数据,而无需额外的操作。可以看出,在 CPU 需要读取磁盘数据时,只需向 DMA 控制器发送指令,然后 CPU 可以继续执行其他任务。当磁盘数据被拷贝到内存后,DMA 控制器通过中断的方式通知 CPU 数据已经准备就绪,可以直接从内存中读取。因此,除了在传输开始和结束时需要 CPU 的干预外,CPU 的参与度较低。这样可以极大地提高系统的并发性和响应能力。

有人可能会质疑:为什么 DMA 的效率比中断高呢?磁盘控制器完成读取后只需向 CPU 发送一个中断,DMA 完成后也需要发送一个中断,所以它们不是一样的吗?只是 DMA 直接将数据读取到内存中了?

其实中断方式的控制模式是这样的:硬件每准备好一段数据(存放在自己的内部缓冲区中),就向 CPU 发送一个中断信号;CPU 接收到中断信号后,会停止当前的工作,并将硬件缓冲区的每个字符逐个读取到自己的寄存器中,然后将每个字符逐个写入内存。之后,其他应用可以通过系统调用将内存中的数据取出进行进一步处理。

而 DMA 方式是这样的:硬件先准备好若干数据,并将其存放在自己的缓冲区(比如网卡板载的内存芯片)。然后,硬件向 CPU 发送一个中断信号,表示有一定量的数据要提交。CPU 发现硬件支持 DMA,就向硬件发送通知——将数据存放在内存的特定地址范围内,然后让硬件自行处理。

之后,CPU 不再理会这个硬件,而是让硬件通过自己线路板上的简单处理器,逐个字节地将缓冲区中的数据写入指定的内存位置。需要注意的是,在 DMA 方式下,内存的内容是由硬件自己维护的,CPU 不再参与。这样,当硬件自行搬运缓冲区数据时,CPU 可以继续处理自己的任务,提高了系统的并发性和响应能力。

/ 设备驱动程序 /

尽管设备控制器屏蔽了设备的诸多细节,但每种设备控制器都具有独特的寄存器、缓冲区等使用模式。因此,为了有效屏蔽设备控制器之间的差异,操作系统引入了设备驱动程序。通过设备驱动程序,操作系统能够统一管理不同设备控制器的操作,使其在各种设备上都能正常工作。

设备控制器作为硬件的一部分,并不属于操作系统的范畴。然而,设备驱动程序则是操作系统的一部分,它提供了一个接口,使得操作系统的内核代码可以像本地调用代码一样使用设备驱动程序。设备驱动程序是专门针对设备控制器编写的代码,它发出指令来操作设备控制器,从而实现对设备的操控。通过设备驱动程序,操作系统能够与设备控制器进行有效的通信,并实现对设备的控制和管理。

尽管不同的设备控制器具有不同的功能,但设备驱动程序会提供一个统一的接口给操作系统,这样不同的设备驱动程序就可以以相同的方式接入操作系统。下图展示:

在前面的讨论中,我们提到了中断的重要性。当设备完成了任务时,它会发送一个中断信号来通知操作系统。操作系统需要有一个地方来处理这个中断,而这个地方就是设备驱动程序。设备驱动程序会及时响应控制器发来的中断请求,并根据中断的类型调用相应的中断处理程序来进行处理。

当设备驱动程序初始化时,通常会注册一个与该设备相关的中断处理函数。中断处理程序的处理流程如下:当设备控制器触发中断并通知中断控制器后,中断控制器会向 CPU 发出中断请求,CPU 会停止当前进程的执行并保存当前进程的上下文。接着,CPU 会调用相应的中断处理函数来处理该中断。中断处理函数完成后,CPU 会恢复之前保存的进程上下文,并继续执行被中断的进程。

/ 总结 /

在本文中,我们总结了关于 I/O 控制方式的内容。首先,我们介绍了轮询等待和异步通知两种基本的 I/O 控制方式。轮询等待方式效率低下,会占用 CPU 的全部时间,而异步通知方式通过中断控制器来通知 CPU,能够有效提高系统的响应速度和效率。

接着,我们介绍了中断的使用和分类。中断可以分为软中断和硬中断两种形式,它们能够大大提高系统的并发性和响应能力。然而,中断也存在一个问题,即会打断 CPU 当前的工作,导致无法同时处理其他任务。

为了解决这个问题,我们引入了 DMA(直接内存访问)控制器。DMA 控制器能够让设备在没有 CPU 参与的情况下,自行将设备的输入/输出数据传输到内存中,从而减少 CPU 的参与度,提高系统的并发性和响应能力。

最后,我们介绍了设备驱动程序的作用和重要性。设备驱动程序是操作系统的一部分,它提供了一个接口,使得操作系统能够统一管理不同设备控制器的操作。设备驱动程序还负责处理设备触发的中断请求,并调用相应的中断处理程序来进行处理。



Tags:I/O   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
探索计算机的I/O控制方式:了解DMA控制器的作用与优势
/ I/O 控制方式 /在前面我们已经了解到,每个设备都配备了一个设备控制器。当 CPU 向设备控制器发送命令并将其存储在寄存器中时,设备控制器会执行相应的操作。然而,尽管设备控...【详细内容】
2023-09-07  Search: I/O  点击:(205)  评论:(0)  加入收藏
谷歌员工评论I/O大会:赞美工程师但嘲讽公司高管
新浪科技讯 北京时间5月15日早间消息,据报道,谷歌(117.92, 1.02, 0.87%)员工正在密切关注上周举行的I/O年度开发者大会,以及华尔街对此非常热烈的反应。在I/O开发者大会召开后,...【详细内容】
2023-05-15  Search: I/O  点击:(128)  评论:(0)  加入收藏
谷歌I/O十大重磅发布:生成式AI杀疯全场,首发折叠屏手机
智东西作者 | ZeR0编辑 | 漠影智东西5月11日报道,今日凌晨,在一年一度的谷歌I/O开发者大会上,谷歌CEO桑达尔·皮查伊 (Sundar Pichai)宣布:“对于生成式AI,我们正以一种大胆...【详细内容】
2023-05-11  Search: I/O  点击:(119)  评论:(0)  加入收藏
除了AI,谷歌I/O开发者大会还有哪些看点?
自从微软(310.65, 5.24, 1.72%)支持的ChatGPT出现后,谷歌(106.215, 1.00, 0.96%)一夜之间从机器学习领域的引领者沦为追随者,仓促间推出的Bard没能在市场掀起水花。面对对手步步紧逼,谷歌必须拿出更能打的产品,而眼下...【详细内容】
2023-05-06  Search: I/O  点击:(111)  评论:(0)  加入收藏
虚拟内存 & I/O & 零拷贝
作者:mosun,腾讯 PCG 后台开发工程师一、虚拟内存 1.1 虚拟内存引入我们知道计算机由 CPU、存储器、输入/输出设备三大核心部分组成,如下:CPU 运行速度很快,在完全理想的状态下,存...【详细内容】
2022-10-13  Search: I/O  点击:(304)  评论:(0)  加入收藏
超越“高并发I/O数据库系统”的性能挑战
德州大学阿灵顿分校计算机科学与工程系教授江泓今天与大家分享我们实验室最近的一项研究:在企业级应用环境下,数据库系统高并发I/O带来的性能挑战。该项研究发表在今年的Eur...【详细内容】
2022-07-28  Search: I/O  点击:(344)  评论:(0)  加入收藏
Google I/O 2022 全记录:Android 玩起多设备协同,新硬件成全场主角
整整两个小时的 Google I/O 发布会,对精神的专注度要求可不低。正当人们逐渐出现注意力不集中,开始打哈欠时,Google 开启了「冲锋」,Android 13、Pixel 6a、 Pixel Buds Pro,一连...【详细内容】
2022-05-12  Search: I/O  点击:(238)  评论:(0)  加入收藏
增加的 I/O 请求滞后时间会降低虚拟机性能
如果 ESXi 主机对 LUN 生成的命令超过 LUN 队列深度所允许的数量,则超出的命令会在 VMkernel 中排队。这会增加滞后时间,或是完成 I/O 请求所需的时间。问题主机完成 I/O 请求...【详细内容】
2021-06-23  Search: I/O  点击:(461)  评论:(0)  加入收藏
I/O多路复用,从来没遇到过这么明白的文章
​​​​​​​很多对技术有追求的读者朋友,做到一定阶段后都希望技术有所精进。有些读者朋友可能会研究一些中间件的技术架构和实现原理。比如,Nginx为什么能同时支撑数万乃至数十万的连接?为什么单工作线程的Redis性能...【详细内容】
2021-06-11  Search: I/O  点击:(384)  评论:(0)  加入收藏
理解了Linux I/O机制,才能真的明白“什么是多线程”
你真的了解多线程吗?如果问你“为什么多线程可以提高程序运行效率?”,想必你会说“计算机并行执行任务啊,当然效率高!” 这显然不是一个内行该给出的答案。要知道,一个 CPU 在任何...【详细内容】
2020-11-10  Search: I/O  点击:(392)  评论:(0)  加入收藏
▌简易百科推荐
学生偷看“不良网站”,手机上3个痕迹无法清除,网友:咋不早说
众所周知,中国的常规教育中,总是“谈性色变”,但在这个信息爆炸的互联网时代,即便是一些年纪很小的孩子,也能轻易接触到一些所谓的不良网站,因此这一方面的教育缺失,其实是很可怕的...【详细内容】
2024-03-28    叶姐生活指南  Tags:不良网站   点击:(11)  评论:(0)  加入收藏
什么是网络中的路由器?核心功能解释
路由器是互联网连接的核心元素,是一种允许多个设备连接到互联网,并促进将数据包转发到各自的目标地址的设备。使用动态路由技术,路由器检查数据并在各种可用路径中选择最有效的...【详细内容】
2024-03-07    千家网  Tags:路由器   点击:(31)  评论:(0)  加入收藏
过年该不该升级Wi-Fi 7路由?看完就知道
打开电商网站不难发现,从2023年第三季度到现在,Wi-Fi 7路由器新品越来越多。而且价格不再是高高在上,已经基本和Wi-Fi 6路由价格差不多了。看到这些Wi-Fi 7新品路由,不少朋友就...【详细内容】
2024-02-27    中关村在线  Tags:Wi-Fi   点击:(35)  评论:(0)  加入收藏
聊聊 Kubernetes 网络模型综合指南
这篇详细的博文探讨了 Kubernetes 网络的复杂性,提供了关于如何在容器化环境中确保高效和安全通信的见解。译自Navigating the Network: A Comprehensive Guide to Kubernete...【详细内容】
2024-02-19  云云众生s  微信公众号  Tags:Kubernetes   点击:(37)  评论:(0)  加入收藏
SSL协议是什么?关于SSL和TLS的常见问题解答
SSL(安全套接字层)及其后继者TLS(传输层安全)是用于在联网计算机之间建立经过身份验证和加密的链接的协议。尽管SSL协议在 1999年已经随着TLS 1.0的发布而被弃用,但我们仍将这些...【详细内容】
2024-02-06  IDC点评网    Tags:SSL协议   点击:(69)  评论:(0)  加入收藏
从零开始了解网络协议:TCP/IP详解
从零开始了解网络协议:TCP/IP详解 在当今数字化的时代,网络协议已经成为我们生活中不可或缺的一部分。作为互联网的基础,网络协议规定了数据如何在不同的网络设备之间传输。TC...【详细内容】
2024-02-01    简易百科  Tags:TCP/IP   点击:(59)  评论:(0)  加入收藏
BGP路由属性:互联网路由的灵活控制器
在互联网的庞大网络中,边界网关协议(BGP)是确保不同自治系统(AS)间路由信息有效交换的关键协议。然而,BGP的功能远不止于此。其核心组成部分,即BGP路由属性,赋予了BGP强大的灵活性,使...【详细内容】
2024-01-26  诺诺爱生活    Tags:互联网路由   点击:(40)  评论:(0)  加入收藏
简易百科之什么是网络延迟?
简易百科之什么是网络延迟?随着互联网的普及和发展,网络已经成为我们生活中不可或缺的一部分。然而,我们在使用网络时可能会遇到一种情况,那就是网络延迟。那么,什么是网络延迟呢...【详细内容】
2024-01-24    简易百科  Tags:网络延迟   点击:(144)  评论:(0)  加入收藏
网络延迟与网络速度有什么区别?分享具体的答案
通常,许多人抱怨网速测试。速度还是不错的,但是他们玩游戏的时候怎么会卡住,还是断开连接等等问题,这一系列问题始终困扰着大家。那么,网络延迟与网络速度有什么区别呢?请不要担心...【详细内容】
2024-01-24  萌新小郭    Tags:网络延迟   点击:(48)  评论:(0)  加入收藏
揭秘IP地址的网络威胁与攻击类型
在当今数字化时代,网络攻击已经成为网络安全的一大挑战。IP地址,作为互联网通信的基础,也成为网络威胁和攻击的焦点之一。本文将深入探讨不同类型的网络威胁和攻击,以及如何防范...【详细内容】
2024-01-22  IP数据云    Tags:IP地址   点击:(76)  评论:(0)  加入收藏
站内最新
站内热门
站内头条