社区导航

 

搜索
查看: 2741|回复: 13

[原创] 【RT-Thread读书笔记】7-10章读书笔记

[复制链接]

118

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2019-5-11 19:47 | 显示全部楼层 |阅读模式
   前面第6章实现的线程的定义与线程切换的实现没有支持多优先级,只支持两个线程的互相切换,下面给大家介绍实现线程优先级的功能,在RT-Thread中,数字优先级越小,逻辑优先级越高。RT-Thread是一个根据优先级来调度的抢占式实时操作系统,即每个系统周期到来时,调度器都会扫面就绪列表,选取优先级最高的线程去执行。
   在介绍实现优先级之前,先给大家介绍几个概念,第一个是临界段的保护,临界段用一句话概括就是一段在执行的时候不能被中断的代码段。在RT-Thread里面,这个临界段最常出现的就是对全局变量的操作,全局变量就好像是一个枪靶子,谁都可以对他开枪,但是我开枪的时候,你就不能开枪,否则就不知道是谁中了靶子,为了保护临界段,我们要实现关中断函数,开中断函数。如临界段代码的应用在进入临界段之前,我们会把中断关闭,退出临界段时再把中断打开。第二个是对象容器的实现。在RT-Thread中,所有的数据结构都称为对象。如:线程,信号量、互斥量、事件、邮箱、消息队列、内存堆、内存池、设备和定时器等。在RT-Thread中,为了方便管理这些对象,专门定义了一个对象类型数据结构,代表了数据类型。在RT-Thread中,每个对象都会有对应的一个结构体,这个结构体叫做该对象的控制块。如线程会有一个线程控制块。在控制块的开头放置的是对象结构体的成员,具体的见书里面。什么是容器,在RT-Thread中,每当用户创建一个对象,如线程,就会将这个对象放在一个叫做容器的地方,这样做的目的是为了方便管理,通过扫描容器的内核对象来获取各个内核对象的状态,然后输出调试信息。容器的接口实现方式:容器在定义的时候,大小被固定了,但容器里面的成员是否初始化就不一定了,从容器里获取指定类型的对象函数会遍历整个容器对象,如果对象的类型等于我们指定的类型,那么就返回该容器成员的地址。每创建一个对象,都需要先将其初始化,主要分成两个部分的工作,首先将对象控制块里面与对象相关的成员初始化,然后将该对象插入到对象容器中,对象初始化函数在线程初始化函数里面被调用。第三个比较重要的概念是空闲线程与阻塞延时的实现。当线程需要延时,进入阻塞状态,需要cpu执行空闲线程。
   如在下一个系统周期来临时,调度器需要选取优先级最高的线程去执行,在程序里我们用一个32位的数表示线程的优先级。我们规定在这个32位的数中,位数越低,优先级越高,如第一个置1的位是位1,即表示此时就绪的线程当中,优先级最高的是线程1,然后调度器从线程优先级表的索引1下取出线程的线程控制块,从而切换到线程1。但是,单片机没有眼睛,并不能跟人一样一眼就从线程就绪优先级组中看到那个第一个置1的位,怎么办?专门写了一个函数,通过查表的方法获得最高优先级的线程。我们通过线程优先级组获得最高的优先级线程。然后根据线程优先级表即就绪列表,我们可以理解为就绪列表就是线程优先级表。线程优先级表是全局数组。线程优先级的数据类型是rt_list,每个索引号对应线程的优先级,该索引下维护着一条双向链表,当线程就绪时,线程就会根据优先级插入到对应索引的链表,同一个优先级的线程都会被插入到同一条链表中。最后我们将线程插入到线程优先级表和移除分别用rt_schedule_insert_thread()和rt_schedule_remove_thread()这两个函数实现。通过就绪优先级组和线程优先级表就可以实现多优先级的线程了。然后根据优先级来决定第一个运行的线程。而系统调度函数也通过线程的优先级进行切换。根据优先级切换的原理如下:首先获取就绪的最高优先级,然后获取就绪的最高优先级对应的线程控制块,如果目标线程不是当前线程就要进行线程切换。修改阻塞延时函数rt_thread_delay()的实现原理:将线程的状态改为挂起,接下来将进入延时,暂时放弃CPU的使用权。然后根据优先级将线程就绪优先级组中对应的位清零。还有一些函数才能最终实现线程的优先级,今天实在太饿了,没有精力完成了。


