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

Architecture 处理器处理中断的速度有多快,architecture,operating-system,interrupt,processor,context-switch,Architecture,Operating System,Interrupt,Processor,Context Switch,我在研究中断。所以大多数架构都是中断驱动的,如果所有的东西都是中断驱动的,那么处理器处理所有这些的速度有多快。例如,当按下键盘上的键时,它会创建一个中断,要求内核查找新字符的缓冲区,在这种情况下,处理器可以以多快的速度工作,还有当插入一个中断时,处理器需要切换到内核空间,这在上下文切换方面会花费很多。所以我假设,即使在所有这些之后,如果处理器有很好的性能,那么我只能假设两次按键之间的时间在计算机速度方面是很多时间?一分钟内平均发生多少次上下文切换?我想这会让我对我真正学习的东西有所了解,并有一种

我在研究中断。所以大多数架构都是中断驱动的,如果所有的东西都是中断驱动的,那么处理器处理所有这些的速度有多快。例如,当按下键盘上的键时,它会创建一个中断,要求内核查找新字符的缓冲区,在这种情况下,处理器可以以多快的速度工作,还有当插入一个中断时,处理器需要切换到内核空间,这在上下文切换方面会花费很多。所以我假设,即使在所有这些之后,如果处理器有很好的性能,那么我只能假设两次按键之间的时间在计算机速度方面是很多时间?一分钟内平均发生多少次上下文切换?我想这会让我对我真正学习的东西有所了解,并有一种真实的生活感受。。。。谢谢

在一个普通的linux系统中,有一个不错的值,还有一个更低的不错的值 具有大约典型的800ms量子值,更高的nice值具有5ms 量子

Linux系统使用启发式来决定进程是否是交互式的。 你最好读一下这封信:

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

在windows中,应用程序支持的不仅仅是抢占式多任务处理 内核通过GetMessage()API调用[在windows GUI程序中]。其中 当您调用GetMessage()时,当有消息时,该进程将重新调度
等待在其系统队列中处理。

速度取决于多个因素:

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


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

    这取决于处理器。你可以看看这个: