VxWorks多任务功能

http://blog.chinaunix.net/uid-23741326-id-84935.html

VxWorks的任务有优先级的概念,其任务调度也是基于优先级考虑的,是抢占式的,VxWorks的任务有256个等级,0—255,数目越小表示优先级越高。高优先级的任务可以打断低优先级的任务而抢先执行,只有在高优先级的任务执行完后,低优先级的任务才可以执行。其调度算法有两种:完全抢占式的和循环分配式的。完全抢占式的是除了高优先级任务可以打断低优先级任务外,在相同优先级的任务之间,不可以相互打断,并且同优先级任务不是同时执行的,只有等该任务执行完后,与其相同优先级的任务才可以执行;循环分配式除了具有抢占功能之外,相同优先级的任务是可以同时执行的,即系统时间片是在它们之间平均分配的,这样,相同优先级的任务可以同时执行。可以调用kernelTimeSlice()函数来设定该调度方式,并且参数是相同优先级任务执行的时间片。

VxWorks中任务具有很多种状态,如下表所示:


状态


描述


READY


此任务状态在等待执行


PEND


此任务状态是由于一些资源不可用而被阻塞


DELAY


此任务状态是休眠一段时间


SUSPEND


此任务状态是挂起


BREAK


此任务状态是停止(暂停),通常是在任务中设置了断点。


各种状态的组合


详细请见原文档

为了防止任务被误删除,VxWorks还提供了taskSafe()函数和taskUnsafe()函数,调用taskSafe()的任务不能被删除,应用在其它地方调用taskDelete()函数时会出错。只有该任务在调用了taskUnsafe()后,任务才能被删除。另外,VxWorks还可以对任务的优先级动态的修改,即可以在执行过程中,调用taskPrioritySet()函数对任务的优先级进行修改。对于任务的创建,VxWorks还提供了不同的方法,用户可以调用taskSpawn()函数在创建完任务后立即执行它,或者调用taskCreate()taskActivate()函数把创建任务和执行任务分成两步来实行,即在调用taskCreate()后,任务只是被创建而没有执行,所以用户可以在需要的时候调用taskActivate()来恢复任务的执行。下面是VxWorks任务相关函数一览表:


函数名


功能


kernelTimeSlice( )


控制轮询式调度程序


taskLock( )


取消任务的再调度


taskUnlock( )


允许任务的再调度


taskSpawn( )


生成(创建和激活)一个新任务


taskCreate( )


创建一个新任务,但不激活它。


taskActivate( )


激活一个已经创建的任务


taskSuspend( )


挂起一个任务


taskResume( )


恢复挂起任务的执行


taskRestart( )


重新开始一个任务的执行(即从头执行)


taskDelay( )


延时任务,延时单位是时间片


taskIdSelf( )


得到调用任务的id(正在运行的)


taskIdVerify( )


验证一个指定任务是否存在


taskOptionsGet( )


获得用户自定义任务参数


taskOptionsSet( )


设置用户自定义任务参数


taskIdListGet( )


将所有活动状态的任务id填写到个数组中


taskInfoGet( )


得到一个任务的信息


taskPriorityGet( )


获得任务的优先级


taskPrioritySet( )


改变任务优先级


taskRegsSet( )


设置一个任务的寄存器(但是不能被当前任务使用)


taskIsSuspended( )


检查一个任务是否在悬挂状态(suspended.)


taskIsReady( )


检查一个任务是否准备运行就绪


exit( )


结束正在运行任务,释放内存*


taskDelete( )


结束制定的任务,释放内存*


taskSafe()


保护当前任务,防止被删除


taskUnsafe( )


取消taskSafe( )操作,即能够删除当前任务


nanosleep( )


延时任务,延时单位是时间片

时间片



对于任务来讲,只有相同优先级任务下的循环分配式才存在时间片的概念:时间片就是系统分配给各任务的时间,如果该时间内某任务未完成,CPU将被剥夺并分配给另外一个任务。

时间: 2024-08-06 04:49:18

VxWorks多任务功能的相关文章

这可不是后台刷新,“OS Experience”为iOS设备带来真正多任务处理功能

想在iPad上试试真正的多任务功能吗?最近,Cydia上出现了一个叫做"OS Experience"的应用,可以让你在iPad上体验像Mac系统中一样的多任务处理.不过,这需要你先为自己的设备越狱,并且支付9.99美元. 安装"OS Experience"后,你就能够同时在屏幕上运行多个程序.如果你将应用拖到屏幕边上,它就会像在Windows上一样自动填满半个桌面. 除此之外,"OS Experience"还支持各种方便的手势功能,比如四只手指同

《30天自制操作系统》笔记(12)——多任务入门

