【发布时间】:2012-02-29 10:39:17
【问题描述】:
中断技术如何帮助实现多线程? 或者说多线程和中断有什么关系?
非常感谢!
【问题讨论】:
标签: multithreading operating-system interrupt
中断技术如何帮助实现多线程? 或者说多线程和中断有什么关系?
非常感谢!
【问题讨论】:
标签: multithreading operating-system interrupt
时间和事件驱动的线程调度最常见的实现是基于中断。例如,硬件定时器产生周期性中断。处理它们的 ISR 可以将当前执行线程的状态保存到线程的状态结构中,然后在执行最后一条 ISR 指令时从另一个结构加载另一个线程的状态(某种“从中断返回”/ IRET) 使 CPU 执行其他线程。
【讨论】:
'或者说多线程和中断有什么关系?'
在大多数现代抢占式操作系统上,中断是进入操作系统的方式 - 除非有中断,否则操作系统什么也不做。中断有两种形式——来自设备/驱动程序的硬件中断(即磁盘、键盘、NIC、鼠标、USB、内存管理硬件、计时器硬件)和“软件中断”,即。系统调用。任何一种类型的中断都可以更改就绪/正在运行的线程集。本质上,操作系统是一个大的中断处理程序,它可以选择更改将在中断返回后运行的线程集。
硬件中断的重新调度允许抢占式多线程操作系统能够在硬件(和/或其相关驱动程序)需要注意时快速响应。
这种在线程级别对硬件信号的高性能响应是抢占式多任务处理程序相对于协作系统的最大优势,也是我们忍受线程间信号、同步等复杂性的主要原因。
如果没有中断和抢占,磁盘、网络、USB、显示器以及我们桌面系统上的几乎所有东西的性能都会非常糟糕,以至于视频流等应用程序将无法运行。当 NIC 芯片有一个很好的、大的视频缓冲区时,它可以引发硬件中断,让其驱动程序运行并用数据加载用户缓冲区,并在视频流应用程序中创建一个线程,该线程正在等待 I/ O,准备好/正在运行,以便它可以显示数据。
【讨论】:
这与时间片如何帮助处理多任务非常类似。如果一个线程可以被中断以运行另一个线程,那么您不必担心某个线程会占用处理器并阻止其他线程向前推进。
【讨论】:
多线程
thread1 ______ _____
thread2 _____ _____
thread3 _____ _____
线程共享 CPU 时间
打扰
isr ________
threadn _________ _________
中断总是会导致上下文切换到中断处理程序/中断服务程序并强制占用 CPU 时间。
【讨论】: