当前位置:文档之家› uCos-II中任务调度算法的改进

uCos-II中任务调度算法的改进

uCos-II中任务调度算法的改进
uCos-II中任务调度算法的改进

μC/OS-ll中任务调度算法的改进

介绍μC/OS—II嵌入式实时操作系统的特点,分析单一的基于优先级调度算法存在的不足。根据嵌入式应用不同的实时性要求,将应用划分为实时任务、分时任务和后台任务三种类型。针对分时任务,新增加时间片调度算法,给出调度算法的实现方法,同时增加任务创建和销毁的接口;降低基于μC/OS—1I

操作系统的嵌入式产品开发难度和设计成本,有利于该操作系统的应用推广。

引言

目前,操作系统内核的软件中,μC0S-II称得上是小型实时操作系统。它由Jean J.Labrosse于1992年推出第l版,立刻在嵌入式系统领域引起强烈反响。μC/OS II是一个基于抢占式的实时多任务内核,可固化、可剪裁、具有高稳定性和可靠性。它最鲜明特点就是源码公开,便于移植和维护,而且对于学校研究完全免费,只有在应用于盈利项目时才需要支付少量的版权费,特别适合一般使用者的学习、研究和开发。自问世以来,其稳定性和可靠性得到了广泛的认可,现已经通过美国FAA认证。在嵌入式领域,μc/OS凭借优越特性得到了越来越广泛的应用,众多的研究开发者将其作为操作系统的样板,移植到各种硬件平台,其外围的应用也越来越多。

随着移动通信、信息家电以及工业控制等领域的快速发展,嵌入式软件产业迎来了极佳的发展时机。强劲的市场需求带来了研发的快速增长,越来越多的软件公司投入到嵌入式产品的研发中。但另一方面,大部分软件公司却缺乏嵌入式操作系统这个嵌入式产品的核心技术,无法提供给各种应用多任务等现代操作系统所必备的功能,极大地限制了产品的性能和发展。μC/OS具有源码公开,商业授权费极低等特点,成为嵌入式产品开发的一种选择。

一单一的基于优先级调度算法存在的不足

μC/OS—II在设计时强调实时性。它采用单一的基于优先级的抢先式调度算法,有效地保证了实时性的要求。在各种嵌入式操作系统中,其任务切换带来的时延窗口很小。非常适合强实时性的任务要求,但是对于大部分周期性和实时性要求不高的任务来说,μC/O一II还存在一些不足:

①缺乏时间片调度,低优先级的任务很难得到执行(个人觉得这就是实时系统保证实时性的固有特点,无需改进)。μC/OS—II不支持时间片调度,优先级高的任务如果不主动放弃CPU,低优先级任务永远都不可能运行。这对于那

些分别编写,但又可能同时运行的任务来说,只能通过任务之间的同步等动作来完成交替运行。这不但增加了编程难度,而且破坏了模块的独立性。

②任务创建和销毁的接口复杂。μC/OS—ll的上层软件开发需要关心底层具体实现,接口比较复杂。对于经验不多的程序员来说,

第一,创建任务时需要用户自行指定优先级。这必然牵涉到如何管理分配优先级的问题。

第二,μC/OS—II中任务的栈空间完全由用户管理,系统只是简单地要求用户创建任务时传人栈地址,而不参与栈空间的申请和释放。为了简化μC/OS 的示例程序,更是简单地以静态数组作为任务栈。栈空间的放任自流在带来一定灵活性的同时也会带来问题的隐患。

第三,因为μC/OS—II规定任务必须为无限循环或自销毁形式,所以其任务在结束时,需要手工调用OSTaskDel,使该任务进入睡眠态,不能简单地返回。与现在流行的大多数操作系统用法差异较大。

②解决方法:结合国内的产业现状,从程序员素质和应用程序的实时性分类,在数量上都呈现金字塔状;而且往往是高级程序员负责开发实时应用,普通程序员开发非实时应用。如果希望能在包括数目庞大的非实时应用的产品中利用μC/OS—II,则必须对它作出扩充。在保留实时任务支持的前提下,增添时间片调度,并对任务的接口作出简化处理。

二μC/OS调度算法的改进:

μC/OS中的每个任务具有一个任务控制块0S_TCB,任务控制块记录任务执行的环境,包括任务的优先级、任务的堆栈指针、任务的相关事件控制块指针等。内核将系统中处于就绪态的任务在就绪表中进行标注,通过就绪表中的两个变量OSRdyGrp和OSRdyTbl[]可快速查找系统中就绪的任务。在μC/OS—II 中每个任务有唯一的优先级,因此任务的优先级也是任务的唯一标识。内核可用控制块优先级表OSTCBPrioTbl[]通过任务的优先级查到任务控制块的地址。μC /OS—II主要就是利用任务控制快OS_TCB、就绪表和控制块优先级表

0STCBPrioTbl[]来进行任务调度。任务调度程序OSSched()首先由就绪表中找到当前系统中处于就绪态的优先级最高的任务,然后根据其优先级由控制块优先级表0STCBPrioTbl[]取得相应任务控制块的地址,由OS_TASK—SW()程序进行运行环境的切换。若在任务运行时发生中断,则转向执行中断程序,执行完毕后不是简单地返回中断调用处,而是由OSIntExit()程序进行任务调度,执行当前

系统中优先级最高的就绪态任务。

