22、并行任务与调度详解
2026/6/21 18:27:45 网站建设 项目流程

并行任务与调度详解

1. 任务创建

当系统运行时,除了正在运行的任务,其他所有任务都处于等待状态。这意味着完整的栈帧会被保存到栈底,栈指针则存储在控制块中,供调度器恢复每个进程时使用。

新创建的任务会在上下文切换过程中首次唤醒。此时,任务应保留其 CPU 寄存器的先前状态,但显然新任务没有这样的状态。在创建栈时,会将一个伪造的栈帧压入栈的末尾,这样当任务恢复时,存储的值会被复制到系统寄存器中,任务就能从其入口点继续执行。

UBTL@DSFBUF函数依赖于栈初始化函数UBTL@TUBDL@JOJU,该函数会为系统寄存器压入初始值以恢复任务,并将存储的栈指针移动到额外帧的开头,该额外帧可以不进行初始化。为了方便访问栈帧中存储的寄存器,我们声明了TUBDL@GSBNF结构和FYUSB@GSBNF结构:

TUSVDU TUBDL@GSBNF { VJOU32@U S0, S1, S2, S3, S12, LR, PC, xPSR; }; TUSVDU FYUSB@GSBNF { VJOU32@U S4, S5, S6, S7, S8, S9, S10, S11; };

以下是栈初始化函数的代码:

TUBUJD WPJE UBTL@TUBDL@JOJU(TUSVDU UBTL@CMPDL *U) { TUSVDU TUBDL@GSBNF *UG;

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询