测量在上下文切换中花费的时间?

A. 上下文切换 是两个进程之间的时间(即,使等待的进程进入执行状态,并将正在执行的进程发送到等待状态)。这种情况发生在多任务处理中。如果等待进程,操作系统必须将状态信息带入内存,并保存当前正在运行的进程的状态信息。

null

为了解决这个问题,我们希望记录交换过程的第一条和最后一条指令的时间戳。上下文切换时间是两个进程之间的差异。

让我们举个例子: 假设只有两个过程,P1和P2。 P1正在执行,P2正在等待执行。在某个时刻,操作系统必须交换P1和P2,让我们假设它发生在P1的第n条指令上。如果t(x,k)以微秒为单位指示进程x的第k条指令的时间戳,则上下文切换将取t(2,1)–t(1,n)。

另一个问题是,交换由操作系统的调度算法控制,可能有许多内核级线程也在进行上下文切换。其他进程可能会争夺CPU或处理中断的内核。用户无法控制这些无关的上下文切换。例如,如果在时间t(1,n)内核决定处理一个中断,那么上下文切换时间就会被夸大。

为了避免这些障碍,我们必须构建一个环境,以便在P1执行后,任务调度器立即选择P2运行。这可以通过构建数据通道来实现,例如P1和P2之间的管道。

也就是说,让P1作为初始发送方,P2作为接收方。最初,P2在等待数据令牌时被阻塞(休眠)。当P1执行时,它通过数据通道将数据令牌传递给P2,并立即尝试读取响应令牌。结果会出现上下文切换,任务计划程序必须选择另一个要运行的进程。由于P2现在处于“准备运行”状态,因此它是任务调度器选择执行的理想候选者。当P2运行时,P1和P2的角色被交换。P2现在充当发送方,P1充当被阻止的接收方。

总结——

  1. P2块等待来自P1的数据
  2. P1标记开始时间。
  3. P1向P2发送令牌。
  4. P1尝试从P2读取响应令牌。这会导致上下文切换。
  5. P2被调度并接收令牌。
  6. P2向P1发送响应令牌。
  7. P2尝试从P1读取响应令牌。这会导致上下文切换。
  8. P1被调度并接收令牌。
  9. 时间标志着P1的结束。

关键是数据令牌的传递会导致上下文切换。让Td和Tr分别表示发送和接收数据令牌所需的时间,让Tc表示在上下文切换中花费的时间量。在步骤2,P1记录令牌传递的时间戳,在步骤9,P1记录响应的时间戳。这些事件之间经过的时间T可表示为:

 T = 2 * (Td + Tc + Tr)

这个公式是由以下事件引起的:

  • P1发送令牌(3)
  • CPU上下文开关(4)
  • P2收到它(5)
  • P2然后发送响应令牌(6)
  • CPU上下文开关(7)
  • 最后,P1收到它(8)

GATE CS实践问题-

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享