处理器处理中断的速度有多快

时间:2012-09-30 03:00:30

标签: architecture operating-system interrupt processor context-switch

我正在研究中断。所以大多数架构都是中断驱动的,如果一切都是中断驱动的,那么处理器处理所有这些的速度有多快。例如,在按下键盘键的同时,它会产生一个中断,要求内核为新字符寻找缓冲区,在这种情况下,处理器可以提供多快的速度,同时在放置中断时,处理器需要切换到内核空间,并且在上下文切换方面成本很高。所以我假设,即使在所有这些之后,如果处理器具有良好的性能,那么我只能假设两个击键之间的时间在计算机速度方面有很多时间?一个平均值,一分钟内发生了多少次上下文切换?我想这会让我对我正在学习的东西有所了解并获得真实的生活感受....谢谢......

2 个答案:

答案 0 :(得分:2)

多快取决于多种事情:

  1. CPU和中断控制器(如果有)的硬件延迟
  2. CPU时钟频率(通常,事件(或对它们的响应)发生的速度不会快于此)
  3. CPU可以访问所需内存的速度(系统表(例如中断向量表,但可能有段表和页表等),堆栈(中断的代码指令指针通常会保存在堆栈,因此ISR可以返回它,ISR代码本身及其使用的所有数据)。显然,代码,数据和TLB缓存将在这里做出贡献。
  4. ISR完成工作所需的时间,特别是如果ISR不能相互抢占,那么并发中断必须被序列化。
  5. 中断优先级。通常,为不同的中断源分配不同的优先级。例如,您需要不可屏蔽的中断,机器检查中断(基本上,报告严重硬件问题的中断)和定时器中断具有比键盘中断更高的优先级。在基于优先级的中断处理中,所有优先级低于当前服务中断的中断都必须“等待”。因此,如果您有许多高优先级中断,则可以使用明显且变化的延迟来处理较低优先级的中断。极端情况是高优先级中断不断涌现。这可能是由于设计不当或硬件故障造成的。
  6. 与其他CPU的通信和交互。在MP系统中,中断处理程序有时可以使用自旋锁来获得对多个CPU之间共享的资源的独占访问。如果存在争用,则ISR将等待,并且在当前ISR完成其工作之前,不会为所有其他中断(或所有较低优先级的中断)提供服务。
  7. 这是一般性问题的一般答案。

    编辑:我忘了再提一件事了。存在一些奇怪的CPU,其中某些指令是可重复的(考虑到x86的rep movsb)并且在重复指令完全完成之前中断无法开始服务,这可能需要相当于执行1000或甚至更简单的个体的时间说明。因此,尽管启用了中断,但可能存在一些不让ISR开始运行的CPU怪癖。其中一个CPU是TI的TMS320C54xx。有了它,你必须小心FIR滤波器代码。如果过滤器很长并且实现为重复的MAC指令,则会在中断服务中引入延迟。

答案 1 :(得分:0)

在普通的Linux系统中,有一个很好的值,而且值较低 具有典型的800ms量子值,较高的值具有5ms 量子。

Linux系统使用启发式方法来确定流程是否是交互式的。 你最好阅读这篇文章:

https://www.cs.columbia.edu/~smb/classes/s06-4118/l13.pdf

关于调度程序有几种数据结构,例如linux keep 跟踪交互进程的数量等待IO绑定等。

在windows中,不仅仅是抢占式多任务,应用程序支持 内核通过GetMessage()API调用[在Windows GUI程序的情况下] .Where 当您调用GetMessage()时,该进程将在有消息时安排回来 等待在其系统队列中处理。