VxWorks时间片轮转调度
来源:互联网 发布:js文件md5 编辑:程序博客网 时间:2024/05/21 11:02
VxWorks时间片轮转调度
任务调度是基于某种规则约束,给一个任务集合中每个任务分配开始和结束的时间。约束方式一般分为时间片约束和资源约束。在VxWorks中,系统按照时间片依次轮流执行每个任务,从而造成多个任务在单个处理器上同时执行的假象。wind内核调度默认使用的是基于优先级抢占式调度,同时也允许使用轮转调度。轮转调度的目的是使用相同优先级的所有就绪任务共享CPU。如果不使用轮转调度,当多个优先级相同的任务需要共享CPU时,其中一个任务就会霸占CPU直到该任务完成或因为其他原因进入阻塞状态,从而使得其他相同优先级的任务得不到资源无法执行。
相关控制函数:
在VxWorks中,使用kernelTimrSlice() 函数允许轮转调度,时间片的大小由该函数的参数传入,它规定每个任务一次允许占用CPU的时间。
函数原型为:STATUS kernelTimeSlice( int ticks)
ticks为任务单词执行的时间,单位为ticks。
实例:
#include "VxWorks.h"#include "taskLib.h"#include "kernelLib.h"#include "sysLib.h"#include "logLib.h"#define ITER1 100#define ITER2 10#define PRIORITY 101#define TIMESLICE sysClkRateGet()/60#define LONG_TIME (1<<25)static void taskOne(void){ int i, j; for(i=0; i<ITER1; i++) { for(j=0; j<ITER2; j++) { logMsg("/n",taskSelf(), 0, 0, 0, 0, 0); } for(j=0; j<LONG_TIME; j++); }}static void taskTwo(void){ int i, j; for(i=0; i<ITER1; i++) { for(j=0; j<ITER2; j++) { logMsg("/n",taskSelf(), 0, 0, 0, 0, 0); } for(j=0; j<LONG_TIME; j++); }}static void taskThree(void){ int i, j; for(i=0; i<ITER1; i++) { for(j=0; j<ITER2; j++) { logMsg("/n",taskSelf(), 0, 0, 0, 0, 0); } for(j=0; j<LONG_TIME; j++); }}void s5_rrsched(void){ int taskIdone; int taskIdtwo; int taskIdthree; if(OK == kernrlTimeSlice(TIMESLICE)) { logMsg("\n\n\n\n\t\tTIMESLICE = %d ticks\n\n\n",TIMESLICE, 0, 0, 0, 0, 0) } taskDelay(sysClkRateGet()*2); if(ERROR == (taskIdone = taskSpawn("task1", PRIORITY, 0X100, 2000, (FUNCPTR)taskOne(),0, 0, 0, 0, 0, 0, 0, 0, 0, 0))) { logMsg("taskSpawn taskone failed.\n"); } if(ERROR == (taskIdtwo = taskSpawn("task2", PRIORITY, 0X100, 2000, (FUNCPTR)taskOne(),0, 0, 0, 0, 0, 0, 0, 0, 0, 0))) { logMsg("taskSpawn tasktwo failed.\n"); } if(ERROR == (taskIdthree = taskSpawn("task3", PRIORITY, 0X100, 2000, (FUNCPTR)taskOne(),0, 0, 0, 0, 0, 0, 0, 0, 0, 0))) { logMsg("taskSpawn taskthree failed.\n"); }}
阅读全文
0 0
- VxWorks时间片轮转调度
- 时间片轮转调度算法
- 时间片轮转调度算法
- 时间片轮转调度算法
- 时间片轮转调度算法
- 07-时间片轮转调度
- 进程调度:时间片轮转调度算法
- 时间片轮转进程调度算法
- 进程调度-时间片轮转算法
- 进程调度—时间片轮转
- 操作系统 时间片轮转调度算法
- 优先级和时间片轮转法调度
- 进程调度算法--时间片轮转算法
- 进程调度之时间片轮转调度算法(实验三)
- 进程调度算法–时间片轮转调度算法
- 时间片轮转调度算法(C++代码)
- 操作系统课程设计(一)时间片轮转实现多线程调度
- UCOS 时间片轮转调度算法详解 (1)
- 基于优先级的抢占式调度
- Spring源码阅读之-BeanFactory(一)
- NETGEAR路由器登录不上 重新获取ip
- 大数阶乘
- HashTable详细介绍(一)
- VxWorks时间片轮转调度
- <span> 与<div>的区别
- 集合 (一个容器) 存储数据
- hdu 6053 (莫比乌斯反演+容斥)
- adb常用命令总结
- Deeply Learned Attributes for Crowded Scene Understanding(WWW dataset)
- qduoj 156 暴力过算我输 思维+单调栈
- dubbo源码深度解读二之config模块
- 914电路原理