Linux内核之中断的本质是轮询?

本文探讨了Linux内核中断的概念,指出中断虽与轮询对立,但在处理器检查中断寄存器的行为上,两者存在相似之处。作者通过《深入理解linux内核》中的描述,提出中断本质上可能也是一种形式的轮询,但效率更高。文章引发对中断和轮询关系的思考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

01 写在前面的话

前段时间在研究触摸屏驱动,触摸屏驱动涉及到一个很基础的内核知识:中断。虽然中断这个词已经非常没有新意了,而且网上资料一搜一大把。在这么多资料中鄙人万花丛中过,依然决定现身说法讲讲中断一二事,或者说探讨一下中断是不是就是轮询。

02 先来点理论

中断,顾名思义,就是打断正在进行中的工作。 我们知道linux管理所有的硬件设备,要做的第一件事是处理器与硬件设备的通信。说的简单,怎么实现呢?简单一点,轮询(polling)可能就是一种解决方法,缺点是操作系统要做太多的无用功,在那里傻傻的做着不重要而要重复的工作。这里有更好的办法—中断,关键在于从硬件设备的角度上看,已经实现了化被动为主动的历史性突破,谁都不喜欢被动,对吧。
中断,本质上是一种电信号,当硬件设备有某种事件发生时就会产生中断信号,由硬件设备把信号发送给处理器(中间还有一个中断控制器,在此不细说),处理器接收到中断后,会马上向操作系统反应此信号的到来,然后就由OS负责处理这些新到来的数据,中断可以随时发生,不用操心与处理器的时间同步问题。
不同的设备对应的中断不同,他们之间的不同从操作系统级来看,差别就在于“中断号”,专业一点就叫中断请求(IRQ)线,通常IRQ都是一些数值。有些体系结构上,中断号是固定的,有的是动态分配的,特定的中断总是与特定的设备相关联,并且内核是需要知道这些信息的。

03 中断等于轮询?

聊到这里,我想无论如何大家对中断都已经形成概念了,虽然还有同步/异步中断,硬/软中断、中断嵌套,设备驱动代码中断相关接口的使用等很多知识未涉及,但是我现在迫不及待想和大家讨论下中断是不是轮询这个问题了。

你可能会说:这不明摆着的吗,中断怎么可能是轮询,中断是打断是被接受!与轮询是完全对立的才对啊!嗯,你说的都对!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值