当前位置: 首页 > news >正文

22、并行任务与调度详解

并行任务与调度详解

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;
http://www.cnnetsun.cn/news/2714.html

相关文章:

  • 23、并行任务调度与同步机制解析
  • 24、嵌入式操作系统:并行任务、调度与安全机制解析
  • 25、嵌入式操作系统:实时应用与低功耗系统解析
  • 26、嵌入式操作系统的发展与应用
  • 13、Docker高级部署与调试全解析
  • 14、容器部署高级主题:消息队列与安全实践
  • 15、Docker 高级部署与集群扩展的关键要点
  • 16、扩展限制与解决方案
  • 17、基础设施扩展限制与解决方案及平台搭建指南
  • 18、构建自定义平台:Ansible与AWS的实践指南
  • 19、使用Packer和Ansible构建并部署自定义AMI到AWS
  • 20、构建自有平台与大规模部署指南
  • 21、大规模部署探索
  • 22、大规模部署探索与工具评估
  • 一位从国外软件转投CAXA的工程师自白
  • 【@NotBlank】@NotBlank与@NotEmpty与@NotNull区别
  • 12、Kubernetes服务部署与管理全解析
  • 13、使用Mesosphere管理和部署Docker应用
  • 14、容器编排工具:Mesosphere、Fleet与Cattle使用指南
  • 15、使用更简单的编排工具:Fleet和Cattle
  • 16、使用简化的编排工具:Fleet 和 Rancher
  • 17、集群监控:工具与实践
  • 18、容器监控与持续集成实践指南
  • 19、使用持续集成构建、测试和部署容器
  • 20、使用持续集成构建、测试和部署容器及自动化基础设施
  • 21、超越容器:自动化基础设施管理
  • 基于滑模观测器(smo)锁相环pll的无位置传感器的永磁同步电机spmsm的矢量控制simul...
  • 4.React组件状态管理
  • 34、Perl 中的 Unicode 处理全解析
  • 35、Perl 中的 Unicode 处理全解析