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

Multithreading 中断技术如何帮助实现多线程?,multithreading,operating-system,interrupt,Multithreading,Operating System,Interrupt,中断技术如何帮助实现多线程? 或者多线程和中断之间有什么关系 多谢各位 时间和事件驱动的线程调度最常见的实现是基于中断。例如,硬件定时器产生周期性中断。处理它们的ISR可以将当前正在执行的线程的状态保存到线程的状态结构中,然后从另一个结构加载另一个线程的状态,并在执行最后一条ISR指令时加载(某种“中断返回”/IRET)让CPU执行另一个线程。这与时间选择如何帮助多任务非常相似。如果一个线程可以被中断以运行另一个线程,那么您不必担心一个线程占用处理器并阻止其他线程前进。多线程 thread1 _

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


多谢各位

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

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

多线程

thread1 ______          _____ 
thread2       _____          _____
thread3            _____          _____
线程共享CPU时间

中断

isr              ________
threadn _________        _________

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

多线程和中断之间的关系是什么

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

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

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


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

+1因为没有提到“时间切片”,虽然你最好选择一些其他的例子,而不是计时器中断。@MartinJames:计时器中断怎么了?它当然不是唯一的中断源,但它有什么问题?很多操作系统都使用它来实现这个目的。计时器中断没有什么错,只是网络上有这么多“线程是如何工作的”文本暗示计时器中断是唯一一个改变运行线程集的中断(注意,我没有把你的帖子包括在这一集中!)。一般来说,如果这样一篇文章在前几段提到“时间切片”或“量子”,那么令人遗憾的是,如果不是真的不正确的话,那就是误导。