嵌入式软件架构六

前言从裸机编码分析其处理问题的局限以及不足,引入了RTOS,本节主要说明RTOS任务是如何管理调度的。
韦东山老师视频学习链接

嵌入式软件架构一
嵌入式软件架构二
嵌入式软件架构三
嵌入式软件架构四
嵌入式软件架构五
RT-Thread线程管理的主要功能是对线程进行管理和调度,系统中总共存在两类线程,分别是系统线程和用户线程,系统线程是由RTT内核创建的线程,用户线程是由应用程序创建的线程,这两类线程都会从内核对象容器中分配线程对象,当线程被删除时,也会从对象容器中删除,而每个线程都有重要的属性,线程控制块线程栈、入口函数等。

  • 线程控制块由结构体 struct rt_thread 表示,线程控制块是操作系统用于管理线程的一个数据结构,它会存放线程的一些信息,例如优先级、线程名称、线程状态等,也包含线程与线程之间连接用的链表结构,线程等待事件集合等,详细定义如下:
/* 线 程 控 制 块 */
struct rt_thread
{
/* rt 对 象 */
char name[RT_NAME_MAX]; /* 线 程 名 称 */
rt_uint8_t type; 		/* 对 象 类 型 */
rt_uint8_t flags; 		/* 标 志 位 */
rt_list_t list; 		/* 对 象 列 表 */
rt_list_t tlist; 		/* 线 程 列 表 */

/* 栈 指 针 与 入 口 指 针 */
void *sp; 				/* 栈 指 针 */
void *entry; 			/* 入 口 函 数 指 针 */
void *parameter; 		/* 参 数 */
void *stack_addr; 		/* 栈 地 址 指 针 */
rt_uint32_t stack_size; /* 栈 大 小 */

/* 错 误 代 码 */
rt_err_t error; 		/* 线 程 错 误 代 码 */
rt_uint8_t stat; 		/* 线 程 状 态 */

/* 优 先 级 */
rt_uint8_t current_priority; /* 当 前 优 先 级 */
rt_uint8_t init_priority; 	/* 初 始 优 先 级 */
rt_uint32_t number_mask;
......
rt_ubase_t init_tick; 		/* 线 程 初 始 化 计 数 值 */
rt_ubase_t remaining_tick; 		/* 线 程 剩 余 计 数 值 */
struct rt_timer thread_timer; /* 内 置 线 程 定 时 器 */
void (*cleanup)(struct rt_thread *tid); /* 线 程 退 出 清 除 函 数 */
rt_uint32_t user_data; /* 用 户 数 据 */
};
  • 线程栈:RTT线程具有独立的栈,当进行线程切换时,会将当前线程的上下文存在栈中,当线程要恢复运行时,再从栈中读取上下文信息,进行恢复。
  • 线程控制块中的 entry 是线程的入口函数,它是线程实现预期功能的函数。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

HeartRain_大西瓜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值