本文拟在不破坏μC/OS实时性的前提下,增加时间片调度,以适于非实时性场合,并参考Windows和Linux多种通用操作系统任务调用接口函数,对μC/0S任务接口作出改进,提供通用简单的编程接口,降低应用软件开发难度,

增加系统稳定性和可靠性。

2.1 时间片调度算法的设计与实现

μC/OS中共有64个任务,其中作者保留了8个任务以备将来使用,因此用户可以有多达56个应用任务。将这些任务划分为3个层次,如图l所示。

实时任务保留原本设计的绝对优先级调度,对系统驱动或通信等实时性要求高的场合提供支持,任务的创建接口保持不变,由高级程序员编写相应程序;在分时任务空间采用时间片调度,各种任务轮流执行,适用于事务性处理或实时性要求不高的场合,普通程序员在此区间内编写任务,并对此空间任务的创建和销毁提供了新的编程接口,使之适合普通程序员的编程习惯;后台任务是指idle 任务、统计任务等在系统空闲时运行的任务,其在实时任务和分时任务都没有就绪时才有机会运行,此区间也采用绝对优先级调度。

分时任务在μC/OS原先的五种状态中添加了等待态,定义为

OS_STAT_WAITSLICE,表示正在等待时间片的重新产生。增添新状态后的状

态迁移如图2所示。

其中睡眠态(dormant)异于多数操作系统的定义,是指任务驻留在程序空间之中,还没有交给μC/OS—II管理。所有任务开始于睡眠态,通过调用任务创立函数把任务交给μC/0S—II。当任务一旦建立,就进入就绪态准备运行。在任务销毁时,可以通过调用OSTaskDel()返回到睡眠态。其余阻塞态、就绪态、运行态和中断态较常见,这里不再详述,可以参考文献[1]第3章。

图2中,如果处于运行态的任务时间片消耗完毕,则该任务进入等待状态如果全部分时任务都进入等待状态,则系统会为其全部重新分配时间片,并使它们都返回就绪态。除此之外,其余状态关系与μC/0S—Il相同。

为了实现分时任务时间片调度算法,首先在OS_TCB结构中添加OSTCBTimeSlices,以存储任务剩余的时间片数;同时定义

OS-NORMAL_PRIO_START和OS_NOR-MAL_PRIO_START,表示分时任务区间的大小;还必须修改μC/0S的时钟服务程序,即函数OSTimeTick(),来处理与时钟相关的任务状态。修改后处理流程如图3所示。

图3中,模块②之前的流程与在μC/()S—II中几乎完全相同,主要负责对所有任务时延值的处理。模块②判断处于就绪态的分时任务是否时间片用完,如是,则将其设置为等待态。模块③查出就绪的最高优先级任务。如果低于分时任务区间,说明没有分时任务或所有的分时任务都处于等待态,此时为所有的分时任务重新分配新的时间片,并将其变更为就绪态。模块④中,如果当前任务是分时任务,则说明该任务已经消耗了一个时间片,将该任务时间片减1。

从改进后的处理流程可以看出,实时任务优先级高,调度不受影响,不会

进入新加入的部分;分时任务在运行态时,其时间片会不停减少,直到剩余时间

片为零,则进入等待态。当系统的所有分时任务都进入了等待态,则对在等待态的分时任务重新计算剩余时间片,并把它们都设为就绪态,则新的一轮分时任务交替运行又开始了。所有的后台任务的调度也不受影响。

OSTimeTick处理十分频繁,必须尽可能地减少运算开销,改进方案对其增加分时任务的处理。在有实时任务运行时,延时基本没有增加;只有在所有分时任务都进入等待态后,才会有较大的计算量,经试验效果良好。

2.2 任务接口的改进

为了简化应用编程接口,屏蔽低层任务管理细节,为用户提供新的任务接口OSNTaskCreate和OSNTaskDel。0SNTaskCreate用于创建分时任务,该函数在分时区间自动分配优先级,代替用户申请栈空间,并在初始化栈内容时压人OSNTaskDel地址。在用户任务退出后,就会自动调用()SNTaskDel,以释放栈空间,并调用()STaskDel。如此更符合用户在Windows等系统的情况,任务结束后只是简单返回,减小了错误出现的机会。改进后的OSNTaskCreate伪码如下:

INT8U()SNTaskCreate(任务地址pThead,参数pData,栈大小dwStackSize){在分时区间分配优先级;

if(区间已满)

设置错误码并退出;

if(dwStackSize为零)

dwStackSize为缺省大小;

分配栈空间并记人TCB;

初始化栈空间()SNewTaskStklnit();

调用0S_TCBInit初始化TCB;

if(成功)

调度0S_Sched();

设置错误码并退出;

}

优先级和栈空间分配算法较简单,这里不再详述。新的OSNewTaskStklnit 初始化栈空间函数在x86平台上修改前后形成的栈内容如图4所示。

结语

本文对μC/0S—II的调度算法作了改进,划分了实时任务、分时任务和后台任务;并对任务的用户接口进行了改善,使之更加方便易用。以上方法已成功应用在好易通系列电子产品的开发中,对μC/OS—II在嵌入式产品应用和推广中具有广泛意义。

随机进程调度算法

《操作系统原理》实验报告 实验名称:Linux随机进程调度算法实现 班级: 学号: 姓名: 日期: 2012/12/31

