关键词不能为空

当前您在: 主页 > 英语 >

Vxworks 操作系统内核

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-22 17:28
tags:

-

2021年2月22日发(作者:大连铁道学院)


Vxworks


操作系统内核



Vxworks


内核(


wind

)的基本功能可以分为如下几类:




1




任务;




2




任务间通信




3




中断服务程序




4




定时器服务(


watchdog timers





5




POSIX


时钟和定时器




6




POSIX memory-Locking


接口



1.



任务



任务是代码运行的一个射象,从 系统的角度看,任务是竞争系统资源的最小运行单元。



2.



任务结构



实际引用中任务更好的对客 观世界的事件做出反应。


Vxworks


是多任务环境,每个任 务


都有自己的上下文(


context



,记录了任务运行时的


cpu


环境和 系统资源状况,


context


切换时,比保护在任务控制块中 (


TCP



,一备下次调用是恢复运行 环境。



Context


包括:任务号


,CPU


寄存器和浮点寄存器,可变栈几函数调用,标准的输入 和输


出,延迟时间,时间的大小,内核控制结构,信号处理函数(


signal


handlers



,调用和


性能监视。



3


,任务状态和任务迁移



实时系统最基本的状况有以下四种:




1)


就绪态


(Ready)


:任务只等待系统分配


CUP


资源。

< p>




2)


挂起态


(Pend)



任务需等待某些不可利用的资源而被阻塞。




3)


休眠态


(suspend)


:如果系统不需要某一个任务工作,则这个任务处于休眠状态。




4)


延迟态

< br>(Delay)


:任务被延迟时所处的状态。



当系统函数对某一个任务进行操作时,


任务从一种状态跃迁到另一种状态 。


处于任一状态的


任务都可被删除。


V xWorks


的任务跃迁如图


1


所示。





ready





?




pend





semtake() /msgQReceive()


ready





?




delay





taskDelay()


ready





?




suspend




taskSupend


()



pend





?





ready






sem Give


()


/msgQsend()


pend





?





suspend




taskSuspend()


delay





?




ready






expired delay()


delay





?




suspend




taskSuspend()


suspend



?




ready






taskResume()/ taskActiveate()


suspend



?




pend







taskResume()



suspend



?




delayed





taskResume()




kernelTimeSlice()






















control round-robin scheduling




taskPrioritySet()























change the priority of a task



taskLock()









disable task rescheduling




taskUnlock



























enable task rescheduling



优先级抢占方式






抢允许、禁止;



如果任务设置了抢占 允许位,


当此任务处于运行态时,


如果高一级优先


级任务因某各系统调用阻塞态或挂起态迁移为就绪,


则此高优先级任务会立即 抢占当前任务


的运行,


如果设置了禁止,


则当前任务不可被处于就绪的高优先级任务抢占,


继续运行阻塞,

刮起或者改变抢占设置为止。


Wind


< br>256


优先级,



0-255< /p>



0


的优先级最高,

255


最低。在


程序运行中,可通过


taskPriorityset


设置改变优先级。



轮询方式:





时间轮转的方式;






通过< /p>


KernelTimeSlice


()函数为任务分配时间片;< /p>



优先级锁




通过


taskLock


()

< p>



TaskUnlock


()函数设置抢占方式;



任务控制:




任务控制包括:任务创建、控制、信息。



tsakSpawn


()







create and activate a new task;


taskInit()











InitiaLize a new task



taskActivate








Activate an initialized task




taskSpawn()


函数可以做底层分配和初始化和任务激活,


。初始化和激活函数分别是< /p>


taskInit


()和


taskAct ivate


()



< br>如果你不给你的应用程序中任务起名,


vxworks


会 给每个没有名字的任务器名字,名字统一


格式为


tN

< p>


N


是十进制数,每次加


1




taskName


()






get the task name associated with a task Id



taskNameToId()




look up the task ID associate with a task name.


taskIdSelf()








get the calling task ID


taskidVerify()






Verify the existence of a specified task