此内容由EEWORLD论坛网友沈婷婷原创,如需转载或用于商业用途需征得作者同意并注明出处

评分

3

查看全部评分

坚持自己的坚持,终究会有拨开云雾的一天

回复

使用道具 举报

3

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2019-5-11 22:09 | 显示全部楼层
值得好好学习

点评

是啊!书中讲的挺好!  详情 回复 发表于 2019-5-13 09:01

回复

使用道具 举报

118

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2019-5-13 09:01 | 显示全部楼层

是啊!书中讲的挺好!
坚持自己的坚持,终究会有拨开云雾的一天

回复

使用道具 举报

88

TA的帖子

1

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2019-6-21 16:21 | 显示全部楼层

支持楼主,支持RT-Thread

点评

谢谢你的认可啊!  详情 回复 发表于 2019-7-9 10:45

回复

使用道具 举报

302

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2019-6-24 13:23 | 显示全部楼层

感谢分享,支持一下,学习了。还有楼主看看你的资料字体不一致你看看,看着别扭

点评

不太熟悉,什么样的字体好看啊?  详情 回复 发表于 2019-7-9 10:45

回复

使用道具 举报

118

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2019-7-9 10:45 | 显示全部楼层
generalcircuits 发表于 2019-6-24 13:23 感谢分享,支持一下,学习了。还有楼主看看你的资料字体不一致你看看,看着别扭

不太熟悉,什么样的字体好看啊?

点评

哈,我是说你的这篇资料,一段话有两种不同的字体  详情 回复 发表于 2019-7-9 11:00
坚持自己的坚持,终究会有拨开云雾的一天

回复

使用道具 举报

118

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2019-7-9 10:45 | 显示全部楼层
Fillmore 发表于 2019-6-21 16:21 支持楼主,支持RT-Thread

谢谢你的认可啊!

坚持自己的坚持,终究会有拨开云雾的一天

回复

使用道具 举报

302

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2019-7-9 11:00 | 显示全部楼层
沈婷婷 发表于 2019-7-9 10:45 不太熟悉,什么样的字体好看啊?

哈,我是说你的这篇资料,一段话有两种不同的字体

点评

好像字体大小不一样。不是一气呵成写成的笔记,对不起啊!  详情 回复 发表于 2019-7-9 11:30

回复

使用道具 举报

118

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2019-7-9 11:30 | 显示全部楼层
generalcircuits 发表于 2019-7-9 11:00 哈,我是说你的这篇资料,一段话有两种不同的字体

好像字体大小不一样。不是一气呵成写成的笔记,对不起啊!

点评

没事没事,我只是提醒你一下,没别的意思  详情 回复 发表于 2019-7-9 14:11
坚持自己的坚持,终究会有拨开云雾的一天

回复

使用道具 举报

302

TA的帖子

0

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2019-7-9 14:11 | 显示全部楼层
沈婷婷 发表于 2019-7-9 11:30 好像字体大小不一样。不是一气呵成写成的笔记,对不起啊!

没事没事,我只是提醒你一下,没别的意思

点评

谢谢提醒呢  详情 回复 发表于 2019-9-23 09:17

回复

使用道具 举报

118

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2019-9-23 09:17 | 显示全部楼层
generalcircuits 发表于 2019-7-9 14:11 没事没事,我只是提醒你一下,没别的意思

谢谢提醒呢

坚持自己的坚持,终究会有拨开云雾的一天

回复

使用道具 举报

103

TA的帖子

1

TA的资源

禁止发言

发表于 2019-10-15 17:51 | 显示全部楼层

感谢分享

stm32f103资料

硬氪网


回复

使用道具 举报

175

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2019-10-16 09:11 | 显示全部楼层

mark

                     

 

点评

啥意思  详情 回复 发表于 2019-12-3 16:04

回复

使用道具 举报

118

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2019-12-3 16:04 | 显示全部楼层
SensorYoung 发表于 2019-10-16 09:11 mark                        

啥意思

坚持自己的坚持,终究会有拨开云雾的一天

回复

使用道具 举报

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

关闭

站长推荐上一条 1/8 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

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

GMT+8, 2020-5-25 22:21 , Processed in 0.412637 second(s), 33 queries , Gzip On, MemCache On.

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