【问题标题】:Context switch interrupt handler [closed]上下文切换中断处理程序[关闭]
【发布时间】:2015-12-10 15:37:32
【问题描述】:

哪个中断处理程序负责多任务系统中的上下文切换?

对不起我的英语。

【问题讨论】:

  • 你在说什么操作系统?每次定时器中断都由操作系统决定。但据我了解,“上下文切换”通常意味着在 CPU 上运行不同的用户空间线程,而不仅仅是从用户切换到内核(然后返回)以进行系统调用或中断。
  • 感谢您的回答。我知道上下文切换是什么,但是……看看这个。我会尝试用我糟糕的英语能力来解释它。因此,假设我们有一个运行操作系统的 CPU。现在,当系统滴答中断发生时,它的中断例程可以执行上下文切换吗?或者有专门用于上下文切换的计时器并单独用于系统滴答?还是我完全糊涂了?

标签: timer x86 cpu-architecture context-switch


【解决方案1】:

操作系统可以根据需要从定时器 IRQ 处理程序进行上下文切换。这通常是 CPU-hog 进程用完时间片后会发生的情况。 (内核返回到不同的进程/线程,而不是返回到触发 IRQ 时正在运行的上下文。)

也许https://en.wikipedia.org/wiki/Preemption_(computing)#Time_slice 可以帮忙?

【讨论】:

  • 感谢您的回答,但我在上面写道,我知道如何发生以及什么是上下文切换。所以,拜托,你能回答我的简单问题吗?什么是系统记号?
  • @NikNovák:“system tick”不是一个普通的英语短语(至少不是我熟悉的)。有定时器中断(由定时器触发的硬件 IRQ),还有操作系统的调度程序允许进程运行的时间片。
  • 感谢您的耐心等待,但我不需要解释上下文切换的工作原理。对不起我的英语,我明白如果我写错了你可能不知道我的意思。好的,那么,我们来介绍一个简单的例子,它可以间接回答我的问题,我可以正确描述它。好的,如何在应用程序想要休眠 1 秒的硬件级别上工作。硬件和操作系统如何不确定这个应用程序是否会在大约 1 秒内被唤醒 + 服务于其他线程的上下文切换?
  • 在休眠 1 秒的进程中不涉及硬件。这就是所有的软件。每个时间片,操作系统的调度程序决定现在应该运行什么。 Linux 之类的调度程序算法保留了有关每个进程的一些历史数据,但它们并没有准确计划未来会发生什么。一个睡眠进程只有一个时间戳,它应该在什么时候醒来。每次计时器滴答声,操作系统都会检查是否有任何睡眠进程现在应该唤醒(使用按唤醒时间排序的优先级队列),并将它们添加到需要 CPU 时间的线程池中。
  • 如果这不能回答您的问题,那么我认为语言障碍是一个比其他任何问题都更大的问题。可能有人/某处可以用您的母语询问这个问题,或者至少有人可以帮助翻译。我很难弄清楚什么是对事物运作方式的误解,以及什么是用英语糟糕描述的正确理解。
猜你喜欢
  • 2022-01-09
  • 1970-01-01
  • 2014-09-25
  • 1970-01-01
  • 2017-11-19
  • 2021-07-19
  • 2017-06-01
  • 2011-07-23
相关资源
最近更新 更多