《嵌入式实时操作系统:RT-Thread设计与实现》 —3.5 RT-Thread内核对象模型

举报
华章计算机 发表于 2019/11/24 11:19:25 2019/11/24
【摘要】 本节书摘来自华章计算机《嵌入式实时操作系统:RT-Thread设计与实现》一书中第3章,第3.5.1节,作者是邱祎 熊谱翔 朱天龙 。

3.5 RT-Thread内核对象模型

3.5.1 静态对象和动态对象

RT-Thread内核采用面向对象的设计思想进行设计,系统级的基础设施都是内核对象,例如线程、信号量、互斥量、定时器等。内核对象分为两类,即静态内核对象和动态内核对象,静态内核对象通常放在RW段和ZI段中,系统启动后在程序中初始化;动态内核对象则是从内存堆中创建的,而后进行手工初始化。

代码清单3-1就是一个关于静态线程和动态线程的例子。

代码清单3-1 静态对象和动态对象示例

image.png

image.png

在这个例子中,thread1是一个静态线程对象,而thread2是一个动态线程对象。thread1 对象的内存空间,包括线程控制块thread1与栈空间thread1_stack,都是编译时决定的,因为代码中都不存在初始值,统一放在未初始化数据段中。thread2运行中用到的空间都是动态分配的,包括线程控制块(thread2_ptr指向的内容)和栈空间。

静态对象会占用RAM空间,不依赖于内存堆管理器,内存分配时间确定。动态对象则依赖于内存堆管理器,运行时申请RAM空间,当对象被删除后,占用的RAM空间被释放。这两种方式各有利弊,可以根据实际环境需求选择具体使用方式。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。