下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

内核
最新资讯
FreeRTOS-Plus-TCP 现具有统一的 IPv4 和 IPv6 功能,支持多接口。
为基于 FreeRTOS 的固件实现防砖化 MCU FOTA:
宣布停止支持 FreeRTOS 202012 LTS。
FreeRTOS 网站现已提供简体中文版本
新的 FreeRTOS Long Term Support 版本现已发布。

上下文切换
[RTOS 基本原理]

当一个任务执行时,它会利用处理器/微控制器寄存器,并像其他程序一样访问 RAM 和 ROM。这些资源(处理器寄存器,堆栈等)一起组成了任务执行上下文

ExeContext.gif


一个任务是一段有顺序的代码——它不知道什么时候会被内核挂起(换出或换入)或恢复(换入或换入), 甚至不知道什么时候自己被挂起或恢复过。请参考如下示例: 一个任务在即将执行将两个处理器寄存器内包含的数值相加之前被挂起。 当该任务被挂起时,其他任务会执行,还可能会修改处理器寄存器的数值。恢复时, 该任务不会知道处理器寄存器已经被修改过了——如果它使用经修改过的数值, 那么求和会得到一个错误的数值。

为了防止这种类型的错误,任务在恢复时必须有一个与挂起之前相同的上下文 。通过在任务挂起时保存任务的上下文,操作系统内核负责确保 上下文保持不变。任务恢复时,其保存的上下文在执行之前由操作系统内核 恢复。保存被挂起的任务的上下文和恢复被恢复的任务的上下文的过程被称为 上下文切换


下一节: RTOS 基本原理——实时应用程序

Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.