【RT-Thread读书笔记】RT-Thread 学习9-12章读后感
[复制链接]
第九章 1、当线程需要延时,进入阻塞状态,那 CPU 又去干什么事情了?如果没有其它线程可以运行,RTOS 都会为 CPU 创建一个空闲线程,这个时候 CPU 就运行空闲线程。在RT-Thread 中,空闲线程是系统在初始化的时候创建的优先级最低的线程,空闲线程主体主要是做一些系统内存的清理工作。 问题1、CPU不是一遍遍的循环各个线程么?为什么要空闲? 2、定义空闲线程函数 第十章 1、线程就绪优先级组的每一个位对应一个优先级,位 0 对应优先级 0,位 1 对应优 先级 1,以此类推。 2、线程优先级表的链表挂载情况
此内容由EEWORLD论坛网友天命风流原创,如需转载或用于商业用途需征得作者同意并注明出处
3、线程优先级表的数据类型为 rt_list,每个索引号对应线程的优先级,该索引下维护着一条双向链表,当线程就绪时,线程就会根据优先级插入到对应索引的链表,同一个优先级的线程都会被插入到同一条链表中。 第十一章 1、每个线程都内置一个定时器,当线程需要延时的时候,则先将线程挂起,然后内置的定时器就会启动,并且将定时器插入到一个全局的系统定时器列表rt_timer_list,这个全局的系统定时器列表维护着一条双向链表,每个节点代表了正在延时的线程的定时器,节点按照延时时间大小做升序排列。 2、初始化:rt_system_timer_init() 停止:rt_timer_stop(rt_timer_t timer) 控制函数:rt_timer_control(rt_timer_t timer, int cmd, void *arg) 扫描:rt_timer_check(void) 第十二章 1、当同一个优先级下有两个以上线程的时候,线程支持时间片功能,即我们可以指定线程持续运行一次的时间,单位为 tick。假如有两个线程分别为线程 2 和线程 3,他们的优先级都为 3,线程 2 的时间片为 2,线程 3 的时间片为 3。当执行到优先级为 3的线程时,会先执行线程 2,直到线程 2的时间片耗完,然后再执行线程 3,具体的实验波形图看本章最后的实验现象即可。
|