- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
PAGE18
PAGE17
第3章RT-Thread线程管理
3.1线程管理的功能特点
生活中复杂任务分解为简单小问题解决,多线程系统类似,开发者将程序拆分为可调度单元,合理划分实现实时性能和时间要求。
以嵌入式系统为例,假设需要采集传感器数据并实时显示在屏幕上。在多线程实时系统中,可以将这个任务合理地分解为两个子任务(如图3-1所示)。
第一个子任务负责持续不断地读取传感器数据,并将其写入共享内存中;而第二个子任务则周期性地从共享内存中读取这些数据,并将其显示在屏幕上。通过这种方式,两个子任务协同工作,共同完成了整个复杂任务。
图3-1传感器数据接收任务与显示任务的切换执行
在RT-Thread操作系统中,子任务对应的程序实体是线程。
线程作为实现任务的载体,是RT-Thread中最基本的调度单位。它定义了任务执行的运行环境和优先等级。
对于重要的任务,可以为其设置较高的优先级;而对于不那么重要的任务,则可以设置较低的优先级。不同的任务也可以被设定为相同的优先级,此时它们将轮替运行。
当线程在运行时,它会认为自己独占CPU。线程的运行环境称之为“上下文”,它包含了各类变量和数据,如寄存器变量、堆栈以及内存信息等。
RT-Thread的线程管理主要涵盖了对线程的管理和调度。
在系统中,存在两类线程:系统线程和用户线程。
系统线程是由RT-Thread内核创建的,而用户线程则是由应用程序创建的。
每个线程都具备一些重要的属性,包括线程控制块、线程栈以及入口函数等。
图3-2对象容器与线程对象
RT-Thread线程调度器采用抢占式策略,从就绪列表选最高优先级线程,确保其获得CPU使用权。优先级更高线程满足条件时,当前线程被剥夺CPU,立即切换。
中断服务若激活高优先级线程,中断后高优先级先运行。调度器切换线程时保存并恢复上下文,保证线程正确运行,满足实时性能和资源管理需求。
3.2线程的工作机制
RT-Thread的线程机制通过线程控制块(TCB,ThreadControlBlock)来管理线程的状态、优先级、堆栈等关键属性。
每个线程都拥有独立的堆栈空间和上下文环境。
调度器会根据线程的优先级,选择最合适的线程来执行,并实现线程切换和上下文切换。
线程可以处于就绪、运行、挂起、等待等多种状态,并且可以通过系统调用进行线程的创建、删除、延时以及通信等操作。
3.2.1 线程控制块
在RT-Thread操作系统中,线程控制块由结构体structrt_thread来表示。
这是一个专门用于操作系统管理线程的数据结构,它存储了线程的各种信息,如优先级、线程名称、线程状态等。
其详细定义如下:
/*线程控制块*/
structrt_thread
{
/*rt对象*/
charname[RT_NAME_MAX];/*线程名称*/
rt_uint8_ttype;/*对象类型*
rt_uint8_tflags;/*标志位*/
rt_list_tlist;/*对象列表*/
rt_list_ttlist;/*线程列表*/
/*栈指针与入口指针*/
void*sp;/*栈指针*/
void*entry;/*入口函数指针*/
void*parameter;/*参数*/
void*stack_addr;/*栈地址指针*/
rt_uint32_tstack_size;/*栈大小*/
/*错误代码*/
rt_err_terror;/*线程错误代码*/
rt_uint8_tstat;/*线程状态*/
/*优先级*/
rt_uint8_tcurrent_priority;/*当前优先级*/
rt_uint8_tinit_priority;/*初始优先级*/
rt_uint32_tnumber_mask;
rt_ubase_tinit_tick;/*线程初始化计数值*/
rt_ubase_tremaining_tick;/*线程剩余计数值*/
structrt_timerthread_timer;/*内置线程定时器*/
void(*cleanup)(structrt_thread*tid);/*线程退出清除函数*/
rt_uint32_tuser_data;/*用户数据*/
};
init_priority为线程创建时的固定优先级,用户可手动调整。cleanup在线程退出时
您可能关注的文档
- 《人工智能技术及应用(第2版)》教案:7.6 AI+农业.docx
- 《人工智能技术及应用(第2版)》教案:7.7 AI+教育.docx
- CAD机械制图课件:“缸体”三维转二维图形.pptx
- CAD机械制图课件:二维绘制“吊钩”.pptx
- CAD机械制图课件:绘制“篮球场”.pptx
- CAD机械制图课件:绘制“如意结”.pptx
- CAD机械制图课件:绘制“组合体三视图”.pptx
- CAD机械制图课件:平面图形的尺寸标注.pptx
- CAD机械制图课件:中望3D绘制“缸体”.pptx
- UG NX数字化建模与工程图绘制课件:手轮组件子装配.pptx
- 嵌入式实时操作系统RT-Thread原理与应用第4章 RT-Thread时钟管理.doc
- 嵌入式实时操作系统RT-Thread原理与应用第5章 RT-Thread线程间同步.doc
- 嵌入式实时操作系统RT-Thread原理与应用第6章 RT-Thread 线程间通信.doc
- 嵌入式实时操作系统RT-Thread原理与应用第7章 RT-Thread内存管理.doc
- 嵌入式实时操作系统RT-Thread原理与应用第8章 RT-Thread中断管理.doc
- 嵌入式实时操作系统RT-Thread原理与应用第9章 RT-Thread内核移植.doc
- 嵌入式实时操作系统RT-Thread原理与应用第10章 FinSH控制台.doc
- 嵌入式实时操作系统RT-Thread原理与应用第11章 RT-Thread IO设备和软件包.doc
- 嵌入式实时操作系统RT-Thread原理与应用第12章 UART串口.doc
- 嵌入式实时操作系统RT-Thread原理与应用第13章 虚拟文件系统.doc
最近下载
- 一种酿酒酵母培养物及其应用.pdf VIP
- 消防增压稳压设备的维护保养保养内容和方法.docx VIP
- 乡村振兴与乡村教育事业.pptx VIP
- 标准图集-20S515-钢筋混凝土及砖砌排水检查井.pdf VIP
- 文书工作与档案管理教学课件作者第三版赵映诚12第十二章专门档案的管理与利用(3333KB).ppt VIP
- 矿用自救器的使用方法.ppt VIP
- NC6相对NC5给客户带来的新价值.pptx VIP
- 公司廉政风险防控手册模板.pdf VIP
- 2025届高中英语外研版高考复习课件:The world of science.ppt VIP
- 自觉遵守课堂纪律 班会课件(共23张PPT).pptx VIP
文档评论(0)