最近在看RTOS的一些书籍,将以前一些没有搞清楚的概念做一个笔记:
1、前后台系统概念:后台是一个死循环,按照顺序执行程序,前台是中断。
2、临界段:代码的临界段也被称为临界区,指处理时不可分割的代码,一旦这部分代码执行,则不允许任何中断打断,在进入临界段之前要
关中断,在临界段代码执行完后要立即开中断,比如在执行IIC时序的温湿度读取时就需要进行临界段代码的保护。
3、可以被一个以上任务使用的资源叫做共享资源,为了防止数据被破坏,每个任务在与共享资源打交道时,必须独占该资源,这叫做互斥。
4、多任务运行很像前后台系统,只是后台系统有多个。
5、一个任务称为一个线程,该程序可以认为CPU完全只属于自己。
6、何时高优先级任务掌握CPU的使用权,由使用的内核的类型确定,基于优先级的内核有2种类型:不可剥夺型和可剥夺型。
不可剥夺型内核要求每个任务主动放弃CPU的使用权,不可剥夺型调度法也称作合作型多任务,各任务彼此合作共享一个CPU,异步事件
还是由中断服务程序来处理,中断服务程序可以使一个高优先级任务由挂起态变为就绪态,但中断服务以后,使用权还是回到被中断了的
那个任务,直到该任务主动放弃CPU的使用权,高优先级的任务才能获得CPU使用权。
可剥夺型则是中断服务程序执行后高优先级任务立即获得CPU使用权。很少有不可剥夺型内核
7、使用可剥夺型内核时,应用程序不应直接使用不可重入函数,调用不可重入函数时,应满足互斥条件,可使用互斥型信号量来实现。
8、可重入函数可以被任何任务调用,而不必担心数据被破坏,可重入函数或者只使用局部变量,或者使用全局变量,但要对全局变量
予以保护。
9、任务切换时通过调用延时函数来释放CPU使用权。
10、使用以下技术,可使函数具有可重入性:
(1)把变量定义为局部变量
(2)调用该函数之前关闭中断,调用后再开中断。
(3)用互斥型信号量。
11、当有两个或两个以上任务有同样的优先级时,内核允许一个任务运行事先确定的一段时间,然后切换为另外一个任务,这个过程称为时间片调度。
内核在满足以下条件时,把CPU使用权交给下一个就绪态的任务:
1、当前任务已空闲 2、当前任务在时间片还没结束已经完成了 3、时间片结束
目前uc/os不支持时间片调度,所有任务优先级必须不同。
12、作为系统设计的一条原则,所有任务的总CPU的利用率应小于60%-70%。
13、信号量最好的比喻是打印机,任何时候只能处理一个任务的打印,其他任务需先挂起。
先写到这里,后期根据看书进度再进行添加。