<30天自制操作系统>笔记(12)——多任务入门 进度回顾 上一篇介绍了设置显示器高分辨率的方法.本篇讲一下操作系统实现多任务的方法. 什么是多任务 对程序员来说,也许这是废话,不过还是说清楚比较好. 多任务就是让电脑同时运行多个程序(如一边写代码一边听音乐一边下载电影). 电脑的CPU只有固定有限的那么一个或几个,不可能真的同时运行多个程序.所以就用近似的方式,让多个程序轮换着运行.当轮换速度够快(0.01秒),给人的感觉就是"同时"运行了. 多任务之不实用版 我们首先从

iOS 9之分屏多任务(multitasking)

金田(github 示例源码) 多任务(multitasking)算是iOS9中最引人瞩目的核心新特性了,之前越狱版用户就用过类似的插件,微软的 苏菲 (Windows Surface)系列也有分屏多任务的特性,可以让用户可以同时运行2个或者多个App.iOS 9 中的多任务目前支持三种表现形式:临时出现和交互的滑动覆盖 (Slide Over):真正的分屏同时操作两个 App 的分割视图 (Split View):以及在其他 App 中可以进行视频播放的画中画 (Picture in Pict

iOS 9 分屏多任务:入门(中文版)

http://www.cocoachina.com/ios/20150714/12555.html 本文由钢铁侠般的卿哥(微博)翻译自苹果官方文档:Adopting Multitasking Enhancements on iPad,主要讲述iOS 9中iPad的多任务处理功能,欢迎指正.该文档包含:第一部分:iOS 9 分屏多任务--入门第二部分:iOS 9 分屏多任务--Slide Over & Split View快速入门第三部分:iOS 9 分屏多任务--画中画(PiP)快速入门 重要

30天自制操作系统之第15天 多任务(1)

多任务的本质是利用定时器和far跳转在任务之间进行切换,具体来说,一开始先运行main函数(就是处理我们的鼠标.键盘和定时器等事件),0.02s后定时器超时,执行如下语句: farjmp(0, 4 * 8); 这是一个far跳转,先看一下farjmp的实现: _farjmp: ; void farjmp(int eip, int cs) JMP FAR [ESP+4] ; eip, cs RET far-JMP指令指向的目标地址段是4*8,这是任务B的TSS所在,因此实际上是发生了任务切换,下面

iOS 9 分屏多任务(1):入门

原文出处: @钢铁侠般的卿哥   欢迎分享原创到伯乐头条 重要 这是API或开发技术的初步文档.苹果公司提供这些信息主要是为了帮助你通过苹果产品使用这些技术或者编程接口而做好计划,该信息有可能会在未来发生改变,本文当中提到的软件应该以最终发布的操作系统测试和最终文档为准.未来有可能会提供新版本的文档信息. iOS 9 中多任务处理功能,为我们提供了更多的方式来畅享iPad和App带来的乐趣. Slide Over:用户可通过该功能调出屏幕右侧的悬浮视图(在从右到左的语言环境下位于屏幕的左侧),从

BSP

1       BSP概述 BSP即Board Support Package,板级支持包.它来源于嵌入式操作系统与硬件无关的设计思想,操作系统被设计为运行在虚拟的硬件平台上.对于具体的硬件平台,与硬件相关的代码都被封装在BSP中,由BSP向上提供虚拟的硬件平台,BSP与操作系统通过定义好的接口进行交互.BSP是所有与硬件相关的代码体的集合. 一个成熟的商用操作系统,其被广泛应用的必要条件之一就是能够支持众多的硬件平台,并实现应用程序的硬件无关性.一般来说,这种无关性都是由操作系统实现的. 但对

教您选购峰华手持IC卡读写机

教您选购峰华手持IC卡读写机:F8手持IC卡读写机采用32位ARM 9 内核微处理器,具备性能高.成本低.扩展性强等特点:使用Wince操作系统,具备多任务功能,提供了先进的维护和管理功能,极大地提高了应用程序的维护和开发效率,确保应用程序的稳定性.支持读写RFID非接触式IC卡.接触式IC卡.PSAM卡等多种交易卡:支持一维条形码扫描.GPRS以及WIFI选配功能. 一查看配置: 1.处理平台 ARM9处理器.主频最高200MHZ 2.存储器 SDRAM:64MB.NandFlash:64MB

微信iOS多设备多字体适配方案总结

一.背景 2014下半年,微信iOS版先后适配iPad, iPhone6/6plus.随着这些大屏设备的登场,部分用户觉得微信的字体太小,但也有很多用户不喜欢太大的字体.为了满足不同用户的需求,我们做了全局字体设置功能,在[设置-通用-字体大小]这里修改设置后,微信大部分界面都会随之缩放. 二.多设备适配 1.各设备的逻辑分辨率: 关于iphone6/6plus的物理分辨率.逻辑分辨率.屏幕物理尺寸.PPI等资料,很多文章已经有详细说明了,这里就不再累赘.对于终端开发人员来说,其实我们需要关心的