操作系统类有关论文范文例文,与实时与嵌入式操作系统相关论文答辩开场白
本论文是一篇操作系统类有关论文答辩开场白,关于实时与嵌入式操作系统相关开题报告范文。免费优秀的关于操作系统及数据结构及嵌入式方面论文范文资料,适合操作系统论文写作的大学硕士及本科毕业论文开题报告范文和学术职称论文参考文献下载。
apTbl[]是屏蔽字,将0-7的下标转换成各自位置1的8位值(模式串)任务调度OS_SCHED()总是进行进入就绪态任务中优先级最高的任务,确定哪个任务优先级最高,这一工作就是有调度器完成的.
任务切换OS_TASK_SW()需恢复该任务在CPU使用权被剥夺时保存下来的全部寄存器的值,之后,运行被切换的任务.
时钟节拍OSTimTick()注意点:必须在多任务系统启动后,也就是调用OSStart()之后,再开启时钟节拍器.
3任务管理
建立任务OSTaskCreat()/OSTaskCreatExt()
如果想让UCOS管理用户的任务,必须先建立任务.可以通过将任务的地址和其他参数传递到以下两个函数之一来建立任务.当调用OSTaskCreat()时,需要四个参数:OSTaskCreate(void(*task)(void*pd),void*pdata,OS_STK*ptos,INTUprio)
Task:是指向任务代码的指针,pdata:是任务开始执行是,传递给任务的参数的指针,ptos:是分配给任务的堆栈的栈顶指针,prio是分配给任务的优先级.
OSTaskCreateExt()函数来建立任务会更加灵活,但是会增加一些额外的开销.
任务堆栈OS_STK()
每个任务都有自己的堆栈,堆栈必须申明为OS_STK类型,并且由连续的内存空间组成.可以静态分配堆栈空间,也可以动态分配堆栈空间.3:堆栈检验OSTaskStkChk()
有时确定任务实际需要的堆栈空间的大小是很有必要的,因为这样就可以避免为任务分配过多的堆栈空间,从而减少应用程序代码所需的RAM空间.
删除任务OSTaskDel()有时需要删除任务,删除任务,是说任务返回并处于休眠态,并不是说任务的代码被删除了,只是任务的代码不再被UCOS调用.
改变任务的优先级OSTaskChangePrio()
在建立任务是,会分配给任务一个优先级.在程序运行期间,可以通过调用该函数改变任务的优先级.也就是说,UCOS允许动态的改变任务的优先级.
挂起任务OSTaskSuspend()任务挂起是一个附加功能,也就是说,如果任务在被挂起的同时也在等待延迟时间到,那么,需要对任务做取消挂起的操作,并且等待延迟时间到,任务才能转让就绪状态.任务可以挂起自己或者其他任务.
恢复任务OSTaskResume()
别挂起的任务只有通过该函数才能被恢复.
4时间管理
1:任务延迟函数OSTimeDly()
Ucos提供一个可以被任务调用而将任务延时一段特定时间的功能函数,即OSTimeDly().任务调用OSTimeDly()后,一旦规定的时间期满或者有其他的任务通过调用OSTimeDlyResume()取消了延时,他就会进入就绪状态.只有当该任务在所有就绪态任务中具有最高的优先级,它才会立即运行.
2:按时,分,秒延时函数OSRimeDLyHMSM()
与OSTimeDly()一样,调用OSRimeDlyHMSM()函数也会是UCOS进行一次任务调度,并且执行下一个优先级最高的就绪任务.当OSTimeDlyHMSM()后,一旦规定的时间期满,或者有OSTimeDlyResume(),它就会马上处于就绪态.同样,只有当该任务在所有就绪态任务中具有最高的优先级,他才开始运行.
3:恢复延时的任务OSTimeDlyResume()延时的任务可以不等待延时的期满,而是通过其他任务取消延时而使自己处于就绪态,可以通过该函数来实现,实际上,OSTimeDlyResume()也可以唤醒正在等待的事件.
4:系统时间OSTimeGet()和OSTimeSet()
5事件控制块(ECB)
任何任务或中断服务子程序可以通过事件控制块ECB向另外的任务发信号,这里信号看成是事件.
事件控制块ECB的数据结构
Typedefstruct
{
INT8UOSEventType,,定义了事件的具体类型
INT8UOSEventGrp,,
INT16UOSEventCnt,,当事件控制块用于信号量时,该变量用于信号量的计数器.
Void*OSEventPtr,,只有所定义的事件是消息或者消息队列时才使用.
INT8UOSEventTbl[OS_EVENT_TBL_SIZE],
}OS_EVENT,
1:初始化一个事件控制块,OS_EventWaitLListInit()
当建立一个信号量,或者消息队列时,通过调用该函数,对事件控制块中的等待任务列表进行初始化.
2:使一个任务进入就绪态,OS_EventTaskRdy()
该函数从等待任务队列中使最高优先级任务脱离等待状态,并把该任务置于就绪态.3:使一个任务进入等待某事件发生状态OS_EventTaskWait()
当某个任务需等待一个事件的发生时,信号量,互斥型信号量,及消息队列会通过相应的PEND函数调用该函数,使当前任务从就绪任务表中脱离就绪态,并放到相应事件的事件控制块的等待任务表中.
4:由于等待超时而降任务置为就绪态OS_EventTo()
如果在预先指定的等待时限内任务等待的事件没有发生,那么该函数就会因为等待超时而将任务的状态量置为就绪态.在这种情况下,信号量,互斥型信号量及消息队列会通过PEND调用该函数,以完成这项工作.
6信号量管理
信号量有两部分组成:一部分是16位无符号整型信号量的计数值,另一部分是有等待该信号量的任务组成的等待任务表.
1:建立一个信号量,OSSemCreate()
这篇论文转载于:http://www.sxsky.net/xie/07012171.html
使用一个信号量之前,首先须建立该信号量,可以调用该函数来建立信号量,并对信号量赋予初始计数值.该初始值为0~65535.如果该信号量是用来表示一个或者多个事件发生,那么该信号量的初始值通常赋为0,如果该信号量用于对共享资源的访问,那么该信号量的初始值应赋为1,如果该信号量用来表示允许任务访问n个相同的资源,那么该信号量的初始值应赋为n,并把该信号量作为一个可记数的信号量使用.
2:删除一个信号量,OSSemDel()
如果要删除一个信号量,在OS_CFG.H中,OS_SEM_DEL_EN须置为1,该函数才能被使用.
3:等待一个信号量OSSemPend()4:发出一个信号量OSSempend()
5:无等待的请求一个信号量OSSemAccept()
当一个任务请求一个信号量时,如果该信号量暂时无效,也可以让该任务简单的返回,而不是进入睡眠等待状态.这种操作由该函数完成.6:查询一个信号量的当前状态,OSSemQuerey()可以通过该函数,来查询一个信号量的当前状态.
7互斥信号量管理
任务可以使用互斥型信号量实现对共享资源的独占式处理,互斥型信号量mutex.
1:建立一个互斥型信号量,OSMutexCreate()
在使用mutex之前,必须建立它,建立mutex是通过该函数来实现的,当mutex的初始值为1时,表示资源是可以利用的.
2:删除一个互斥型信号量,OSMutexDel()
只有当OS_CFG.H文件中OS_MUTEX_DEL_EN的值为1时,该函数才有效.3:等待一个互斥信号量,OSMutexPend()4:释放一个互斥型信号量,OSMutexPost()5:无等待的获取互斥型信号量(任务不挂起),OSMutexAccept()
如果要得到mutex,而当前mutex无效,那么不让任务进入休眠态也是可以的,这时可以通过调用该函数来实现.
6:获取互斥型信号量的当前状态,OSMutexQuery()用来获取互斥型信号量的事件控制块的当前状况.
8事件标志组管理
事件标志组由两部分组成:一是用来保存当前事件中各事件状态的一些标志位,二是等待这些标
操作系统类有关论文范文例文,与实时与嵌入式操作系统相关论文答辩开场白参考文献资料: