上下文切换-FreeRTOS是如何工作的

转载 2006年05月22日 12:34:00

FreeRTOS是如何工作的--上下文切换


作者:Gavin Lee   来源:upsdn.net    更新日期:2006-04-13

上下文切换


跟任何其他程序一样,一个任务执行时,它使用 处理器/微控制器 的寄存器,访问RAM ROM。这些资源(处理器的寄存器,stack等)一起组成任务的执行上下文(the task execution context).

一个任务是一个连续有序的代码片断。它并不知道它将何时被内核挂起或者恢复,甚至不知道这些事情(挂起或者恢复)在什么时候已经发生了。下面考查(Consider)的这个例子是用来求两个处理器中的寄存器值之和,该任务在执行1条指令后就立即被挂起。

Execute Context
-->任务将要执行ADD指令时,被挂起

-->先前的指令已经把数取到寄存器(Reg1,Reg2)中了,而这些寄存器(Reg1,Reg2)将要被ADD指令用到。当这个任务被恢复后,ADD就是要执行的第1条指令。这个任务不知道是否有另一个的任务会在中间时期 修改 Reg1或者Reg2)

 


当这个任务挂起时,其他任务继续执行,可能会修改处理器寄存器的值。在恢复之后,这个任务也不知道处理器的寄存器被修改过(altered).如果它使用这个修改过的值,就会导致计算的和的结果不正确。

为了避免这类错误,必须保证,在恢复一个任务之后,其上下文环境跟 即将挂起前是一样的。操作系统内核有责任 通过在任务挂起前保存其上下文 来确保这种状况。当任务恢复时,保存的上下文 就被 操作系统内核恢复到先前的执行情况。保存一个被挂起的任务的上下文 并在 任务恢复时 恢复其上下文的这个处理过程就叫做上下文切换(context switching)

相关文章推荐

FreeRTOS系列第11篇---FreeRTOS任务控制

FreeRTOS任务控制API函数主要实现任务延时、任务挂起、解除任务挂起、任务优先级获取和设置等功能。1.相对延时1.1函数描述      void vTaskDelay( portTickType...

FreeRTOS高级篇10---系统节拍时钟分析

操作系统的运行是由系统节拍时钟驱动的。         在FreeRTOS中,我们知道系统延时和阻塞时间都是以系统节拍时钟周期为单位。在配置文件FreeRTOSConfig.h,改变宏configCP...

FreeRTOS系列第13篇---FreeRTOS内核控制

内核控制的一些功能需要移植层提供,为了方便移植,这些API函数用宏来实现,比如上下文切换、进入和退出临界区、禁止和使能可屏蔽中断。内核控制函数还包括启动和停止调度器、挂起和恢复调度器以及用于低功耗模式...

FreeRTOS中打开关闭任务切换

本文介绍FreeRTOS中解决多任务之间互相影响的两种方法。 1 基本临界区 基本临界区是指宏 taskENTER_CRITICAL()与taskEXIT_CRITICAL()之间的代码区间,下面...

freeRtos学习之内核剖析

此文章参考了朱工的博客,真的很佩服朱工。 更为详细的讲解可以查看朱工的博客 开始对内核进行剖析,对于FreeRTOS内核来说,列表就是它最基础的部分。 个人认为内核最核心部分就是TCB控制块和列...

FreeRTOS系列第5篇---FreeRTOS在Cortex-M3上的移植

1. FreeRTOS下载包的文件结构       在FreeRTOS官方网站可以下载到最新版的FreeRTOS包,我这里使用的是V8.2.3版本。       下载包内的总文件数量多的令人生畏,但文...

FreeRTOS 任务调度 任务切换

@(嵌入式) 简述 启动调度器 移植层调度器 启动第一个任务 任务切换 参考 FreeRtos 简述前面文章 介绍了 FreeRTOS 中如何创建任务以及其具体实现。 一般来说, 我们会在程序...

RTOS基本原理:多任务和调度-FreeRTOS是如何工作的

FreeRTOS是如何工作的--RTOS基本原理:多任务和调度作者:Gavin Lee   来源:upsdn.net    更新日期:2006-04-12 RTOS基本原理多任务调度上下文切换实时应用...
  • zhtek
  • zhtek
  • 2006-05-22 12:32
  • 7026

FreeRTOS 任务调度 系统节拍

@(嵌入式) 简述 xTaskIncrementTick 节拍计数器溢出 唤醒超时任务 任务时间片轮循 完整函数 系统延时函数 普通延时函数 vTaskDelay 循环延时函数 vTaskDelayU...

valueOf与toString方法研究

最后群里讨论一些怪题,有高手就想歪脑想hack这两个东西了,虽然最后失败了,但这精神是非常值得鼓励的。于是决定写一篇文章专门来介绍它们。基本上,所有JS数据类型都拥有这两个方法,null除外。它们俩解...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)