一、实验名称 Linux随机进程调度算法实现 二、所属课程名称 《操作系统原理》 三、实验原理 linux 0.11内核目录linux/kernel中的sched.c函数是内核中进程调度管理的程序,其中schedule()函数负责选择系统中下一个要运行的进程。 schedule()函数首先对所有任务(进程)进行检测,唤醒任何一个已经得到信号的进程。具体方法是任务数组中的每个进程,检查其报警定时值alarm。如果进程的alarm时间已经过期(alarm

NR_TASKS:系统能容纳的最大进程数(64个); task[]:任务(进程)数组; 更改代码如下:(linux 0.11内核目录下linux/kernel/sched.c 源文件的scheduling()函数while(1)循环)while (1) { //定义c用来判断系统中是否可运行的任务(进程)存在; c=-1; //c初值设为-1,默认不存在可运行进程; next = 0;//next记录下一个即将运行的进程; i=jiffies % NR_TASKS+1; //i的值是随机产生的; p=&task[i];//p指向在task表中下标为i的进程; while (--i) { //遍历task[]; if(!*--p)continue; //如果task[i]不包含进程,跳过; //如果task[i]包含进程且该进程处于就绪状态,记录 //该任务(进程)序号,跳出无限循环while(1),转向 //switch_to()函数执行该任务(进程); if ((*p)->state == TASK_RUNNING) { next = i; c=i; break; } } if (c) break;//如果没有任何任务(进程)要执行,则跳出, //转向switch_to(),执行0号进程(idle)。 }

异构多核处理器的任务调度算法

异构多核处理器的任务调度算法 蒋建春;汪同庆 【期刊名称】《计算机工程与应用》 【年(卷),期】2009(045)033 【摘要】在研究Min-min、Max-min算法和Sufferage算法基础上,针对异构多核处理器的特点,提出一种任务静态调度算法--自适应分段Sufferage算法(Adaptive Segmented Sufferage,ASS).该算法以最早完成时间和负载均衡为目标进行任务分配,先将任务分配分成两个阶段:在第一个阶段以最少完成时间作为分配原则进行分配,选择单位时间内节省时间最多的任务先分配;在第二个阶段以负载均衡为分配原则进行分配,选择执行时间大的任务先分配.然后选取不同调节参数,对任务进行多次重新分配,以最小的最大完成时间为最后分配结果,实现自适应调节.通过实验验证,该算法在实现最少完成时间的前提下能很好地达到负载均衡.%After studying the Min-min,Max-min and Sufferage algorithms,this paper presents an Adaptive Segmented Sufferage (ASS) algorithm that can be applied to heterogeneous multi-core processors system,and the goal is to assign optimally tasks to different cores to get the minimal Earliest Finish Time(EFT) and optimal load balancing.At first,the algorithm divides the allo-cating process into two phases:The first phase,the tasks whose saving time is maximum have priority to be selected to a core in the minimal execution time tasks set on the principle of the minimal EFT;the second phase,as the principle of load balancing, the tasks,which have the maximum execution time in the

一种改进的实时混合任务调度算法

一种改进的实时混合任务调度算法 谢建平1,阮幼林1,2 1武汉理工大学信息工程学院,武汉(430070) 2南京大学计算机软件新技术国家重点实验室,南京(210093) E-mail:xjp_1997@https://www.doczj.com/doc/c718175523.html, 摘要:文章提出了结合TBS(总带宽服务器法)算法和DMS(时限单调算法)算法的实时混合任务的调度算法,该方法能保证周期任务满足时限的要求,还能缩短非周期任务的响应时间。基于TBS服务器思想将非周期任务转换成有时限要求的硬实时任务,然后基于DMS 调度周期任务和非周期任务。由于是使用静态的DMS算法,不仅可以减小任务的切换开销,而且对系统的瞬时过载有一定的适应性。 关键词:实时系统;任务调度;时限单调算法;总带宽服务器算法 1. 概述 随着计算机技术的飞速发展与普及,实时系统已经成为人们生产和生活中不可或缺的组成部分。实时系统具有及时响应、高可靠性、专用性、少人工干预等特征[1],被广泛应用于工业控制、信息通讯、网络传输、媒体处理、军事等领域。实时系统的正确性不仅依赖于计算的逻辑结果,还取决于获得计算结果的时间的正确性。在航空航天、电信、制造、国防等领域,对实时系统有着强烈的应用需求。 由于实时系统的应用面非常广,所以实时系统的分类方法很多。通常按照系统中任务的周期性或者任务对截止期限的要求进行划分。实时任务按照周期性划分可以分为周期实时任务(periodic task)和非周期实时任务(aperiodic task);按照对截止期限的要求可以分为硬实时任务和软实时任务[1]。 本文提出了结合TBS(总带宽服务器法)算法[5]和DMS(时限单调算法)[6]算法的实时混合任务的调度算法,该方法能保证周期任务满足时限的要求,还能缩短非周期任务的响应时间。算法将非周期任务赋予一个假想的时限,然后整个实时系统采用DMS算法调度。由于是使用静态的DMS算法,不仅可以减小任务的切换开销,而且对系统的瞬时过载有一定的适应性。 2. 实时系统的任务调度 由于实时调度是保障实时系统满足时间约束的重要手段,所以一直是实时计算研究领域中倍受关注的热点问题。调度的实质是资源的分配,包括处理器和其他运算、交互、存储资源,调度就是来用来将这些资源合理地分配给各个实时任务的一种方法。 根据调度顺序产生的时机和方式可以分为静态调度和动态调度[1]。若调度算法是在编译的时候就做出决定从就绪任务队列中选择哪个任务来运行的,则这样的调度是静态的。这类调度算法假设系统中实时任务的特性(如:截止期,WCET等)是事先知道的。它脱机地进行可调度性分析,并产生一个调度表。静态调度算法的优点是运行开销小,可预测性强。但是,由于静态调度算法一旦做出调度决定后在运行期间就不能再改变了,所以它的灵活性较差。 如果调度器是在运行期间才决定选择哪个就绪任务来运行的,则这类调度被称为动态调度。动态调度算法能够对变化的环境做出反应,因此,这类调度算法比较灵活,适合于任务不断生成,且在任务生成前其特性并不清楚的动态实时系统。但是,动态调度算法的可预测性差且运行开销较前者大。

LK光流算法总结-精选.doc

运动目标检测之Lucas-Kanade 光流算法读书笔记 视觉是人类感知自身周围复杂环境最直接有效的手段之一,而在现实生活中大量有意义的视觉信息都包含在运动中,人眼对运动的物体和目标也更敏感,能够快速的发现运动目标。随着计算机技术、通信技术、图像处理技术的不断发展,计算机视觉己成为目前的热 点研究问题之一。而运动目标检测是计算机视觉研究的核心课题之一,融合了图像处理、模式识别、人工智能、自动控制、计算机等众多领域的先进技术,在军事制导、视觉导航、视频监控、智能交通、医疗诊断、工业产品检测等方面有着重要的实用价值和广阔的发展 前景。 一目标检测 运动目标检测运动目标检测是指从序列图像中将运动的前景目标从背景图像中提取出 来。目前,已有的运动目标检测方法按照算法的基本原理可以分为三类:背景差分法,帧间差 分法和光流法。 1 背景差分法 背景差分法又称背景减除法,背景差分法的原理是将当前帧与背景图像进行差分来得到 运动目标区域,但是需要构建一幅背景图像,这幅背景图像必须不含运动目标,并且应该能不断的更新来适应当前背景的变化,构建背景图像的方法有很多,比较常用的有基于单个高 斯模型的背景构建,基于混合高斯模型的背景构建,基于中值滤波器的背景构造,基于卡尔曼滤波器的背景构造,基于核函数密度估计的背景模型构造。 缺点:因为要求背景是静止的,所以背景的变化,场景中有很多干扰,比如场景中 有树枝和叶子在风中晃动、水面的波动等等,还有照明的变化和天气的变化等都可能影响检 测的结果 2 帧间差分法 帧间差分法是一种通过对视频图像序列中相邻两帧作差分运算来获得运动目标轮廓的 方法,它可以很好地适用于存在多个运动目标和摄像机移动的情况。当监控场景中出现异常 物体运动时,帧与帧之间会出现较为明显的差别,两帧相减,得到两帧图像亮度差的绝对值,

进程调度算法实验报告

操作系统实验报告(二) 实验题目:进程调度算法 实验环境:C++ 实验目的:编程模拟实现几种常见的进程调度算法,通过对几组进程分别使用不同的调度算法,计算进程的平均周转时间和平均带权周转时间,比较 各种算法的性能优劣。 实验内容:编程实现如下算法: 1.先来先服务算法; 2.短进程优先算法; 3.时间片轮转调度算法。 设计分析: 程序流程图: 1.先来先服务算法 开始 初始化PCB,输入进程信息 各进程按先来先到的顺序进入就绪队列 结束 就绪队列? 运行 运行进程所需CPU时间 取消该进程 2.短进程优先算法

3.时间片轮转调度算法 实验代码: 1.先来先服务算法 #include #define n 20 typedef struct { int id; //进程名

int atime; //进程到达时间 int runtime; //进程运行时间 }fcs; void main() { int amount,i,j,diao,huan; fcs f[n]; cout<<"请输入进程个数:"<>amount; for(i=0;i>f[i].id; cin>>f[i].atime; cin>>f[i].runtime; } for(i=0;if[j+1].atime) {diao=f[j].atime; f[j].atime=f[j+1].atime; f[j+1].atime=diao; huan=f[j].id; f[j].id=f[j+1].id; f[j+1].id=huan; } } } for(i=0;i #define n 5 #define num 5 #define max 65535 typedef struct pro { int PRO_ID; int arrive_time;

LK光流算法总结

运动目标检测之Lucas-Kanade光流算法读书笔记 视觉是人类感知自身周围复杂环境最直接有效的手段之一,而在现实生活中大量有意义的视觉信息都包含在运动中,人眼对运动的物体和目标也更敏感,能够快速的发现运动目标。随着计算机技术、通信技术、图像处理技术的不断发展,计算机视觉己成为目前的热点研究问题之一。而运动目标检测是计算机视觉研究的核心课题之一,融合了图像处理、模式识别、人工智能、自动控制、计算机等众多领域的先进技术,在军事制导、视觉导航、视频监控、智能交通、医疗诊断、工业产品检测等方面有着重要的实用价值和广阔的发展前景。 一目标检测 运动目标检测运动目标检测是指从序列图像中将运动的前景目标从背景图像中提取出来。目前,已有的运动目标检测方法按照算法的基本原理可以分为三类:背景差分法,帧间差分法和光流法。 1背景差分法 背景差分法又称背景减除法,背景差分法的原理是将当前帧与背景图像进行差分来得到运动目标区域,但是需要构建一幅背景图像,这幅背景图像必须不含运动目标,并且应该能不断的更新来适应当前背景的变化,构建背景图像的方法有很多,比较常用的有基于单个高斯模型的背景构建,基于混合高斯模型的背景构建,基于中值滤波器的背景构造,基于卡尔曼滤波器的背景构造,基于核函数密度估计的背景模型构造。 缺点:因为要求背景是静止的,所以背景的变化,场景中有很多干扰,比如场景中有树枝和叶子在风中晃动、水面的波动等等,还有照明的变化和天气的变化等都可能影响检测的结果 2帧间差分法 帧间差分法是一种通过对视频图像序列中相邻两帧作差分运算来获得运动目标轮廓的方法,它可以很好地适用于存在多个运动目标和摄像机移动的情况。当监控场景中出现异常物体运动时,帧与帧之间会出现较为明显的差别,两帧相减,得到两帧图像亮度差的绝对值,

进程模拟调度算法课程设计

一.课程概述 1.1.设计构想 程序能够完成以下操作:创建进程:先输入进程的数目,再一次输入每个进程的进程名、运行总时间和优先级,先到达的先输入;进程调度:进程创建完成后就选择进程调度算法,并单步执行,每次执行的结果都从屏幕上输出来。 1.2.需求分析 在多道程序环境下,主存中有着多个进程,其数目往往多于处理机数目,要使这多个进程能够并发地执行,这就要求系统能按某种算法,动态地把处理机分配给就绪队列中的一个进程,使之执行。分配处理机的任务是由处理机调度程序完成的。由于处理机是最重要的计算机资源,提高处理机的利用率及改善系统必(吞吐量、响应时间),在很大程度上取决于处理机调度性能的好坏,因而,处理机调度便成为操作系统设计的中心问题之一。本次实验在VC++6.0环境下实现先来先服务调度算法,短作业优先调度算法,高优先权调度算法,时间片轮转调度算法和多级反馈队列调度算法。 1.3.理论依据 为了描述和管制进程的运行,系统为每个进程定义了一个数据结构——进程控制块PCB(Process Control Block),PCB中记录了操作系统所需的、用于描述进程的当前情况以及控制进程运行的全部信息,系统总是通过PCB对进程进行控制,亦即,系统是根据进程的PCB 而不是任何别的什么而感知进程的存在的,PCB是进程存在的惟一标志。本次课程设计用结构体Process代替PCB的功能。 1.4.课程任务 一、用C语言(或C++)编程实现操作模拟操作系统进程调度子系统的基本功能;运用多 种算法实现对进程的模拟调度。 二、通过编写程序实现进程或作业先来先服务、高优先权、按时间片轮转、短作业优先、多 级反馈队列调度算法,使学生进一步掌握进程调度的概念和算法,加深对处理机分配的理解。 三、实现用户界面的开发

单调速率调度算法RMS

余蓝涛1 (天津大学精密仪器与光电子工程学院天津 300072 ) 摘要: 嵌入式系统对强大实时处理能力的需求和相对紧张的内存及内核资源的现实,对嵌入式操作系统任务调度提出了较高的要求。因此任务调度的算法的分析,实现和优化,对实现嵌入式系统的实时性有着重大的意义。从算法提出的理论基础出发,深入分析了经典的单调速率调度算法的思想,特点,具体实现并重点评价了该算法的优点和局限性。 关键词:单调速率调度算法实时嵌入式系统 Abstract: The zest for powerful real-time processing of embedded system and the reality of relatively scare memory and kernel resource pave way for the high request for task scheduling. Therefore, the analysis, implementation and optimization of task scheduling algorithm have a vast meaning for the real-time system. Based on theoretical basis of classic rate-monotonic scheduling algorithm, this paper not only analyzes fundamental thought, characteristics, practical implementation of this classic algorithm in depth, but also rate its advantages and disadvantages. Key words: Rate-monotonic Scheduling, Algorithm, Real-time, Embedded System 一,引言 现在嵌入式系统得到高速的发展。它的发展为几乎所有的电子产品注入了新的活力。它在国民经济各领域和我们日常生活中发挥了越来越重要的作用。 嵌入式系统在航天、军事、工控以及家电等方面得到了广泛应用。囿于体积,能耗,价格等方面的约束,嵌入式系统处理器速度比较慢,存储器容量也有限。而传统的操作系统为了取得较高的性能,要求硬件设备具有强大的处理能力,大容量的存储能力以及对网络的支持功能,这使得传统的操作系统难以简单地移植到嵌入式系统中。 这就导致了嵌入式操作系统由于受到系统的限制,往往内存资源都非常的有限,要求操作系统的内核都非常的精炼,对于系统中的资源操作系统内核需要进行统一的分配和调度。 嵌入式操作系统调度策略一直以来都是嵌入式操作系统的研究 中的一个热点。任务调度是嵌入式操作系统内核的关键部分,如何进行任务调度,使得各个任务能在其截止期限内得以完成是嵌入式操作系统的一个重要的研究领域。 二,嵌入式实时操作系统 绝大部分嵌入式系统都是实时系统,而且多是实时多任务系统。所谓“实时”,是指系统的正确性不仅仅依赖于计算的逻辑结果而且依赖于结果产生的时间[1][6]。结果产生的时间就是通常所说的截止期限(deadline),描述系统实时性的指标主要有: a,对紧急事件可预见性的快速响应; 1作者简介:余蓝涛(1991-)江西省人天津大学精密仪器与光电子工程学院测控技术与仪器本科生学号:79

一种视频微表情检测的改进光流算法

2018年6月图 学 学 报 June2018第39卷第3期JOURNAL OF GRAPHICS V ol.39No.3一种视频微表情检测的改进光流算法 李秋宇1,张玉明2,杨福猛3,詹曙1 (1. 合肥工业大学计算机与信息学院,安徽合肥 230009; 2. 芜湖职业技术学院电气工程学院,安徽芜湖 241000; 3. 安徽信息工程学院,安徽芜湖 241000) 摘要:微表情是人们在试图隐藏自己真实情感时表现出的不受自主神经控制、持续时间短暂,强度十分微弱的面部表情。由于微表情与谎言识别有着密切的联系,其公共安全、侦查讯问、临床医学等领域有很大的应用前景。针对人为识别微表情十分困难的问题,提出一种基于Horn-Schunck (HS)光流法改进并应用于微表情自动检测的方法。使用预条件Gauss-Seidel迭代方法改进了HS光流法,加快了收敛速度。通过在自发微表情数据库CASME中进行实验,该验证方法在微表情检测中有很好的效果。 关键词:微表情检测;光流法;预条件迭代 中图分类号:TP 391 DOI:10.11996/JG.j.2095-302X.2018030448 文献标识码:A 文章编号:2095-302X(2018)03-0448-05 An Improved Optical Flow Algorithm for Micro Expression Detection in the Video Sequence LI Qiuyu1, ZHANG Yuming2, YANG Fumeng3, ZHAN Shu1 (1. School of Computer and Information, Hefei University of Technology, Hefei Anhui 230009, China; 2. School of Electrical Engineering, Wuhu Institute of Technology, Wuhu Anhui 241000, China; 3. Anhui Institute of Information Technology, Wuhu Anhui 241000, China) Abstract: Micro-expression is a kind of short-duration subtle expression which is not controlled by the autonomic nervous system. Micro-expression appears when a person is attempting to conceal his true emotion. Micro-expression detection boasts great application prospects in many fields, such as public security, investigation and interrogation as well as clinical medicine due to its close relationship with lie detection. Automatic detection of micro-expressions has come to the fore in research, because it is of great difficulty to artificially identify micro-expression . This paper proposes an improved algorithm based on the Horn-Schunck (HS) optical flow for automatic micro-expression detection. In this study, the pre-conditioned Gauss-Seidel iterative method is employed to improve the HS optical flow method, which accelerates the convergence rate. Experiments in the spontaneous micro-expression database CASME show that the propounded method exerts an excellent effect on the detection of micro-expression. Keywords: micro-expression detection; optical flow; preconditioned iteration 第一作者:李秋宇(1993-),男,安徽霍邱人,硕士研究生。主要研究方向为计算机视觉、深度学习。E-mail:lqy@https://www.doczj.com/doc/c718175523.html, 通信作者:詹曙(1968-),男,安徽合肥人,教授,博士。主要研究方向为三维人脸图像分析和识别、医学影像分析和医学成像系统。 E-mail:shu_zhan@https://www.doczj.com/doc/c718175523.html, 万方数据

操作系统模拟进程调度算法

操作系统 ——项目文档报告 进程调度算法 专业: 班级: 指导教师: 姓名: 学号:

一、核心算法思想 1.先来先服务调度算法 先来先服务调度算法是一种最简单的调度算法,该算法既可以用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将他们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。FCFS算法比较有利于长作业(进程),而不利于短作业(进程)。 2.短作业(进程)优先调度算法 短作业(进程)优先调度算法SJ(P)F,是指对短作业或短进程优先调度的算法。它们可以分别用于作业调度和进程调度。短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。而短进程(SPF)调度算法则是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机再重新调度。SJ(P)F调度算法能有效地降低作业(进程)的平均等待时间,提高系统吞吐量。该算法对长作业不利,完全未考虑作业的紧迫程度。 3.高响应比优先调度算法 在批处理系统中,短作业优先算法是一种比较好的算法,其主要不足之处是长作业的运行得不到保证。如果我们能为每个作业引人动态优先权,并使作业的优先级随着等待时间的增加而以速率a提高,则长作业在等待一定的时间后,必然有机会分配到处理机。该优先权的变化规律可描述为: 优先权=(等待时间+要求服务时间)/要求服务时间 即优先权=响应时间/要求服务时间 如果作业的等待时间相同,则要求服务的时间越短,其优先权越高,因而该算法有利于短作业。 当要球服务的时间相同时,作业的优先权决定于其等待时间,等待时间越长,优先权越高,因而它实现的是先来先服务 对于长作业,作业的优先级可以随着等待时间的增加而提高,当其等待时间足够长时,其优先级便可以升到很高,从而也可获得处理机。 4.时间片轮转算法 在时间片轮转算法中,系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU分配给队首进程,并令其执行一个时间片。当执行的时间片用完时,由一个计数器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾;然后,再把处理机分配给就绪队列中新的队首进程,同时也让它执行一个时间片。这样就可以保证就绪队列中的所有进程在一给定的时间内均能获得一时间片的处理机执行时间。换言之,系统能在给定的时间内响应所有用户的请求。 二、核心算法流程图

实时任务调度系统的RM调度算法算法研究与实现

毕业设计(论文)任务书 系专业___ _____班学生______________ 一、毕业设计(论文)题目实时任务调度系统的RM调度算法研究与实现 二、毕业设计(论文)工作自__2008_年_1_月_20__日起至_2008_年_5_月_30_日止。 三、毕业设计(论文)地点:上海杰普软件科技有限公司__________ 四、毕业设计(论文)内容要求: 1、课题的意义 提到调度算法, 就不得不提到RM调度算法。目前生产调度过程的响应和应用影响企业的生产力和企业核心竞争力,能够实现实时的优化调度系统的执行效率,直接决定了系统的有效作用。本课题要求能够通过RM调度算法实现任务调度系统,要求实现可配置的软件模块开发。 2、设计要求: 设计出灵活、便捷的用户操作界面,支持车间多用户并发访问,合理设计数据库对象,设计并使用RM调度算法进行调度任务规划,包括模块如下: ●系统初始化模块:调度对象初始化、调度对象的信息管理与配置、调度用户初 始化; ●调度过程管理模块:调度过程的实现与调度任务的控制管理。 ●调度评估管理模块:管理以往调度的实现和结果统计,产生对应报表。 3、知识体系要求 ●学习并掌握jdbc编程 ●学习并掌握socket编程 ●学习并掌握xml解析技术 ●学习掌握java gui程序构建 ●算法的研究与应用 4、需查阅的资料 ●Sun公司规范文档 ●搜索算法技术文档 5、设计任务的提交形式和要求 ●设计论文一份 ●翻译资料一份 ●设计作品(包括相关源代码一份)

6、总体进度安排 第1周:调研、学习、查询资料 第2-4周:需求分析与软件设计 第5-8周:系统设计,包括数据库设计和系统架构设计 第9-12周:软件实现及测试 第13-14周:论文 第15周:答辩 教研室指导教师 教研室主任______________ 接受任务日期________________ 批准日期_______________ 学生签名__________________

进程调度算法论文优先级调度~

题目操作系统课程设计 实验一:进程调度算法 1.实验目的 通过优先权法和轮转算法的模拟加深对进程概念和进程调度过程的理解,掌握进程状态之间的切换,同时掌握进程调度算法的实现方法和技巧。2.实验内容 1)用C语言或C++语言来实现对n个进程采用优先权算法以及轮转算法的进程调度。 2)每个用来标识进程的进程控制块PCB用结构来描述,包括以下字段:(1)进程标识ID,其中0为闲逛进程,用户进程标识数为1,2,3…。 (2)进程优先级Priority,闲逛进程(idle)的优先级为0,用户进程的优先级大于0,且随机产生,标识数越大,优先级越高。 (3)进程占用CPU时间CPUtime,进程每运行一次,累计值等于4. (4)进程总共需要运行时间Alltime,利用随机函数产生。 (5)进程状态,0-就绪态;1-运行态;2-阻塞态。 (6)队列指针next,用来将多个进程控制块PCB链接为队列。 3)优先数改变的原则 (1)进程在就绪队列中每呆一个时间片,优先数增加1。 (2)进程每运行一个时间片,优先数减3. 4)在调度前,系统中拥有的进程数PCB_number由键盘输入,经初始化后,所有的进程控制块PCB链接成就绪队列。 3.实验步骤 a)画出程序流程图 a)动态优先权的进程调度算法模拟流程