taskSpawn(











char *name



//


名称












int priority



//


任务的优先级












int options



//


任务可选项












int stacksize



//


任务堆栈大小












FUNCPTR



entrypt



//


任务入口函数












Int arg1






//


任务入口函数所带参数












Int arg2







int arg 10










)


Options


任务可选项:





VX_FP_TASK











0x8




运行带浮点的斜处理器,





VX_NO_STACK_FILL





0x00




不使用


0xee


填充堆栈





VX_PRIV


ATE_ENV






0x80




用私有环境进行任务





VX_UNBREAKABLE




0x2





任务内的断点失败





VX_SUPERVIDOR






0








用户任务常量用值




taskOptionsGet()




examine task options



taskOptionsSet()





set task options




任务信息(


task information







通过下列函数可以查到任务信息, 但是所查询的信息是查询时刻的信息,因为任务状态


是不断变化的,所以查询的信息可能 不是当前该任务的信息,除非该任务进入睡眠状态。






taskIdListGet()







fill an array



with the Ids of all cative tasks






taskInfoGet()








get information about a task





taskPriorityGet()





examine the priority of a task






taskPegsGet ()







examine a task



s registers






taskRegsSet()








set a task



s registers






taskIsSuspended






check if a task is suspended






taskIsready()









check if task is read ti tun





taskTcb()












get a pointer to task



s comtrol block




任务的删除及安全删除




任务可以被删除,



这些函数用于删除任务和保护任务以免误删。





Exit


()






taskDelete


()





taskSafe


()





taskUnsafe


()



在任务被终止时该任务运行期间分配的内存将不会被释放的


< /p>


任务一般式调用


exit


()终止自己, 但也可以显示的调试


exit()


来杀死自己,一个任务


可以调用


taskdelete


()来杀死另 一个任务。



一个任务被删除的时候,其他任务不会被通知,函 数


tasksafe


()和


taskU nsafe


()被


用来保护任务,避免误删。

< br>TaskSafe


()用来保护任务不被其他任务删除,这种保护通常是


任务运行在临界区或者使用共享资源的时候被使用。



例如:



一个任务可能使用信号量来访 问访问一段数据结构,


当正在使用该数据结构时,


该任务被删除 ,


因为该任务还没有访问完该结构,


所以此时数据结构可能处于 一种被破坏状


态,此时,用于信号量不能在被该任务释放,所以共享资源也不能在被利用 了。




使用


tasksafe


()


保护任务任何其他想删除该任务的任务被 阻塞,


当任务访问共享资源


结束后,用


taskUnsfe


()函数使用自己处于可被删除态,


tas kSafe


()和


taskUnsafe()


可以


被多次使用,一个计数器来记录其使用次数,


当计 数器为


0


的时候,任务可以被删除,


一 个


任务不能让其它任务


tasksafe


()和


taskUnsafe


()



-


-


-


-


-


-


-


-



本文更新与2021-02-22 17:28,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/669517.html

Vxworks 操作系统内核的相关文章

  • 爱心与尊严的高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊严高中作文题库

    1.关于爱心和尊严的作文八百字 我们不必怀疑富翁的捐助,毕竟普施爱心,善莫大焉,它是一 种美;我们也不必指责苛求受捐者的冷漠的拒绝,因为人总是有尊 严的,这也是一种美。

    小学作文
  • 爱心与尊重的作文题库

    1.作文关爱与尊重议论文 如果说没有爱就没有教育的话,那么离开了尊重同样也谈不上教育。 因为每一位孩子都渴望得到他人的尊重,尤其是教师的尊重。可是在现实生活中,不时会有

    小学作文
  • 爱心责任100字作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任心的作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文
  • 爱心责任作文题库

    1.有关爱心,坚持,责任的作文题库各三个 一则150字左右 (要事例) “胜不骄,败不馁”这句话我常听外婆说起。 这句名言的意思是说胜利了抄不骄傲,失败了不气馁。我真正体会到它

    小学作文