【问题标题】:Context Switch TIme上下文切换时间
【发布时间】:2012-05-09 10:59:29
【问题描述】:

进程之间的上下文切换是否对所有进程(恒定时间)花费相同的时间,或者上下文切换时间取决于因进程而异的各种本地因素(如进程大小、堆栈大小等)?

编辑: 假设操作系统和硬件是固定的,意味着给定操作系统和硬件的时间相同。环境?

【问题讨论】:

  • 这是两个不同的问题 - 你不能将它们与“或”结合起来:)
  • 另外,“量子”是一个不应进入任何操作系统调度讨论的词。它强烈表明线程只能运行一组离散间隔。自 60 年代后期以来,大多数操作系统都没有那样工作。
  • 如果你想要保证,你将不得不使用提供它们的实时操作系统:(
  • 还要记住缓存。在所有其他条件相同的情况下,如果一个进程的数据结构在缓存中,而另一个不在,您将花费额外的周期将它们从主内存中放入缓存中。
  • @Alex - 如果数据实际上在主内存中,那就是真的。如果它被分页了..

标签: process operating-system switching


【解决方案1】:

它因硬件以及操作系统/进程而异:(要从不同的进程运行线程,必须交换内存管理上下文、浮点上下文等。这在某些硬件上比其他硬件更容易/更快。

驱动程序在处理硬件和向操作系统发出线程应该运行的信号时差异很大 - 这是另一个复杂因素。

在某些情况下,此类交换可能需要抢占在另一个内核上运行的线程,而不是接收到启动交换的硬件/软件中断的内核。这比在同一处理器上交换上下文花费的时间要长得多。

在这方面很难得出任何平均数字。您会从哪里开始计时 - 启动进程间线程交换的驱动程序中断或从驱动程序到调度程序的条目?

因此,总的来说,我们可能会同意这需要一些时间并且可能会有所不同。

【讨论】:

  • 在给定的硬件和给定的操作系统上......它会保持不变吗??............我的意思是如果 hwd。并且操作系统是固定的,那么切换的时间应该是恒定的?
  • 不,不在桌面操作系统上。如果要被抢占的线程运行在与处理通过调度程序请求交换的中断的核心不同的核心上,则必须使用一些昂贵的线程间通信来停止运行另一个线程的核心,以便核心可用于运行新准备好的线程。
  • 如果是单核那么时间会一样吗?因为不会有任何昂贵的通讯。
  • 一般来说还是会有很大差异。只有一件事 - 另一个进程中的线程所需的代码和/或数据可能已被分页。
猜你喜欢
  • 2021-09-21
  • 2017-06-01
  • 2011-01-09
  • 1970-01-01
  • 1970-01-01
  • 2019-03-17
  • 2015-09-07
  • 2016-07-04
相关资源
最近更新 更多