橙斧任务流程而已。

我没问题,只是做个任务而已,有无聊的人,可以和我聊聊,这是送分题_百度知道
我没问题,只是做个任务而已,有无聊的人,可以和我聊聊,这是送分题
提问者采纳
实在闲得无聊,可以看看书吗
其他类似问题
聊聊的相关知识
其他4条回答
我也是做任务
无聊,你傻啊!呆头吧唧!
同做任务。。。。
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁魔兽世界任务达人来_百度知道
魔兽世界任务达人来
求魔兽世界经典任务线。PS:本人以70盗贼D刀以得T6.5和T6都有了,PVP有点打不习惯外域任务全做完所以想做做原来旧世经典任务来坐坐看看剧情感悟下人生问问一些达人知道不一些经典任务吗?谢谢!!
提问者采纳
呵呵 和我差不多如果你比较有毅力的话 不妨去做安其拉开门任务任务第一步叫 唯一的英雄(做完了你就知道为什么叫这个名字 囧)如随便做做的话就多了像上面几个朋友说的 爱与家庭 永志不渝 达隆郡保卫战 什么的都不错不过个人建议是 什么任务都可以做要养成一边做任务一边思考的结果打个比方说 我做完了某某清理怪物的任务 那我就要想 为什么清理这些怪物?威胁到了这里住民的安全,还是需要这些怪物的东西?然后得出结论 最后把这个地区的所有任务结合到一起 哦 我明白了 这个地方的怎么怎么样?有什么有意思的故事...于是 游戏就变成了故事 而不在无聊发呆..
其他类似问题
按默认排序
其他5条回答
爱与家庭系列任务你可以做一遍至于小任务嘛,你如果你是联盟,黑海岸的永志不渝也是不错的一个任务,不过只有这一个任务而已,后面就是交任务看剧情了~~~~其他的嘛,我也忘了,有一段时间没玩了~~~~~
最经典的要数 爱与家庭 啦很感人的 任务在西瘟疫跑向东瘟疫刚过桥左拐 一直照着任务链做就OK了
是描述一个父亲和他的家庭的故事 剧透不多说 自己看任务吧如果你是联盟 在夜色镇 还有藏尸者的任务链东瘟疫飞行点 能接到达隆郡的战斗 60级的经典任务 最后是达隆郡保卫战 当时打很爽的...让你体验下斯巴达勇士的感觉
可以做做 60的大本的 各种门任务
爱与家庭 东瘟疫的经典人物
魔兽世界任务的相关知识
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
初步知道ucos-ii的任务调度大概是怎么回事。“看起来就像是刚发生过中断一样”,还是比较好理解的了,ucos欺骗了mcu,实现任务的调度与多任务的运行,使得优先级最高的任务可以马上被执行,而多任务实际上来说是宏观上的多任务而已,并不是真正实际意义上的并发执行。但在实时性上比原来的单片机前后台系统提高了非常多,很多问题在ucos下也变得非常容易解决。当然了,这只是一个初步的了解,具体的还得以后看到任务调度的代码才能了解详细了。每个任务都会有自己的堆栈,这个堆栈并不是真正的堆栈,而ucos是ram中开出一块地方来存储每个任务调度的一些数据,比如保存PC指针,或是通用寄存器,初始化的时候,ucos会把各个任务的堆栈初始化成看来像刚发生过中断一样。ucos看起来应该很吃ram。每个任务都有各自的控制块,这相当于任务的一个身份证,上面有任务的各个属性。没有身份证的任务ucos是不会去理它的。由各个任务控制块形成的叫做 任务控制块链表。建立任务时,ucos会为每个任务中任务控制块链表中注册,填入该任务的各种属性。任务就绪表的结构,ucos-ii 2.52可以管理64个任务,这64个任务是如何算出来的呢?8*8=64ucos把就绪表分成8个组,每个元素(8bit)的一位0或1状态代表任务的就绪与非就绪状态。变量 OSRdyGrp 与数组 OSRdyTbl[8] ,对应该,比如优先级为30的任务就绪了,那么就是于是有OSRdyTbl[ 30/8 ] 的 (30%8-1)位上置1,同时 OSRdyGrp 上的(30%8-1)位上置1.但是,有一个问题来了,ucos中,同一时刻就绪的任务可能不止一个,但ucos只运行任务优先级最高的那个任务,ucos是如何查找到这个就绪且优先级最高的任务的呢?有一个表格,OSUnMapTal,从这个表格中可以查询到哪个优先级别最高的就绪任务y = OSUnMapTal[ OSRdyGrp ]x = OSUnMapTal[ OSRdyTbl[ y ] ]Prio = y*8 +在这里,确实看到也感受到了算法的奇妙与深奥,光是理解这个,实在是花费了不少的时间。OSUnMapTal是怎么来的呢?这个表的每一个元素的数值,代表的,其实就是0-255中的每一个的最低位为1的位置,说得有点绕口,可能会一个小程序表达会更清楚一点unsigned char OSUnMapTal[256];unsigned char i,j;for ( i = 0; i & 256; i++ ){& & for ( j = 0; j & 8; j++ )& & {& & & & if ( i & 0x01 )& & & & {& & & & & & OSUnMapTal[ i ] =& & & & & && & & & }& & } &&}ucos任务级调度器的的函数名叫 OSSched ---- 该函数的功能主要是查询就绪的最高优先级的任务,然后把任务控制块的指针切换到要运行的任务的。通过函数OSSchedLock()和OSSchedUnLock()可以给调度器上锁和解锁,这两个函数应该成对使用。初步知道ucos-ii的任务调度大概是怎么回事。“看起来就像是刚发生过中断一样”,还是比较好理解的了,ucos欺骗了mcu,实现任务的调度与多任务的运行,使得优先级最高的任务可以马上被执行,而多任务实际上来说是宏观上的多任务而已,并不是真正实际意义上的并发执行。但在实时性上比原来的单片机前后台系统提高了非常多,很多问题在ucos下也变得非常容易解决。当然了,这只是一个初步的了解,具体的还得以后看到任务调度的代码才能了解详细了。每个任务都会有自己的堆栈,这个堆栈并不是真正的堆栈,而ucos是ram中开出一块地方来存储每个任务调度的一些数据,比如保存PC指针,或是通用寄存器,初始化的时候,ucos会把各个任务的堆栈初始化成看来像刚发生过中断一样。ucos看起来应该很吃ram。每个任务都有各自的控制块,这相当于任务的一个身份证,上面有任务的各个属性。没有身份证的任务ucos是不会去理它的。由各个任务控制块形成的叫做 任务控制块链表。建立任务时,ucos会为每个任务中任务控制块链表中注册,填入该任务的各种属性。任务就绪表的结构,ucos-ii 2.52可以管理64个任务,这64个任务是如何算出来的呢?8*8=64ucos把就绪表分成8个组,每个元素(8bit)的一位0或1状态代表任务的就绪与非就绪状态。变量 OSRdyGrp 与数组 OSRdyTbl[8] ,对应该,比如优先级为30的任务就绪了,那么就是于是有OSRdyTbl[ 30/8 ] 的 (30%8-1)位上置1,同时 OSRdyGrp 上的(30%8-1)位上置1.但是,有一个问题来了,ucos中,同一时刻就绪的任务可能不止一个,但ucos只运行任务优先级最高的那个任务,ucos是如何查找到这个就绪且优先级最高的任务的呢?有一个表格,OSUnMapTal,从这个表格中可以查询到哪个优先级别最高的就绪任务y = OSUnMapTal[ OSRdyGrp ]x = OSUnMapTal[ OSRdyTbl[ y ] ]Prio = y*8 +在这里,确实看到也感受到了算法的奇妙与深奥,光是理解这个,实在是花费了不少的时间。ucos任务级调度器的的函数名叫 OSSched ---- 该函数的功能主要是查询就绪的最高优先级的任务,然后把任务控制块的指针切换到要运行的任务的。通过函数OSSchedLock()和OSSchedUnLock()可以给调度器上锁和解锁,这两个函数应该成对使用。初步知道ucos-ii的任务调度大概是怎么回事。“看起来就像是刚发生过中断一样”,还是比较好理解的了,ucos欺骗了mcu,实现任务的调度与多任务的运行,使得优先级最高的任务可以马上被执行,而多任务实际上来说是宏观上的多任务而已,并不是真正实际意义上的并发执行。但在实时性上比原来的单片机前后台系统提高了非常多,很多问题在ucos下也变得非常容易解决。当然了,这只是一个初步的了解,具体的还得以后看到任务调度的代码才能了解详细了。每个任务都会有自己的堆栈,这个堆栈并不是真正的堆栈,而ucos是ram中开出一块地方来存储每个任务调度的一些数据,比如保存PC指针,或是通用寄存器,初始化的时候,ucos会把各个任务的堆栈初始化成看来像刚发生过中断一样。ucos看起来应该很吃ram。每个任务都有各自的控制块,这相当于任务的一个身份证,上面有任务的各个属性。没有身份证的任务ucos是不会去理它的。由各个任务控制块形成的叫做 任务控制块链表。建立任务时,ucos会为每个任务中任务控制块链表中注册,填入该任务的各种属性。任务就绪表的结构,ucos-ii 2.52可以管理64个任务,这64个任务是如何算出来的呢?8*8=64ucos把就绪表分成8个组,每个元素(8bit)的一位0或1状态代表任务的就绪与非就绪状态。变量 OSRdyGrp 与数组 OSRdyTbl[8] ,对应该,比如优先级为30的任务就绪了,那么就是于是有OSRdyTbl[ 30/8 ] 的 (30%8-1)位上置1,同时 OSRdyGrp 上的(30%8-1)位上置1.但是,有一个问题来了,ucos中,同一时刻就绪的任务可能不止一个,但ucos只运行任务优先级最高的那个任务,ucos是如何查找到这个就绪且优先级最高的任务的呢?有一个表格,OSUnMapTal,从这个表格中可以查询到哪个优先级别最高的就绪任务y = OSUnMapTal[ OSRdyGrp ]x = OSUnMapTal[ OSRdyTbl[ y ] ]Prio = y*8 +在这里,确实看到也感受到了算法的奇妙与深奥,光是理解这个,实在是花费了不少的时间。OSUnMapTal是怎么来的呢?这个表的每一个元素的数值,代表的,其实就是0-255中的每一个的最低位为1的位置,说得有点绕口,可能会一个小程序表达会更清楚一点unsigned char OSUnMapTal[256];unsigned char i,j;for ( i = 0; i & 256; i++ ){& & for ( j = 0; j & 8; j++ )& & {& & & & if ( i & 0x01 )& & & & {& & & & & & OSUnMapTal[ i ] =& & & & & && & & & }& & } &&}ucos任务级调度器的的函数名叫 OSSched ---- 该函数的功能主要是查询就绪的最高优先级的任务,然后把任务控制块的指针切换到要运行的任务的。通过函数OSSchedLock()和OSSchedUnLock()可以给调度器上锁和解锁,这两个函数应该成对使用。初步知道ucos-ii的任务调度大概是怎么回事。“看起来就像是刚发生过中断一样”,还是比较好理解的了,ucos欺骗了mcu,实现任务的调度与多任务的运行,使得优先级最高的任务可以马上被执行,而多任务实际上来说是宏观上的多任务而已,并不是真正实际意义上的并发执行。但在实时性上比原来的单片机前后台系统提高了非常多,很多问题在ucos下也变得非常容易解决。当然了,这只是一个初步的了解,具体的还得以后看到任务调度的代码才能了解详细了。每个任务都会有自己的堆栈,这个堆栈并不是真正的堆栈,而ucos是ram中开出一块地方来存储每个任务调度的一些数据,比如保存PC指针,或是通用寄存器,初始化的时候,ucos会把各个任务的堆栈初始化成看来像刚发生过中断一样。ucos看起来应该很吃ram。每个任务都有各自的控制块,这相当于任务的一个身份证,上面有任务的各个属性。没有身份证的任务ucos是不会去理它的。由各个任务控制块形成的叫做 任务控制块链表。建立任务时,ucos会为每个任务中任务控制块链表中注册,填入该任务的各种属性。任务就绪表的结构,ucos-ii 2.52可以管理64个任务,这64个任务是如何算出来的呢?8*8=64ucos把就绪表分成8个组,每个元素(8bit)的一位0或1状态代表任务的就绪与非就绪状态。变量 OSRdyGrp 与数组 OSRdyTbl[8] ,对应该,比如优先级为30的任务就绪了,那么就是于是有OSRdyTbl[ 30/8 ] 的 (30%8-1)位上置1,同时 OSRdyGrp 上的(30%8-1)位上置1.但是,有一个问题来了,ucos中,同一时刻就绪的任务可能不止一个,但ucos只运行任务优先级最高的那个任务,ucos是如何查找到这个就绪且优先级最高的任务的呢?有一个表格,OSUnMapTal,从这个表格中可以查询到哪个优先级别最高的就绪任务y = OSUnMapTal[ OSRdyGrp ]x = OSUnMapTal[ OSRdyTbl[ y ] ]Prio = y*8 +在这里,确实看到也感受到了算法的奇妙与深奥,光是理解这个,实在是花费了不少的时间。ucos任务级调度器的的函数名叫 OSSched ---- 该函数的功能主要是查询就绪的最高优先级的任务,然后把任务控制块的指针切换到要运行的任务的。通过函数OSSchedLock()和OSSchedUnLock()可以给调度器上锁和解锁,这两个函数应该成对使用。初步知道ucos-ii的任务调度大概是怎么回事。“看起来就像是刚发生过中断一样”,还是比较好理解的了,ucos欺骗了mcu,实现任务的调度与多任务的运行,使得优先级最高的任务可以马上被执行,而多任务实际上来说是宏观上的多任务而已,并不是真正实际意义上的并发执行。但在实时性上比原来的单片机前后台系统提高了非常多,很多问题在ucos下也变得非常容易解决。当然了,这只是一个初步的了解,具体的还得以后看到任务调度的代码才能了解详细了。每个任务都会有自己的堆栈,这个堆栈并不是真正的堆栈,而ucos是ram中开出一块地方来存储每个任务调度的一些数据,比如保存PC指针,或是通用寄存器,初始化的时候,ucos会把各个任务的堆栈初始化成看来像刚发生过中断一样。ucos看起来应该很吃ram。每个任务都有各自的控制块,这相当于任务的一个身份证,上面有任务的各个属性。没有身份证的任务ucos是不会去理它的。由各个任务控制块形成的叫做 任务控制块链表。建立任务时,ucos会为每个任务中任务控制块链表中注册,填入该任务的各种属性。任务就绪表的结构,ucos-ii 2.52可以管理64个任务,这64个任务是如何算出来的呢?8*8=64ucos把就绪表分成8个组,每个元素(8bit)的一位0或1状态代表任务的就绪与非就绪状态。变量 OSRdyGrp 与数组 OSRdyTbl[8] ,对应该,比如优先级为30的任务就绪了,那么就是于是有OSRdyTbl[ 30/8 ] 的 (30%8-1)位上置1,同时 OSRdyGrp 上的(30%8-1)位上置1.但是,有一个问题来了,ucos中,同一时刻就绪的任务可能不止一个,但ucos只运行任务优先级最高的那个任务,ucos是如何查找到这个就绪且优先级最高的任务的呢?有一个表格,OSUnMapTal,从这个表格中可以查询到哪个优先级别最高的就绪任务y = OSUnMapTal[ OSRdyGrp ]x = OSUnMapTal[ OSRdyTbl[ y ] ]Prio = y*8 +在这里,确实看到也感受到了算法的奇妙与深奥,光是理解这个,实在是花费了不少的时间。OSUnMapTal是怎么来的呢?这个表的每一个元素的数值,代表的,其实就是0-255中的每一个的最低位为1的位置,说得有点绕口,可能会一个小程序表达会更清楚一点unsigned char OSUnMapTal[256];unsigned char i,j;for ( i = 0; i & 256; i++ ){& & for ( j = 0; j & 8; j++ )& & {& & & & if ( i & 0x01 )& & & & {& & & & & & OSUnMapTal[ i ] =& & & & & && & & & }& & } &&}ucos任务级调度器的的函数名叫 OSSched ---- 该函数的功能主要是查询就绪的最高优先级的任务,然后把任务控制块的指针切换到要运行的任务的。通过函数OSSchedLock()和OSSchedUnLock()可以给调度器上锁和解锁,这两个函数应该成对使用。初步知道ucos-ii的任务调度大概是怎么回事。“看起来就像是刚发生过中断一样”,还是比较好理解的了,ucos欺骗了mcu,实现任务的调度与多任务的运行,使得优先级最高的任务可以马上被执行,而多任务实际上来说是宏观上的多任务而已,并不是真正实际意义上的并发执行。但在实时性上比原来的单片机前后台系统提高了非常多,很多问题在ucos下也变得非常容易解决。当然了,这只是一个初步的了解,具体的还得以后看到任务调度的代码才能了解详细了。每个任务都会有自己的堆栈,这个堆栈并不是真正的堆栈,而ucos是ram中开出一块地方来存储每个任务调度的一些数据,比如保存PC指针,或是通用寄存器,初始化的时候,ucos会把各个任务的堆栈初始化成看来像刚发生过中断一样。ucos看起来应该很吃ram。每个任务都有各自的控制块,这相当于任务的一个身份证,上面有任务的各个属性。没有身份证的任务ucos是不会去理它的。由各个任务控制块形成的叫做 任务控制块链表。建立任务时,ucos会为每个任务中任务控制块链表中注册,填入该任务的各种属性。任务就绪表的结构,ucos-ii 2.52可以管理64个任务,这64个任务是如何算出来的呢?8*8=64ucos把就绪表分成8个组,每个元素(8bit)的一位0或1状态代表任务的就绪与非就绪状态。变量 OSRdyGrp 与数组 OSRdyTbl[8] ,对应该,比如优先级为30的任务就绪了,那么就是于是有OSRdyTbl[ 30/8 ] 的 (30%8-1)位上置1,同时 OSRdyGrp 上的(30%8-1)位上置1.但是,有一个问题来了,ucos中,同一时刻就绪的任务可能不止一个,但ucos只运行任务优先级最高的那个任务,ucos是如何查找到这个就绪且优先级最高的任务的呢?有一个表格,OSUnMapTal,从这个表格中可以查询到哪个优先级别最高的就绪任务y = OSUnMapTal[ OSRdyGrp ]x = OSUnMapTal[ OSRdyTbl[ y ] ]Prio = y*8 +在这里,确实看到也感受到了算法的奇妙与深奥,光是理解这个,实在是花费了不少的时间。ucos任务级调度器的的函数名叫 OSSched ---- 该函数的功能主要是查询就绪的最高优先级的任务,然后把任务控制块的指针切换到要运行的任务的。通过函数OSSchedLock()和OSSchedUnLock()可以给调度器上锁和解锁,这两个函数应该成对使用。初步知道ucos-ii的任务调度大概是怎么回事。“看起来就像是刚发生过中断一样”,还是比较好理解的了,ucos欺骗了mcu,实现任务的调度与多任务的运行,使得优先级最高的任务可以马上被执行,而多任务实际上来说是宏观上的多任务而已,并不是真正实际意义上的并发执行。但在实时性上比原来的单片机前后台系统提高了非常多,很多问题在ucos下也变得非常容易解决。当然了,这只是一个初步的了解,具体的还得以后看到任务调度的代码才能了解详细了。每个任务都会有自己的堆栈,这个堆栈并不是真正的堆栈,而ucos是ram中开出一块地方来存储每个任务调度的一些数据,比如保存PC指针,或是通用寄存器,初始化的时候,ucos会把各个任务的堆栈初始化成看来像刚发生过中断一样。ucos看起来应该很吃ram。每个任务都有各自的控制块,这相当于任务的一个身份证,上面有任务的各个属性。没有身份证的任务ucos是不会去理它的。由各个任务控制块形成的叫做 任务控制块链表。建立任务时,ucos会为每个任务中任务控制块链表中注册,填入该任务的各种属性。任务就绪表的结构,ucos-ii 2.52可以管理64个任务,这64个任务是如何算出来的呢?8*8=64ucos把就绪表分成8个组,每个元素(8bit)的一位0或1状态代表任务的就绪与非就绪状态。变量 OSRdyGrp 与数组 OSRdyTbl[8] ,对应该,比如优先级为30的任务就绪了,那么就是于是有OSRdyTbl[ 30/8 ] 的 (30%8-1)位上置1,同时 OSRdyGrp 上的(30%8-1)位上置1.但是,有一个问题来了,ucos中,同一时刻就绪的任务可能不止一个,但ucos只运行任务优先级最高的那个任务,ucos是如何查找到这个就绪且优先级最高的任务的呢?有一个表格,OSUnMapTal,从这个表格中可以查询到哪个优先级别最高的就绪任务y = OSUnMapTal[ OSRdyGrp ]x = OSUnMapTal[ OSRdyTbl[ y ] ]Prio = y*8 +在这里,确实看到也感受到了算法的奇妙与深奥,光是理解这个,实在是花费了不少的时间。OSUnMapTal是怎么来的呢?这个表的每一个元素的数值,代表的,其实就是0-255中的每一个的最低位为1的位置,说得有点绕口,可能会一个小程序表达会更清楚一点unsigned char OSUnMapTal[256];unsigned char i,j;for ( i = 0; i & 256; i++ ){& & for ( j = 0; j & 8; j++ )& & {& & & & if ( i & 0x01 )& & & & {& & & & & & OSUnMapTal[ i ] =& & & & & && & & & }& & } &&}ucos任务级调度器的的函数名叫 OSSched ---- 该函数的功能主要是查询就绪的最高优先级的任务,然后把任务控制块的指针切换到要运行的任务的。通过函数OSSchedLock()和OSSchedUnLock()可以给调度器上锁和解锁,这两个函数应该成对使用。初步知道ucos-ii的任务调度大概是怎么回事。“看起来就像是刚发生过中断一样”,还是比较好理解的了,ucos欺骗了mcu,实现任务的调度与多任务的运行,使得优先级最高的任务可以马上被执行,而多任务实际上来说是宏观上的多任务而已,并不是真正实际意义上的并发执行。但在实时性上比原来的单片机前后台系统提高了非常多,很多问题在ucos下也变得非常容易解决。当然了,这只是一个初步的了解,具体的还得以后看到任务调度的代码才能了解详细了。每个任务都会有自己的堆栈,这个堆栈并不是真正的堆栈,而ucos是ram中开出一块地方来存储每个任务调度的一些数据,比如保存PC指针,或是通用寄存器,初始化的时候,ucos会把各个任务的堆栈初始化成看来像刚发生过中断一样。ucos看起来应该很吃ram。每个任务都有各自的控制块,这相当于任务的一个身份证,上面有任务的各个属性。没有身份证的任务ucos是不会去理它的。由各个任务控制块形成的叫做 任务控制块链表。建立任务时,ucos会为每个任务中任务控制块链表中注册,填入该任务的各种属性。任务就绪表的结构,ucos-ii 2.52可以管理64个任务,这64个任务是如何算出来的呢?8*8=64ucos把就绪表分成8个组,每个元素(8bit)的一位0或1状态代表任务的就绪与非就绪状态。变量 OSRdyGrp 与数组 OSRdyTbl[8] ,对应该,比如优先级为30的任务就绪了,那么就是于是有OSRdyTbl[ 30/8 ] 的 (30%8-1)位上置1,同时 OSRdyGrp 上的(30%8-1)位上置1.但是,有一个问题来了,ucos中,同一时刻就绪的任务可能不止一个,但ucos只运行任务优先级最高的那个任务,ucos是如何查找到这个就绪且优先级最高的任务的呢?有一个表格,OSUnMapTal,从这个表格中可以查询到哪个优先级别最高的就绪任务y = OSUnMapTal[ OSRdyGrp ]x = OSUnMapTal[ OSRdyTbl[ y ] ]Prio = y*8 +在这里,确实看到也感受到了算法的奇妙与深奥,光是理解这个,实在是花费了不少的时间。ucos任务级调度器的的函数名叫 OSSched ---- 该函数的功能主要是查询就绪的最高优先级的任务,然后把任务控制块的指针切换到要运行的任务的。通过函数OSSchedLock()和OSSchedUnLock()可以给调度器上锁和解锁,这两个函数应该成对使用。初步知道ucos-ii的任务调度大概是怎么回事。“看起来就像是刚发生过中断一样”,还是比较好理解的了,ucos欺骗了mcu,实现任务的调度与多任务的运行,使得优先级最高的任务可以马上被执行,而多任务实际上来说是宏观上的多任务而已,并不是真正实际意义上的并发执行。但在实时性上比原来的单片机前后台系统提高了非常多,很多问题在ucos下也变得非常容易解决。当然了,这只是一个初步的了解,具体的还得以后看到任务调度的代码才能了解详细了。每个任务都会有自己的堆栈,这个堆栈并不是真正的堆栈,而ucos是ram中开出一块地方来存储每个任务调度的一些数据,比如保存PC指针,或是通用寄存器,初始化的时候,ucos会把各个任务的堆栈初始化成看来像刚发生过中断一样。ucos看起来应该很吃ram。每个任务都有各自的控制块,这相当于任务的一个身份证,上面有任务的各个属性。没有身份证的任务ucos是不会去理它的。由各个任务控制块形成的叫做 任务控制块链表。建立任务时,ucos会为每个任务中任务控制块链表中注册,填入该任务的各种属性。任务就绪表的结构,ucos-ii 2.52可以管理64个任务,这64个任务是如何算出来的呢?8*8=64ucos把就绪表分成8个组,每个元素(8bit)的一位0或1状态代表任务的就绪与非就绪状态。变量 OSRdyGrp 与数组 OSRdyTbl[8] ,对应该,比如优先级为30的任务就绪了,那么就是于是有OSRdyTbl[ 30/8 ] 的 (30%8-1)位上置1,同时 OSRdyGrp 上的(30%8-1)位上置1.但是,有一个问题来了,ucos中,同一时刻就绪的任务可能不止一个,但ucos只运行任务优先级最高的那个任务,ucos是如何查找到这个就绪且优先级最高的任务的呢?有一个表格,OSUnMapTal,从这个表格中可以查询到哪个优先级别最高的就绪任务y = OSUnMapTal[ OSRdyGrp ]x = OSUnMapTal[ OSRdyTbl[ y ] ]Prio = y*8 +在这里,确实看到也感受到了算法的奇妙与深奥,光是理解这个,实在是花费了不少的时间。OSUnMapTal是怎么来的呢?这个表的每一个元素的数值,代表的,其实就是0-255中的每一个的最低位为1的位置,说得有点绕口,可能会一个小程序表达会更清楚一点unsigned char OSUnMapTal[256];unsigned char i,j;for ( i = 0; i & 256; i++ ){& & for ( j = 0; j & 8; j++ )& & {& & & & if ( i & 0x01 )& & & & {& & & & & & OSUnMapTal[ i ] =& & & & & && & & & }& & } &&}ucos任务级调度器的的函数名叫 OSSched ---- 该函数的功能主要是查询就绪的最高优先级的任务,然后把任务控制块的指针切换到要运行的任务的。通过函数OSSchedLock()和OSSchedUnLock()可以给调度器上锁和解锁,这两个函数应该成对使用。初步知道ucos-ii的任务调度大概是怎么回事。“看起来就像是刚发生过中断一样”,还是比较好理解的了,ucos欺骗了mcu,实现任务的调度与多任务的运行,使得优先级最高的任务可以马上被执行,而多任务实际上来说是宏观上的多任务而已,并不是真正实际意义上的并发执行。但在实时性上比原来的单片机前后台系统提高了非常多,很多问题在ucos下也变得非常容易解决。当然了,这只是一个初步的了解,具体的还得以后看到任务调度的代码才能了解详细了。每个任务都会有自己的堆栈,这个堆栈并不是真正的堆栈,而ucos是ram中开出一块地方来存储每个任务调度的一些数据,比如保存PC指针,或是通用寄存器,初始化的时候,ucos会把各个任务的堆栈初始化成看来像刚发生过中断一样。ucos看起来应该很吃ram。每个任务都有各自的控制块,这相当于任务的一个身份证,上面有任务的各个属性。没有身份证的任务ucos是不会去理它的。由各个任务控制块形成的叫做 任务控制块链表。建立任务时,ucos会为每个任务中任务控制块链表中注册,填入该任务的各种属性。任务就绪表的结构,ucos-ii 2.52可以管理64个任务,这64个任务是如何算出来的呢?8*8=64ucos把就绪表分成8个组,每个元素(8bit)的一位0或1状态代表任务的就绪与非就绪状态。变量 OSRdyGrp 与数组 OSRdyTbl[8] ,对应该,比如优先级为30的任务就绪了,那么就是于是有OSRdyTbl[ 30/8 ] 的 (30%8-1)位上置1,同时 OSRdyGrp 上的(30%8-1)位上置1.但是,有一个问题来了,ucos中,同一时刻就绪的任务可能不止一个,但ucos只运行任务优先级最高的那个任务,ucos是如何查找到这个就绪且优先级最高的任务的呢?有一个表格,OSUnMapTal,从这个表格中可以查询到哪个优先级别最高的就绪任务y = OSUnMapTal[ OSRdyGrp ]x = OSUnMapTal[ OSRdyTbl[ y ] ]Prio = y*8 +在这里,确实看到也感受到了算法的奇妙与深奥,光是理解这个,实在是花费了不少的时间。ucos任务级调度器的的函数名叫 OSSched ---- 该函数的功能主要是查询就绪的最高优先级的任务,然后把任务控制块的指针切换到要运行的任务的。通过函数OSSchedLock()和OSSchedUnLock()可以给调度器上锁和解锁,这两个函数应该成对使用。初步知道ucos-ii的任务调度大概是怎么回事。“看起来就像是刚发生过中断一样”,还是比较好理解的了,ucos欺骗了mcu,实现任务的调度与多任务的运行,使得优先级最高的任务可以马上被执行,而多任务实际上来说是宏观上的多任务而已,并不是真正实际意义上的并发执行。但在实时性上比原来的单片机前后台系统提高了非常多,很多问题在ucos下也变得非常容易解决。当然了,这只是一个初步的了解,具体的还得以后看到任务调度的代码才能了解详细了。每个任务都会有自己的堆栈,这个堆栈并不是真正的堆栈,而ucos是ram中开出一块地方来存储每个任务调度的一些数据,比如保存PC指针,或是通用寄存器,初始化的时候,ucos会把各个任务的堆栈初始化成看来像刚发生过中断一样。ucos看起来应该很吃ram。每个任务都有各自的控制块,这相当于任务的一个身份证,上面有任务的各个属性。没有身份证的任务ucos是不会去理它的。由各个任务控制块形成的叫做 任务控制块链表。建立任务时,ucos会为每个任务中任务控制块链表中注册,填入该任务的各种属性。任务就绪表的结构,ucos-ii 2.52可以管理64个任务,这64个任务是如何算出来的呢?8*8=64ucos把就绪表分成8个组,每个元素(8bit)的一位0或1状态代表任务的就绪与非就绪状态。变量 OSRdyGrp 与数组 OSRdyTbl[8] ,对应该,比如优先级为30的任务就绪了,那么就是于是有OSRdyTbl[ 30/8 ] 的 (30%8-1)位上置1,同时 OSRdyGrp 上的(30%8-1)位上置1.但是,有一个问题来了,ucos中,同一时刻就绪的任务可能不止一个,但ucos只运行任务优先级最高的那个任务,ucos是如何查找到这个就绪且优先级最高的任务的呢?有一个表格,OSUnMapTal,从这个表格中可以查询到哪个优先级别最高的就绪任务y = OSUnMapTal[ OSRdyGrp ]x = OSUnMapTal[ OSRdyTbl[ y ] ]Prio = y*8 +在这里,确实看到也感受到了算法的奇妙与深奥,光是理解这个,实在是花费了不少的时间。OSUnMapTal是怎么来的呢?这个表的每一个元素的数值,代表的,其实就是0-255中的每一个的最低位为1的位置,说得有点绕口,可能会一个小程序表达会更清楚一点unsigned char OSUnMapTal[256];unsigned char i,j;for ( i = 0; i & 256; i++ ){& & for ( j = 0; j & 8; j++ )& & {& & & & if ( i & 0x01 )& & & & {& & & & & & OSUnMapTal[ i ] =& & & & & && & & & }& & } &&}ucos任务级调度器的的函数名叫 OSSched ---- 该函数的功能主要是查询就绪的最高优先级的任务,然后把任务控制块的指针切换到要运行的任务的。通过函数OSSchedLock()和OSSchedUnLock()可以给调度器上锁和解锁,这两个函数应该成对使用。初步知道ucos-ii的任务调度大概是怎么回事。“看起来就像是刚发生过中断一样”,还是比较好理解的了,ucos欺骗了mcu,实现任务的调度与多任务的运行,使得优先级最高的任务可以马上被执行,而多任务实际上来说是宏观上的多任务而已,并不是真正实际意义上的并发执行。但在实时性上比原来的单片机前后台系统提高了非常多,很多问题在ucos下也变得非常容易解决。当然了,这只是一个初步的了解,具体的还得以后看到任务调度的代码才能了解详细了。每个任务都会有自己的堆栈,这个堆栈并不是真正的堆栈,而ucos是ram中开出一块地方来存储每个任务调度的一些数据,比如保存PC指针,或是通用寄存器,初始化的时候,ucos会把各个任务的堆栈初始化成看来像刚发生过中断一样。ucos看起来应该很吃ram。每个任务都有各自的控制块,这相当于任务的一个身份证,上面有任务的各个属性。没有身份证的任务ucos是不会去理它的。由各个任务控制块形成的叫做 任务控制块链表。建立任务时,ucos会为每个任务中任务控制块链表中注册,填入该任务的各种属性。任务就绪表的结构,ucos-ii 2.52可以管理64个任务,这64个任务是如何算出来的呢?8*8=64ucos把就绪表分成8个组,每个元素(8bit)的一位0或1状态代表任务的就绪与非就绪状态。变量 OSRdyGrp 与数组 OSRdyTbl[8] ,对应该,比如优先级为30的任务就绪了,那么就是于是有OSRdyTbl[ 30/8 ] 的 (30%8-1)位上置1,同时 OSRdyGrp 上的(30%8-1)位上置1.但是,有一个问题来了,ucos中,同一时刻就绪的任务可能不止一个,但ucos只运行任务优先级最高的那个任务,ucos是如何查找到这个就绪且优先级最高的任务的呢?有一个表格,OSUnMapTal,从这个表格中可以查询到哪个优先级别最高的就绪任务y = OSUnMapTal[ OSRdyGrp ]x = OSUnMapTal[ OSRdyTbl[ y ] ]Prio = y*8 +在这里,确实看到也感受到了算法的奇妙与深奥,光是理解这个,实在是花费了不少的时间。ucos任务级调度器的的函数名叫 OSSched ---- 该函数的功能主要是查询就绪的最高优先级的任务,然后把任务控制块的指针切换到要运行的任务的。通过函数OSSchedLock()和OSSchedUnLock()可以给调度器上锁和解锁,这两个函数应该成对使用。
阅读(1752)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'uCos-II学习-------任务调度(1)',
blogAbstract:'初步知道ucos-ii的任务调度大概是怎么回事。“看起来就像是刚发生过中断一样”,还是比较好理解的了,ucos欺骗了mcu,实现任务的调度与多任务的运行,使得优先级最高的任务可以马上被执行,而多任务实际上来说是宏观上的多任务而已,并不是真正实际意义上的并发执行。但在实时性上比原来的单片机前后台系统提高了非常多,很多问',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:9,
publishTime:6,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:true,
hostIntro:'',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}

我要回帖

更多关于 橙杖任务流程 的文章

 

随机推荐