社区导航

 

搜索
查看: 549|回复: 0

[原创] 【RT-Thread读书笔记】RT-Thread 学习9-12章读后感

[复制链接]

67

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2019-5-10 21:14 | 显示全部楼层 |阅读模式
第九章
1、当线程需要延时,进入阻塞状态,那 CPU 又去干什么事情了?如果没有其它线程可以运行,RTOS 都会为 CPU 创建一个空闲线程,这个时候 CPU 就运行空闲线程。在RT-Thread 中,空闲线程是系统在初始化的时候创建的优先级最低的线程,空闲线程主体主要是做一些系统内存的清理工作。
问题1、CPU不是一遍遍的循环各个线程么?为什么要空闲?
2、定义空闲线程函数
1.png
第十章
1、线程就绪优先级组的每一个位对应一个优先级,位 0 对应优先级 0,位 1 对应优
先级 1,以此类推。
2、线程优先级表的链表挂载情况
2.png



此内容由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,具体的实验波形图看本章最后的实验现象即可。

来源:EEWorld 其他嵌入式操作系统板块,转载请附上链接


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 /5 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-9-22 14:32 , Processed in 0.077597 second(s), 16 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表