3309|3

336

帖子

2

TA的资源

纯净的硅(初级)

楼主
 

【RT-Thread读书笔记】第一部分 内核简单原理 [复制链接]

 
RT-Thread读书笔记
第一部分
RT-Thread作为国产的物联网系统,改变了国人没有一款适合自己的国产物联网操作系统的现状。经过十几年的完善,我们才能看到这样一版强大的操作系统,才有我们目前读这本书的必要。
本人虽然常年从事嵌入式系统的研发工作,但是一直没想过一个真正的操作系统是如何诞生的,也没有想过如果让我去写一个操作系统我要怎么做;看了《RT-Thread内核实现与应用开发实战指南》,终于了解了RT-Thread到底是如何从无到有,如何完成任务调度,如何完成任务创建等一些列问题,对于深入理解操作系统,更好的使用操作系统无疑有着深刻的帮助。
1.   构建基本系统
操作系统的出现是为了改变轮巡式和前后台式程序结构,更加充分利用CPU的计算和执行能力而来了,根据书中的介绍,让我知道了多任务操作系统和原有程序执行方式的差别。
一个可以运行的基本系统我觉得应该包口,线程的创建,链表,堆栈管理,可运作的调度器。
这里我有几个问题提出,不知道原理:
1)   任务切换的基本方式是在中断中,将就绪的高优先级任务堆栈恢复到系统寄存器中,并让其运行的过程,那么哪些寄存器是应该在上下文切换过程中保存起来的,和需要恢复的;
2)   中断时候,不论是什么单片机都回保护现场,将一部分寄存器压入堆栈,如何确定哪些是自动压入堆栈的,哪些是需要我们后来手动压入堆栈的;
通过前9章的学习,我深刻的感悟到了对于一个操作系统,哪怕是最小的操作系统,都有些非常关键的地方:
1)   如何管理就绪任务列表,rtt是通过链表来完成的,也就是说,链表管理是rtt任务调度的一个重要组成部分,也是不同操作系统管理的不同地方;
2)   任务或线程切换的方式,rtt中是在PendSV_Handler异常中断中完成;
3)   任务切换的真谛就是保存正在运行的任务相关寄存器到任务堆栈中,切换高优先级就绪任务的堆栈内容进入寄存器中,并恢复系统运行;
4)   临界代码保护。进入临界段前通过关闭中断的方式来帮助保证临界代码的可靠性,退出临界代码时候恢复中断不是随意的,不能直接打开中断,应该根据进入临界代码前系统中断状态来决定,以防导致错误的打开中断使临界代码不能得到可靠的保证;
5)   通过SysTick定时中断完成系统定时,使线程阻塞延时得以实现。
2.   多任务的支持
与之前的多任务不同,现在的多任务开始支持优先级了,采用的方式为线程就绪优先级组和线程优先级表。这两个概念在我的理解中应该是:
1)   优先级组用来告诉系统哪些任务处于READY状态,并且可以按照一定的顺序给各个正在执行的线程状态排队;
2)   优先级表和优先级组配合,获取各个正在执行的线程的具体信息。
书中同时讲到了为了适合优先级机制对于软件的调整。
3.   定时器的实现
定时器是非常重要的内容,而多任务系统的定时器可以说是一个更加重要的存在。所有线程级别延时都离不开它。
书中将原有延时的处理方式做了调整,推广到了更加广泛的方式下实现定时器。那就是:采用全局的系统定时器列表,当线程延时时,把延时线程挂起,并将线程内定时器挂在系统定时器维护的双向链表内,并按照延时时间从小到大排序,通过SystemTick中对于链表中所有定时器的扫描,判断延时时间到达的线程定时器,并执行定时器的回调函数,将对应的线程添加到任务就绪表中,完成延时到唤醒的过程。
书中提到了具体的程序改动方法。
4.   时间片轮转
以前在使用RTOS时候经常听到这个名词,但是都不是深刻的了解时间片到底是如何轮转的,通过阅读第12章《支持时间片》后,我终于明白RTT是如何实现时间片轮转的。
这里面有几个地方我觉得是关键的:
1)   赋予线程时间片时间的概念;
2)   在时基更新函数中,利用双向就绪线程链表剔出时间片耗尽的线程,将其添加到本优先级链表尾部,同时将本优先级下一个线程添加到就绪列表中;
3)   对于没有时间片轮转的人物,执行的时间片时间不确定。



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

最新回复

厉害  详情 回复 发表于 2019-5-21 17:52
点赞 关注(1)
 

回复
举报

1

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
挺好的帖子
 
 
 

回复

173

帖子

0

TA的资源

宇宙尘埃

板凳
 
谢谢分享!
 
个人签名服务器大全
 
 

回复

103

帖子

0

TA的资源

一粒金砂(中级)

4
 
厉害
 
个人签名坚持自己的坚持,终究会有拨开云雾的一天
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
有奖直播:当AI遇见仿真,会有什么样的电子行业革新之路?
首场直播:Simcenter AI 赋能电子行业研发创新
直播时间:04月15日14:00-14:50

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 11

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表