【问题标题】:How do interruption technique help to implement multithreading?中断技术如何帮助实现多线程?
【发布时间】:2012-02-29 10:39:17
【问题描述】:

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

非常感谢!

【问题讨论】:

    标签: multithreading operating-system interrupt


    【解决方案1】:

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

    【讨论】:

    • +1 表示没有提到“时间片”,尽管你可以选择其他示例而不是定时器中断会更好。
    • @MartinJames:定时器中断有什么问题?它肯定不是唯一的中断源,但它有什么问题呢?许多操作系统为此目的使用它。
    • 定时器中断没有任何问题,除了网络上这么多“线程如何工作”文本暗示定时器中断是唯一改变正在运行的线程集的文本,(注意-我不包括你的帖子在那个集合!)。一般来说,如果这样的文本在前几段中提到“时间切片”或“量子”,即使不是真的不正确,也会令人遗憾地产生误导。
    【解决方案2】:

    '或者说多线程和中断有什么关系?'

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

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        多线程

        thread1 ______          _____ 
        thread2       _____          _____
        thread3            _____          _____
        

        线程共享 CPU 时间

        打扰

        isr              ________
        threadn _________        _________
        

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

        【讨论】:

          猜你喜欢
          • 2010-11-21
          • 1970-01-01
          • 2011-04-15
          • 2011-03-30
          • 1970-01-01
          • 2011-05-07
          • 2011-07-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多