b)轮转法进程调度算法模拟流程

b)程序算法如下: #include "stdafx.h" #define NULL 0 #include #include #include using namespace std; /*进程PCB结构*/ struct PCB { int ID; //进程标识 int priority; //优先级 int CPUtime; // 进程占用CPU的时间 int ALLtime; // 进程总共需要运行的时间 int State; // 进程状态 struct PCB *next; // 指向下一节点的指针 }; typedef struct PCB pcb; void init(); //产生idle进程,输入用户进程数目,

采用序优化的改进蚁群算法

第44卷 第2期2010年2月 西 安 交 通 大 学 学 报 J OU RNAL O F XI ′AN J IAO TON G UN IV ERSIT Y Vol.44 №2Feb.2010 收稿日期:2009Ο06Ο20. 作者简介:张兆军(1981-),男,博士生;冯祖仁(联系人),男,教授,博士生导师. 基金项目:国家自然科学基金资助项目(60875043);国家重点基础研究发展规划资助项目(2007CB311006). 采用序优化的改进蚁群算法 张兆军1,2,冯祖仁1,2,任志刚1,2 (1.西安交通大学系统工程研究所,710049,西安;2.西安交通大学机械制造 系统工程国家重点实验室,710049,西安) 摘要:为了评价蚁群算法在有限时间内所得优解的质量,基于序优化方法提出了一种改进的蚁群算法:使用盲目挑选规则选择初始解,并对信息素进行相应的初始化;确定得到满足要求的优解所需要的迭代次数,将其作为算法的终止条件;为了更好地利用每次迭代中的优解,在算法开始阶段使用前l 个迭代优解更新信息素,以增强探索能力;在算法结束阶段采用当前迭代最优解更新信息素,以加快收敛速度.改进算法在保证收敛的前提下,并没有增加算法的时间复杂度.对旅行商问题进行的仿真实验表明,改进算法在解的质量和收敛速度方面优于最大Ο最小蚂蚁系统.关键词:蚁群算法;序优化;盲目挑选;旅行商问题中图分类号:TP18 文献标志码:A 文章编号:0253Ο987X (2010)02Ο0015Ο05 Novel Ant Colony Optimization Algorithm B ased on Order Optimization ZHAN G Zhaojun 1,2,FEN G Zuren 1,2,REN Zhigang 1,2 (1.Systems Engineering Institute ,Xi ′an Jiaotong University ,Xi ′an 710049,China ;2.State Key Laboratory for Manufacturing Systems Engineering ,Xi ′an Jiaotong University ,Xi ′an 710049,China ) Abstract :To evaluate t he quality of optimal solutions obtained by t he ant colony optimization (ACO )algorit hm in limited time ,an imp roved ACO algorit hm is presented on t he basis of t he or 2dinal optimization.An initial solution is selected using t he blind picking rule ,and t he p heromone is initialized correspondingly.The number of iterations to achieve t he optimal solution meeting t he demand is t hen determined and is used as t he termination condition of t he algorit hm.To make better use of t he solutions obtained at each iteration ,t he first l solutions are employed to enhance search capability at t he beginning p hase of t he algorit hm.While t he current optimal solution is used at t he end p hase of t he algorit hm to accelerate t he convergence.The time complexity of t he novel algorit hm is not increased under t he condition t hat ensures t he convergence.Simulation re 2sult s on t he traveling salesman p roblem show t hat t he p roposed algorit hm is superior to t he max 2min ant system in bot h t he quality of solutions and t he speed of convergence. K eyw ords :ant colony optimization ;ordinal optimization ;blind picking ;traveling salesman problem 蚁群算法[1]是一种仿生随机优化算法,已被成功应用于旅行商问题(TSP )、二次分配、网络路由、属性约简[2]等问题的求解,具有鲁棒性、正反馈、分布式计算和易与其他算法结合等优点.然而,现有方法也存在一些不足,如初期搜索时间偏长,容易陷入局部最优解等.为此,学者们提出了很多改进算 法,例如使用局部更新策略和全局更新策略的蚁群系统[3],限制信息素的上、下界并使用最优解更新策略的最大2最小蚂蚁系统(max 2min ant system ,MMAS )[4]等.此外,文献[5]受神经网络和遗传算法的启发,提出了一种二进制蚁群进化算法;文献[6]将分散搜索的思想融入蚁群算法,提高了算法的

