任务及任务切换

1.概述

这一块的内容有点晦涩,我也是是搞了很久才搞明白的。所以,从自己搞明白到我决定讲明白也经过了漫长的过程。基于以上的原因我踌躇了很久,这部分的内容讲清楚也是一件具有挑战性的事情。

2.任务

什么是任务?理解这个问题对理解bcos任务切换的原理至关重要。对于一个嵌入式操作系统的使用者理解任务的重点在于任务处理函数,因为任务处理函数是实现任务功能的主体。然而,他们往往忽略了在任务创建之初的他们定义的那个用于任务栈的数组。对于bcos来说,每一个任务都有一片独立的内存空间作为任务执行的栈,对于操作系统开发者而言任务的栈几乎是一个任务的全部。

讲到这里几乎所有读者都还是云里雾里的,对于大多数初学者或者已经工作了好几年的开发者而言,特别是那些更加专注于应用开发的嵌入式开发者,栈在他们的印象中一直都是一个比较模糊的概念。其实,我也是去年(2021年)才在工作中对这个概念逐渐清晰,然而我已经从事C语言编程开发工作3年了,如果从2015年开始算起的话已经有六年之久。过去我印象中的栈只是C语言程序中的一篇内存空间,只知道函数的局部变量会保存在这一片空间中,很长一段时间甚至傻傻的分不清此栈和数据结构课程中学习的栈的区别。既然讲清楚任务切换的原理无法绕开栈这个概念,那我就顺着我的理解过程逐步讲解。

3.从计算机的体系结构讲起

如果有的读者研究过《ARM Cortex-M3权威指南》这本书应该对栈有过深入的了解,我就是从研究这本书开始的。到此,决定从头讲起。话说ARM核内大约有十几二十个寄存器,他们都是32位的寄存器所以STM32是32位的单片机。这些寄存器分别是他们:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南波儿万

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值