Ucos在任务调度中经常使用的技术为任务就绪表,在之前的文章中使用的例子是低于64个优先级的任务就绪表查找方法,现在ucos将任务扩展到256优先级之后,任务就绪表的查找也做了一定的修改,今天来讲讲 首先我们看任务就绪表的设置过程,当任务创建的时候需要设置一次任务就绪表,所以我们先看oscreatetask,在里面查找到这句代码 err = OS_TCBInit(prio, psp, (OS_STK *)0, 0u, 0u, (void *)0, 0u);//然后初始化tcb任务区 还记得tcb…
之前我们说到,系统在运行的时候会直接依靠任务的优先级来找到任务的控制块从而实现任务的调用切换等功能,那么接下来的问题就是,系统是怎么找到并确定某一个特定的最高优先级任务并确定他的优先级的呢 为了解决这个问题,ucos采用了一种比较巧妙地方式,叫做就绪任务表,定义如下 OS_EXT  OS_PRIO           OSRdyTbl[OS_RDY_TBL_SIZE]; 可以见到,就绪任务表的大小为OS_RDY_TBL_SIZE, OS_RDY_TBL_SIZE展开就是 #define  OS_…
 如果一个数是2的阶次方数,则它的二进制数的首位一般是1,后面全为0.比如8:1000,64:1000000,如果将这个数减1后再作与&运算,则应该全为0,(x&(x-1)==0&&x!=0)则是2的阶次方数.…
在64位的Windows操作系统中,为了兼容32位程序的运行,64位的Windows操作系统采用重定向机制.目的是为了能让32位程序在64位的操作系统不仅能操作关键文件文夹和关键的注册表并且又要避免与64位程序冲突 相关资料请查看32位程序在64位系统下运行的重定向机制 下面是以获取操作系统安装密匙KEY的案例: using System; using System.Collections.Generic; using System.Linq; using System.Text; using…
参考资料 微软注册表英文文档 StackOverflow社区回答 1.注册表位置 64bit系统(Windows Server 2008 R2只有64bit系统)的注册表分32 位注册表项和64位注册表项两部分. 在64bit系统下,通过regedit中查看到指定路径下的注册表项均为64位注册表项,而32位注册表项被重定位到:HKEY_LOCAL_MACHINE\Software\WOW6432Node. 应用程序操作注册表的时候也分32bit方式和64bit方式.运行于64bit系统下的32b…
public int ChecNonkWoW64() { try { ; string subKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"; 8 string[] subkeyNames; 9 RegistryKey software = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64); 10 softwar…
/***********************************************************************************************************                                                uC/OS-II*                                          The Real-Time Kernel  RTOS*****************…
在可剥夺性的内核中,当任务以独占方式使用共享资源的时候,会出现低优先级任务高于高优先级任务运行的情况,这种情况叫做优先级反转,对于实时操作系统而言,这是一场灾难,下面我们来说说优先级反转的典型环境. 我们假设有三个任务a,b,c,a优先级高于b,b优先级高于c,a和c都需要访问一个共享资源s,保护该资源的信号量为互斥信号量, 假设当前任务c申请了信号量访问s,还没有释放,此时任务a开始运行,那么a就会剥夺c的运行而运行a,当a去访问资源s的时候,因为得不到信号量,所以必须释放以等待信号量,任务c…
对于ucos实时操作系统,邵贝贝的那本书已经写得很详细了,我因为之前不深的研究过ucos,所以在这里做一个笔记,写一些个人对该操作系统的理解,仅仅是个人理解,如果有人看到这边随笔有不对的地方,望给我指正.同时,锻炼一下自己组织语言的能力,有时候知道那么个意思,却总也说不出口. ucos内种中有几个人变量比较重要,被贯穿在ucos内核的设计中.这几个变量中有在PCB中的局部变量,也有在整个系统内核设计中的全局变量.下面将分别介绍一下这几个变量. 首先,从OS_PCB中的局部变量讲起,如果去掉OS_…
1.UCOSII 早期版本只支持 64 个任务,但是从 2.80 版本开始,支持任务数提高到 255 个,不过对我们来说一般 64 个任务都是足够多了,一般很难用到这么多个任务. UCOSII 保留了最高4 个优先级和最低 4 个优先级的总共 8 个任务,用于拓展使用,单实际上, UCOSII 一般只占用了最低 2 个优先级,分别用于空闲任务(倒数第一)和统计任务(倒数第二),所以剩下给我们使用的任务最多可达 255-2=253 个 Ucos 的原理本质上也是这样的,当一个任务 A 正在执行的时…