算法导论_实验三 一个任务调度问题

实验三一个任务调度问题 1.问题描述: 在单处理器上具有期限和惩罚的单位时间任务调度问题. 2.算法原理: 考虑一个给定的调度. 我们说一个任务在调度迟了, 如果它在规定的时间之后完成; 否则, 这个任务在该调度中是早的. 一个任意的调度总可以安排成早任务优先的形式, 其中早的任务总是在迟的任务之前. 为了搞清这一点, 请注意如果某个早任务a(i)跟在某个迟任务a(j)之后, 就可以交换a(i)和a(j)的位置, 并不影响a(i)是早的a(j)是迟的状态. 类似的,任意一个调度可以安排成一个规范形式, 其中早的任务先于迟的任务, 且按期限单调递增顺序对早任务进行调度. 为了做到这一点, 将调度安排成早任务优先形式. 然而, 只要在该调度中有两个分别完成于时间k和k+1的早任务a(i)和a(j) 使得d(j)

操作系统五种进程调度算法的代码

进程调度算法的模拟实现 ?实验目的 1.本实验模拟在单处理机情况下的处理机调度问题,加深对进程调度的理解。 2.利用程序设计语言编写算法,模拟实现先到先服务算法FCFS、轮转调度算法RR、最短作业优先算法SJF、优先级调度算法PRIOR、最短剩余时间优先算法SRTF。 3.进行算法评价,计算平均等待时间和平均周转时间。 ?实验内容及结果 1.先来先服务算法

