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

FreeRTOS学习笔记—③RTOS内存管理篇(正在更新中)

二、RTOS的核心功能

RTOS的核心功能块主要分为任务管理、内核管理、时间管理以及通信管理4部分,框架图如下所示:
(1)任务管理:负责管理和调度任务的执行,确保系统中的任务能够按照预期运行。
(2)内核管理:负责系统核心功能的管理,包括内存、中断、异常处理和系统启动等。
(3)时间管理:负责所有与时间相关的操作,包括系统时钟、定时器、任务延迟和周期性任务的执行。
(4)通信管理:提供任务之间的通信机制,确保任务能够有效地协作和共享资源。
在这里插入图片描述

2.2 内存管理

  源码中对应了5种内存管理的方法,如下所示。不过在了解这5种方式前,需要对TCBStack有个认识。
  (1)TCB:即任务控制块,是操作系统用来管理每个任务的信息结构体。每个任务(或线程)在RTOS中都会有一个对应的TCB。TCB中存储了任务的所有关键信息,用于操作系统对任务的调度、状态管理和上下文切换。通常TCB包含如①任务ID:每个任务的唯一标识符。②任务状态:例如就绪、运行、阻塞、挂起等状态。③程序计数器(PC):保存任务执行的当前指令位置。④寄存器状态:保存任务执行时CPU的寄存器值。⑤任务优先级:用于任务调度中的优先级信息。⑥任务栈指针:指向任务的栈空间,保存任务的栈信息。⑦任务上下文信息:保存任务切换时的上下文信息,如寄存器内容等。
  (2)Stack:即, 是每个任务用来存储其运行时局部变量、函数调用链和返回地址等信息的内存空间。对于RTOS,每个任务通常都有自己独立的栈空间,这样可以确保任务之间的执行互不干扰。在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 图像边缘检测技术详解:利用OpenCV实现Sobel算子
  • 016 交换网络的弹性设计与高可用性
  • 出现 TypeError: Cannot read properties of undefined (reading ‘getUserMedia‘) 解决方法
  • 12、Django Admin在列表视图页面上显示计算字段
  • 计算机毕业设计 半成品配菜平台 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
  • 串行总线舵机
  • C#数组中的Rank,GetUpperBound(), GetLength()
  • 云计算和传统IT相比,有哪些优势?
  • 爬虫练习(js逆向解密)
  • 操作系统体系结构分类
  • Python爬虫:通过js逆向获取某瓜视频的下载链接
  • 计算机岗位(面试)
  • Leetcode Day21组合总和
  • 设计模式之-开闭原则
  • ecmascript和javascript的区别详细讲解
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • mysql 数据库四种事务隔离级别
  • Otto开发初探——微服务依赖管理新利器
  • QQ浏览器x5内核的兼容性问题
  • SQLServer之索引简介
  • vue-router 实现分析
  • yii2权限控制rbac之rule详细讲解
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 记录一下第一次使用npm
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 判断客户端类型,Android,iOS,PC
  • 如何优雅地使用 Sublime Text
  • 算法-插入排序
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 微服务核心架构梳理
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 7行Python代码的人脸识别
  • CMake 入门1/5:基于阿里云 ECS搭建体验环境
  • 关于Android全面屏虚拟导航栏的适配总结
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • # linux 中使用 visudo 命令,怎么保存退出?
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • # 利刃出鞘_Tomcat 核心原理解析(七)
  • #### go map 底层结构 ####
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #pragma data_seg 共享数据区(转)
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (windows2012共享文件夹和防火墙设置
  • (安卓)跳转应用市场APP详情页的方式
  • (八)Spring源码解析:Spring MVC
  • (分布式缓存)Redis持久化
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (九)c52学习之旅-定时器
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (四)activit5.23.0修复跟踪高亮显示BUG