中断技术如何帮助实现多线程



中断技术如何帮助实现多线程?或者多线程和中断之间的关系是什么?

非常感谢!

时间和事件驱动的线程调度的最常见实现是基于中断的。例如,硬件计时器生成周期性中断。处理它们的ISR可以将当前执行线程的状态保存到线程的状态结构中,然后从另一个结构加载另一个线程的状态,并在执行最后一条ISR指令(某种"中断返回"/IRT)时使CPU执行该另一个程序。

'或者多线程和中断之间的关系是什么?'

在大多数现代抢先操作系统上,中断是进入操作系统的方式——除非有中断,否则操作系统什么都不做。中断有两种类型——来自设备/驱动程序的硬件中断(即磁盘、键盘、NIC、鼠标、USB、内存管理硬件、定时器硬件),以及"软件中断",即系统调用。任何一种类型的中断都可以更改就绪/正在运行的线程集。从本质上讲,操作系统是一个大型中断处理程序,可以选择更改中断返回后将运行的线程集。

硬件中断的重新调度允许一个抢占式多线程操作系统在硬件(和/或其相关驱动程序)需要关注时快速响应。

这种线程级对硬件信令的高性能响应是抢占式多任务处理器相对于协作系统的最大优势,也是我们忍受线程间信令、同步等复杂性的主要原因。

如果没有中断和抢占,磁盘、网络、USB、显示器的性能,我们桌面系统上几乎所有的东西都会非常糟糕,以至于视频流等应用程序都无法工作。当NIC芯片有一个很好的、很大的视频缓冲区时,它可以引发硬件中断,运行驱动程序,用数据加载用户缓冲区,并在视频流应用程序中创建一个线程,该线程正在等待I/O,准备好/运行,以便显示数据。

这与时间分割如何帮助多任务处理非常相似。如果一个线程可以被中断以运行另一个线程,那么您就不必担心线程占用处理器并阻止其他线程进行任何前进。

多线程

thread1 ______          _____ 
thread2       _____          _____
thread3            _____          _____

线程共享CPU时间

中断

isr              ________
threadn _________        _________

中断总是导致上下文切换到中断处理程序/中断服务例程,并强制占用CPU时间。

最新更新