2.轮转调度算法

3. 优先级调度算法

4. 最短时间优先算法 5. 最短剩余时间优先算法

?实验总结 在此次模拟过程中,将SRTF单独拿了出来用指针表示,而其余均用数组表示。 ?完整代码 【Srtf.cpp代码如下:】 //最短剩余时间优先算法的实现 #include #include #include typedef struct { int remain_time; //进程剩余执行时间 int arrive_time; //进程到达时间 int Tp; //进入就绪队列的时间int Tc; //进入执行队列的时间int To; //进程执行结束的时间int number; //进程编号 }Process_Block; //定义进程模块 typedef struct _Queue { Process_Block PB; struct _Queue *next; }_Block,*Process; //定义一个进程模块队列中结点 typedef struct { Process head; //队列头指针 Process end; //队列尾指针

实现进程调度算法

实现进程调度算法 [实验目的] 通过该实验加深和提高对进程调度知识的掌握。 [实验内容及要求] 用C语言实现下列要求,并写出实验报告,报告内容包括:题目、 目的、内容和要求、程序清单、运行情况(输入、输出)、总结。 现有一批给定的进程P1、P2、P3、P4、P5,它们到达时间和要求 运行时间如下: (1)分别输出采用短进程优先调度算法SPF、先来先服务FCFS调度算法时,各进程的周转时间、带权周转时间及平均周转时间和平均带权周转时间,比较两种算法哪个性能好。 (2)输出两种调度算法的进程完成顺序。

源程序为: #include #include struct process { char pname; float arrivetime; float servetime; float finishtime; float roundtime; float droundtime; float waittime; float yxq; }; struct process pro[100]; void fcfs(struct process pro[],int n); void sjf(struct process pro[],int n); struct process *sortarrivetime(struct process pro[],int n); void print(struct process pro[],int n); void main() { int n,i; printf("请输入有几个进程:"); scanf("%d",&n); for(i=0;i

相关主题
文本预览
相关文档 最新文档