UCOSII的任务是怎么切换的呢?每条代码执行多久再切换到下一个任务执行?如果我正在用串口发送数据

UCOSII的任务是怎么切换的呢?每条代码执行多久再切换到下一个任务执行?如果我正在用串口发送数据,第1张

首先你应该知道一个任务的生命周期,建立,挂起,删除,恢复。ucos是基于优先级的而不是时间片轮转。切换就是看当前所有任务的优先级,先实现最高的,依次执行。其实实际中我们很少这样用,一般都会自己的代码中指定挂起时间来实现更加合理的切换,来保证实时性。你所指的串口优先级最高,如果并不指定挂起的话,肯定别的任务根本没有执行的机会。当然如果指定挂起,请注意优先级反转的情况。

UCOS有一个任务调度机制,根据任务的优先级进行调度,具体的调度方式你可以看邵贝贝的书,关于交出CPU使用权的问题主要有二个方面:

一个是硬件中断,那么系统会将当前任务有关变量入栈,然后执行中断服务程序,执行完成后出栈返回.

另一个是任务之间的切换,使用的方法就是任务调度,每一个任务有自己的栈,顺度也是一样的入栈,然后执行另一个程序,然后出线返回.

具体的你可以看邵贝贝的书,网上一搜一大堆.

关于LINUX的问题,首先它俩应用有些区别,UCOS是嵌入式实时 *** 作系统,关键在实时方面,应用于对时间要求较高的地方,虽然LINUX也有一些版本是实时的如RTlinux但是相对来说选择UCOS的多些,而LINUX应用方向有很多,如服务器,电脑的 *** 作系统,嵌入式 *** 作系统等等,我不知道你要问的是哪方面的学习,如果是嵌入式 *** 作系统的话学习UCOS是有一些帮助的,如事件,消息等系统级的应用方法,在LINUX上是一样的,只是函数名有可能不一样,但是直接学习LINUX系统编程更有助于了解这些东西,最好刚学时不要去看内核代码,先会用,然后再去看,学习LINUX的话,你要会LINUX下的常用命令,SHELL命令解析器的使用,LINUX下的编缉器的使用,MAKEFILE的使用,GCC的使用等等,其实就有一些类似于DOS,这些东西也就是现在最热的ARM_LINUX学习的东西,再学学ARM的架构,那么你就可以开发了.

关于ARM_LINUX的东西你在优酷上可以找到一些视频看,然后跟着学,最好买一套开发板,方便实践,现在比较多的也就是S3C2440和S3C6410 资料多,论坛多,学的人多.

如果学LINUX系统编程推荐你一本书 UNIX环境高级编程

打字真累,就这些吧,如果还有问题的话也可以问,要是想系统的学去培训吧!

首先不可以这样编程,其实要完成 多个任务的 *** 作是没有问题的,比如两个任务交替执行

在 同一段程序中就可以了,循环运行就相当于交替,延时程序可以用 中断 加 标志,

在执行程序时 计数计时中断标志 时间到执行 需要的任务,否则跳过执行其它任务。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11799848.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存