《嵌入式实时操作系统:RT-Thread设计与实现》 —3.5 RT-Thread内核对象模型
【摘要】 本节书摘来自华章计算机《嵌入式实时操作系统:RT-Thread设计与实现》一书中第3章,第3.5.1节,作者是邱祎 熊谱翔 朱天龙 。
3.5 RT-Thread内核对象模型
3.5.1 静态对象和动态对象
RT-Thread内核采用面向对象的设计思想进行设计,系统级的基础设施都是内核对象,例如线程、信号量、互斥量、定时器等。内核对象分为两类,即静态内核对象和动态内核对象,静态内核对象通常放在RW段和ZI段中,系统启动后在程序中初始化;动态内核对象则是从内存堆中创建的,而后进行手工初始化。
代码清单3-1就是一个关于静态线程和动态线程的例子。
代码清单3-1 静态对象和动态对象示例
在这个例子中,thread1是一个静态线程对象,而thread2是一个动态线程对象。thread1 对象的内存空间,包括线程控制块thread1与栈空间thread1_stack,都是编译时决定的,因为代码中都不存在初始值,统一放在未初始化数据段中。thread2运行中用到的空间都是动态分配的,包括线程控制块(thread2_ptr指向的内容)和栈空间。
静态对象会占用RAM空间,不依赖于内存堆管理器,内存分配时间确定。动态对象则依赖于内存堆管理器,运行时申请RAM空间,当对象被删除后,占用的RAM空间被释放。这两种方式各有利弊,可以根据实际环境需求选择具体使用方式。
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)