博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uC/OS-II源码分析(三)
阅读量:6899 次
发布时间:2019-06-27

本文共 775 字,大约阅读时间需要 2 分钟。

首先来了解下实时系统的基本概念:

1) 临界区,共享资源,任务(类似于进程),任务切换,任务调度,可剥夺型内核,可重入函数,动态优先级调度,

2) 如何处理优先级反转问题。这个问题描述如下:有三个任务,优先级1高于2,2高于3,一开始1和2处于挂起,3在运行,3要使用某个共享资源,就P它的互斥信号量,3得到信号量后开始使用这个共享资源。过一段时间后,1等待的事件发生后剥夺了3的CPU使用权,于是1开始运行。运行时,1也要用3占到的那个资源,所以1只好进入挂起状态,等待3释放这个资源。于是这时3准备继续运行,但这时2等待的事件也发生了,所以2抢占了3的CPU使用权,等2运行完后把CPU还给3,3继续运行,直到释放资源的信号量。这时1才能得以运行。这个过程中,1的优先级实际上降到了3的水平。

处理的方法描述如下:在1第一次抢占3的CPU时,1去申请资源信号量,但内核知道这个信号量被3占了,而3的优先级比1低,于是内核把3的优先级升至与1相同。内核将1放入等待资源信号量的任务列表,然后回到3继续运行。等3完成后释放资源信号量,这时内核恢复任务3本来的优先级,并查看等待该资源信号量的任务列表里有谁在等待这个信号量,这时有1,所以把信号量交给1,于是1得以运行。等1运行完后,2才能开始运行。但uC/OS-II不支持优先级继承,这个功能是可以使内核自动变换任务的优先级。

3) 处理互斥:开关中断(uC/OS-II中用OS_ENTER_CRITICAL和OS_EXTI_CRITICAL来实现),测试并置位,禁止/运行任务切换,互斥信号量,计数型信号量,

4) 同步:信号量,事件标志(任务与多个事件同步,若任务需要与任何事件之一发生同步,叫独立型同步,若任务与若干事件都发生同步,叫关联型同步)。

5) 任务间通信:消息邮箱,消息队列,中断,

转载地址:http://mvcdl.baihongyu.com/

你可能感兴趣的文章
一个提供jsp免费空间的站点
查看>>
2014Esri全球用户大会之标准和互操作
查看>>
[歪谈]“走形式”的会议要不要滚粗
查看>>
wordpress表结构
查看>>
关于删除 hao123 主页设置的一点经验
查看>>
快速排序
查看>>
浅析Java虚拟机结构与机制[转]
查看>>
具体解释Android中AsyncTask的使用
查看>>
谷歌“信息安全公主”:我是一名好黑客
查看>>
Web Service学习笔记
查看>>
windows无法搜索新更新 80072ee2
查看>>
win7 32/64bit VS2010 OpenCV 2.4.9 环境配置
查看>>
tomcat配置虚拟主机
查看>>
【百度地图API】百度API卫星图使用方法和卫星图对比工具
查看>>
XCode中使用SVN 教程
查看>>
Guice--Java依赖注入框架
查看>>
第二、UIScrollView的使用大全
查看>>
Ehcache(03)——Ehcache中储存缓存的方式
查看>>
基于海康监控的图像识别设计
查看>>
Senparc.Weixin.MP SDK 微信公众平台开发教程(十五):消息加密
查看>>