基于任务的应用程序何时切换上下文?

问题描述 投票:0回答:1

假设您有两个任务。每个人都有自己的复杂模块,分别运行基于计划的系统和基于事件的系统。考虑上下文切换时,任务计划程序确切地决定何时以及如何决定何时切换任务,并且在某一时刻它可以做到吗?在执行代码块时,任务会切换吗?就在函数中间吗?

供参考,我正在vxworks环境中工作。

c++ c multithreading task vxworks
1个回答
1
投票

通常,操作系统调度与C代码块无关。它们在发生各种事件时切换,包括:

  • 用于测量您的进程使用CPU多长时间的计时器到期。
  • 连接到计算机的设备报告它已完成任务,并且某些进程的优先级高于您等待的进程。
  • 您的过程发出了无法立即满足的请求,例如从键盘请求输入,而用户尚未输入。

在最后一种情况下,切换当然是在您请求时进行的。关于进程执行的位置,其他变量实际上是随机的。相关的中断可以在您的过程中的任何指令处发生。

在某些处理器体系结构中,甚至可能在某些指令中[[执行中]]发生中断:仅部分执行该指令时,该指令可能会被中断,并且寄存器将被更新,以便可以继续执行以稍后继续执行该指令。 。

© www.soinside.com 2019 - 2024. All rights reserved.