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

24、嵌入式操作系统:并行任务、调度与安全机制解析

嵌入式操作系统:并行任务、调度与安全机制解析

1. 特权级别与堆栈管理

Cortex - M CPU 设计为支持两种不同级别的特权运行代码,这在运行不可信应用代码时极为重要,能让内核始终掌控执行过程,防止因用户线程异常导致系统故障。启动时默认执行级别为特权级,方便内核启动。应用程序可配置为在用户级别执行,并在上下文切换操作中使用不同的堆栈指针寄存器。

1.1 特权级别切换

特权级别切换仅能在异常处理程序中进行,通过存储在 LR 中的特殊异常返回值实现。控制特权级别的标志是$0/530 -寄存器的最低位,可在异常处理程序返回前的上下文切换中更改,从而使应用线程在用户特权级别运行。

1.2 堆栈指针寄存器

大多数 Cortex - M 提供两个独立的堆栈指针 CPU 寄存器:
- 主堆栈指针(MSP)
- 进程堆栈指针(PSP)

操作系统应遵循 ARM 建议,使用 PSP 执行用户线程,而 MSP 由中断处理程序和内核使用。堆栈选择取决于异常处理程序结束时的特殊返回值。目前实现的调度器将该值硬编码为Y''''''',用于在中断后返回线程模式并保持在特权级别执行代码。从中断处理程序返回Y'''''''%值会告知 CPU 在返回线程模式时选择 PSP 作为堆栈指针寄存器。

1.3 上下文保存与恢复函数

为正确实现特权分离,用于任务切换的 PendSV 处理程序需修改,以使用正确的堆栈指针保存和恢复被抢占任务的上下文。原有的TUPSF@DPOU

http://www.cnnetsun.cn/news/2712.html

相关文章:

  • 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 处理全解析
  • 37、Perl 中的 Unicode 字符属性与编码教程
  • 38、Perl编程:字符串、编码、工具与预定义变量全解析