0

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

+0

这是如此依赖于处理器。你可以看看这个:http://www.advenage.com/topics/linux-timer-interrupt-frequency.php –

回答

0

在一个正常的linux系统中有一个很好的价值,并有较好的价值 具有典型的800ms量子值和更高的好值具有5ms的量子效应。

Linux系统使用启发式来决定进程是否为交互式。 你最好仔细阅读本说明:

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

有迹象表明,有关调度等待IO约束,等等等等

在一些数据结构,比如Linux保持 轨道上的互动进程数windows不止是抢先式多任务,应用程序通过GetMessage()API调用[在Windows GUI程序的情况下]支持 内核。在调用GetMessage()时 ,当有消息时,该进程将安排回去 待定在系统队列中处理。

2

如何快速地取决于多个方面:

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

这是一般性问题的一般答案。

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