写在前面:杂七杂八的看原文,直接上算法研究
当 OSRdyTbl[0]中的任何一位是 1 时,OSRdyGrp 的第 0 位置 1,
当 OSRdyTbl[1]中的任何一位是 1 时,OSRdyGrp 的第 1 位置 1,
当 OSRdyTbl[2]中的任何一位是 1 时,OSRdyGrp 的第 2 位置 1,
当 OSRdyTbl[3]中的任何一位是 1 时,OSRdyGrp 的第 3 位置 1,
当 OSRdyTbl[4]中的任何一位是 1 时,OSRdyGrp 的第 4 位置 1,
当 OSRdyTbl[5]中的任何一位是 1 时,OSRdyGrp 的第 5 位置 1,
当 OSRdyTbl[6]中的任何一位是 1 时,OSRdyGrp 的第 6 位置 1,
当 OSRdyTbl[7]中的任何一位是 1 时,OSRdyGrp 的第 7 位置 1,
分析:
ucos限制任务只有64个,任务号也就是任务的优先级,64二进制为00111111;yyy是任务在OSRdyGrp中的位置,xxx是任务在OSRdyTbl[]中的位置;
OSRdyGrp
|= OSMapTbl[prio >> 3];
位运算时与1或的结果是1;与0或的结果是其本身;
假设prio是25;100001101;yyy为001
OSRdyGrp =OSRdyGrp
| OSMapTbl[prio
>> 3];
成功的讲OSRdyGrp的第一位置1,其他位保存不变;
OSRdyTbl[prio >> 3] |= OSMapTbl[prio & 0x07];
位运算时与0与的结果是0;与1与的结果是其本身;
成功的将OSRdyTbl[prio >> 3]也就是OSRdyTbl[1]的第5(101)位置1,其他不变;
表 T3.1 OSMapTbl[]的值 自行查阅;
程序清单 L3.7 找出进入就绪态的优先级最高的任务
y = OSUnMapTbl[OSRdyGrp];
x = OSUnMapTbl[OSRdyTbl[y]];
3-10
prio = (y << 3) + x;
例如, 如果 OSRdyGrp 的值为二进制 01101000, 查 OSUnMapTbl[OSRdyGrp]得到的值是 3,
它相应于 OSRdyGrp 中的第 3 位 bit3,这里假设最右边的一位是第 0 位 bit0。类似地,如果
OSRdyTbl[3]的值是二进制 11100100,则 OSUnMapTbl[OSRdyTbc[3]]的值是 2,即第 2 位。于
是任务的优先级 Prio 就等于 26(3*8+2) 。利用这个优先级的值。查任务控制块优先级表
OSTCBPrioTbl[],得到指向相应任务的任务控制块 OS_TCB 的工作就完成了。
跪了啊,减少了多少运算量啊。
分享到:
相关推荐
这个源码,是在vc上运行的,能更好的理解uc/os-ii,本人用这个源码做了很多的移植工作哈,包括tlsf算法等,而且非常强大的一个源码。值得拥有!
上学期课程设计的报告,耗时9天,期末92分满绩点通过,里面的内容包含进程调度算法fcfs、ucos2操作系统概述、算法测试、修改后的代码及运行结果截图、实验总结、致谢、参考文献等等,内容详尽。该实验报告仅供参考,...
本文首先对嵌入式系统和嵌入式实时操作系统的发展进行了介绍,并详细介绍了本设计所用的嵌入式实时操作系统UC/OS-II以及在基于ARM Cortex-M3系列最高配置微处理器STM32F103ZE上的移植过程,该操作系统是实现嵌入式UC...
μC/OSII任务就绪表的设置、清除、查找算法,是高效、跨平台的;但是向ARM新架构移植时,没有把ARM的性能完全发挥出来。将就绪表操作算法用汇编指令改写,有助于提高效率,节省存储空间,并扩展μC/OSII支持的最大任务...
通过对μC/OSII源代码的分析与描述,讲述了多任务实时的基本概念、竞争与调度算法、任务间同步与通信、存储与定时的管理以及如何处理优先级反转问题;介绍如何将μC/OSII移植到不同CPU上,如何调试移植代码.本书可用...
。在实现TCP/IP 协议中,这种内核调度方法对Internet 服务进程...本文分析了UC/OS-II 和Linux 操作系统内核任务调度算法,在此基础上提出了一种改进UC/OS-II 内核的 方法,使其更适合于在嵌入式中实现Internet 服务。
通过对μC/OSII源代码的分析与描述,讲述了多任务实时的基本概念、竞争与调度算法、任务间同步与通信、存储与定时的管理以及如何处理优先级反转问题;介绍如何将μC/OSII移植到不同CPU上,如何调试移植代码。在所附...
详细的描述了uC/OS-III操作系统在微内核嵌入式处理器上的任务调度算法,优先级调度的理论分析
通过对μC/OSII源代码的分析与描述,讲述了多任务实时的基本概念、竞争与调度算法、任务间同步与通信、存储与定时的管理以及如何处理优先级反转问题;介绍如何将μC/OSII移植到不同CPU上,如何调试移植代码.本书可用...
Cortex-M3推出时,笔者就认定它是单片机过渡到ARM的有力工具,其小存储量使得它更适合用小型实时系统。在学习μC/OS-Ⅱ的过程中,发现其就绪表操作算法经过改动或许更好。
uc-os系统概述 uc-os系统概述 uc-os系统概述 uc-os系统概述
摘 要:针对传统的应急电源控制系统设计的复杂性和运行不可靠性,本文介绍了一种采用全数字控制方法,用ARM+uC/OS-II设计并实现应急电源的控制系统。实验证明:据此设计的控制系统控制精确、快速、波形失真度小、...
μC/OS-II中优先级最高的就绪任务选取算法的分析与实现,李晓翠,杨文嘉,在μC/OS-II嵌入式实时操作系统中,常常涉及到多个任务间的调度问题,任务调度的原则是优先执行优先级最高的就绪任务。本文阐述并实
通过对μC/OSII源代码的分析与描述,讲述了多任务实时的基本概念、竞争与调度算法、任务间同步与通信、存储与定时的管理以及如何处理优先级反转问题;介绍如何将μC/OSII移植到不同CPU上,如何调试移植代码。在所附...
针对现有μC/OSII内存管理方案分配内存不灵活、可靠性不高的特点,提出一种适用于μC/OSII增强内存管理可靠性的方案。
通过对μC/OSII源代码的分析与描述,讲述了多任务实时的基本概念、竞争与调度算法、任务间同步与通信、存储与定时的管理以及如何处理优先级反转问题;介绍如何将μC/OSII移植到不同CPU上,如何调试移植代码。在所附...
通过对μC/OSII源代码的分析与描述,讲述了多任务实时的基本概念、竞争与调度算法、任务间同步与通信、存储与定时的管理以及如何处理优先级反转问题;介绍如何将μC/OSII移植到不同CPU上,如何调试移植代码。在所附...
通过对μC/OSII源代码的分析与描述,讲述了多任务实时的基本概念、竞争与调度算法、任务间同步与通信、存储与定时的管理以及如何处理优先级反转问题;介绍如何将μC/OSII移植到不同CPU上,如何调试移植代码。在所附...
UC_OS-Ⅱ中优先级抢占的时间片调度算法的实现
子带编码的理论根据是听觉系统的掩蔽特性,主要是利用频域掩蔽特性,编码过程中保留信号带宽,但是却扔掉被掩蔽的信号,因此编码后还原(解码、重构)的声音信号与编码前的声音信号不相同,但人的听觉系统很难分辨出...