Vxwoks系统入门知识学习(一)
来源:互联网 发布:淘宝格子铺免费推广 编辑:程序博客网 时间:2024/05/23 00:06
今天学习了一下VX系统的一些知识,把新认识的知识点记录下。
1、任务管理
任务结构、任务状态、任务调度。
1.1 任务状态:
实时系统的一个任务可有多种状态,其中最基本的状态有四种:
就绪态:任务只等待系统分配CPU资源;
悬置态:任务需等待某些不可利用的资源而被阻塞;
休眠态:如果系统不需要某一个任务工作,则这个任务处于休眠状态;
延迟态:任务被延迟时所处状态;
当系统函数对某一任务进行操作时,任务从一种状态迁移到另一状态。处于任一状态的任务都可被删除。
状态的切换如图:
涉及状态迁移的接口,如下:
状态迁移 调用
就绪态 ----> 悬置态 semTake()/msgQReceive()
就绪态 ----> 延迟态 taskDelay()
就绪态 ----> 休眠态 taskSuspend()
悬置态 ----> 就绪态 semGive()/msgQSend()
悬置态 ----> 休眠态 taskSuspend()
延迟态 ----> 就绪态 expired delay
延迟态 ----> 休眠态 taskSuspend()
休眠态 ----> 就绪态 taskResume()/taskActivate()
休眠态 ----> 悬置态 taskResume()
休眠态 ----> 延迟态 taskResume()
1.2 任务调度
多任务调度须采用一种调度算法来分配CPU给就绪态任务。Wind内核采用基于优先级的抢占式调度法作为它的缺省策略,同时它也提供了轮转调度法。
基于优先级的抢占式调度,它具有很多优点。这种调度方法为每个任务指定不同的优先级。没有处于悬置或休眠态的最高优先级任务将一直运行下去。当更高优先级的任务由就绪态进入运行时,系统内核立即保存当前任务的上下文,切换到更高优先级的任务。
轮转调度法分配给处于就绪态的每个同优先级的任务一个相同的执行时间片。时间片的长度可由系统调用KernelTimeSlice()通过输入参数值来指定。很明显,每个任务都有一运行时间计数器,任务运行时每一时间滴答加1。一个任务用完时间片之后,就进行任务切换,停止执行当前运行的任务,将它放入队列尾部,对运行时间计数器置零,并开始执行就绪队列中的下一个任务。当运行任务被更高优先级的任务抢占时,此任务的运行时间计数器被保存,直到该任务下次运行时。
- Vxwoks系统入门知识学习(一)
- Laravel5学习系列(一)登录系统及入门知识
- 【iOS知识学习】_iOS入门知识学习(一)
- IOS学习(一):入门知识
- NodeMCU--学习笔记(一)入门知识
- VxWoks学习记录(2014年4月17日)
- Linux入门学习:系统简介(一)
- 推荐系统入门学习笔记(一)
- dubbo系统学习(一)-dubbo入门实例
- Linux系统入门基础学习(一)
- SLF4J学习笔记整理(一)—— 入门知识
- SQL Server2008 学习之(一) :入门知识
- 机器 学习入门 知识
- R入门知识学习
- Spark 入门知识学习
- 深度学习入门知识
- 多媒体视频知识入门一
- Shell入门知识(一)
- ZOJ 3688
- iPhone 5s指纹识别存在什么安全隐患?
- [Git]多平台协作 忽略WhiteSpace
- HDU4726Kia's Calculation 贪心
- Unity Application Block 1.0系列(2): 构造子注入(Constructor Injection)
- Vxwoks系统入门知识学习(一)
- 三星 samsung odin线刷包和卡刷包的制作方法
- 心静是一门艺术
- MFC VC 中 TreeView 全面解析
- Unity Application Block 1.0系列(3): 属性/设值方法注入(Property/Setter Injection)
- EditText中的多行输入问题
- 嵌入式C开发基础题(14)
- Unity Application Block 1.0系列(4): 方法调用注入(Method Call Injection )
- hdu 4722