UC/0S2之基础总结

简介:   堆栈,就是在存储器中按数据“后进先出(LIFO)【类比杯子】”的原则组织的连续存储空间,为了满足任务切换和响应中断保存CPU寄存器中的内容及存储任务私有数据的需要,每个任务都应该配有自己的堆栈,   注意点:堆栈的增长方向是随系统所使用的处理器不同而存在差异,有些处理器要求堆栈的增长方向是向上的,而有些则是要求堆栈的增长方向是向下的; 当cpu启动运行一个任务时,cpu的各寄存器总是需要预置一些初始数据,例如指向任务的指针,程序状态字PSW等;   那么,在系统启动任务时,CPU从何处可以获得这些数据呢?一个最方便的方法是让cpu从这个任务的任务堆栈里获得这些数据/。

  堆栈,就是在存储器中按数据“后进先出(LIFO)【类比杯子】”的原则组织的连续存储空间,为了满足任务切换和响应中断保存CPU寄存器中的内容及存储任务私有数据的需要,每个任务都应该配有自己的堆栈,

  注意点:堆栈的增长方向是随系统所使用的处理器不同而存在差异,有些处理器要求堆栈的增长方向是向上的,而有些则是要求堆栈的增长方向是向下的;

当cpu启动运行一个任务时,cpu的各寄存器总是需要预置一些初始数据,例如指向任务的指针,程序状态字PSW等;

  那么,在系统启动任务时,CPU从何处可以获得这些数据呢?一个最方便的方法是让cpu从这个任务的任务堆栈里获得这些数据/。为此,应用斥呢个需在创建一个新任务时,就必须把在系统启动这个任务时CPU各寄存器所需要的初始数据(任务指针,任务堆栈指针,程序状态字等)事先存放在任务的堆栈中,这样,当任务获得cpu使用权时,就能把堆栈中的初始数据复制到cpu的各寄存器里,从而可使任务顺利地启动并运行;

  任务堆栈的初始化工作应该是由操作系统负责的,

uc/os2用来记录任务的堆栈指针、任务的当前状态、任务的优先级等一些与任务管理相关的属性的表叫做任务控制块;

  任务控制块负责把任务代码和任务堆栈进行关联,从而使任务控制块,任务代码和任务堆栈称为一个整体;并且系统要通过这个任务控制块来感知和管理一个任务,因此,任务控制块就相当于一个任务的身份证,没有任务控制块的任务是不能被系统承认和管理的;

  为了管理系统中的多个任务,uc/os2把系统所有任务的控制块链接成两条链表,并通过这两条链表管理各任务控制块,进而通过任务控制块对任务进行相应的操作;一条是空任务块链表(其中所有任务控制块还没有分配给任务);另一条是任务控制块链表(其中所有任务控制块已经分配给任务);

  多任务os的核心工作就是任务调度。所谓调度,就是通过一个算法在多任务中确定哪个任务来运行,做这项工作的函数就叫做调度器;

UC/OS2进行任务调度的思想是,每时每刻总是让优先级最高的就绪任务处于运行状态,为了保证这一点,它在系统或用户任务调用系统函数及执行中断服务程序结束时,总是调用调度器来确定应该运行的任务并运行它;  

  多任务系统中,令cpu中止当前正在运行的任务转而去运行另一个任务的工作叫做任务切换,而按某种规则进行任务切换的工作叫做任务的调度;

在UC/OS2中,任务调度是由任务调度器来完成的,任务调度器的主要工作有两项:一、在任务就绪表中查找具有最高优先级的就绪任务;二、实现任务的切换;

  UC/OS2中有两种调度器:一种是任务级的调度器,另一种是,中断级的调度器;

下面介绍任务级的调度器:

  调度器把任务切换的工作分为两个步骤:

     第一步是获得待运行任务的TCB指针;Task control  block

     第二步是进行断点数据的切换;

 

  

 

 

相关文章
|
传感器 编解码 移动开发
Camera知识体系架构之驱动&应用&调试学习笔记-以瑞芯微RV1109为例(一)
Camera知识体系架构之驱动&应用&调试学习笔记-以瑞芯微RV1109为例(一)
743 0
|
Web App开发 存储 并行计算
UC CV类模型优化总结
CV模型是业务中常见的模型,但是我们观察到UC集群中的CV类模型还有很大的GPU利用率提升空间。如果不对此进行优化,则需要大量的GPU资源才能才能满足延迟要求。本文主要介绍了CV类模型的优化总结。
|
Web App开发 存储 SQL
微软 Share Point “.NET研究”2010 企业应用解决方案
  SharePoint 2010功能及改进   SharePoint 2010分为两个版本SharePoint Foundation 2010和SharePoint Server 2010,其中SharePoint Foundation 2010是WSS 3.0的升级,而SharePoint Server 2010则是MOSS 2007的升级(文中如无特别说明则SharePoint 2010是二者统称)。
1380 0
|
Web App开发 存储 SQL
一起谈.NET技术,微软 Share Point 2010 企业应用解决方案
  SharePoint 2010功能及改进   SharePoint 2010分为两个版本SharePoint Foundation 2010和SharePoint Server 2010,其中SharePoint Foundation 2010是WSS 3.0的升级,而SharePoint Server 2010则是MOSS 2007的升级(文中如无特别说明则SharePoint 2010是二者统称)。
1410 0
|
Web App开发 消息中间件 存储
uC/OS-II源码分析(二)
在真正开始分析源代码前,先来看使用uC/OS-II的三个例子 1)使用信号量   #define  TASK_STK_SIZE                 512       /* 每个任务堆栈的大小(以字计算)*/#define  N_TASKS                        ...
1658 0
|
Web App开发 调度
uC/OS-II源码分析(五)
每个任务被赋予不同的优先级等级,从0 级到最低优先级OS_LOWEST_PR1O,包括0 和 OS_LOWEST_PR1O 在内。当μC/OS-Ⅱ初始化的时候,最低优先级OS_LOWEST_PR1O 总是被赋给空闲任务idle task 。
723 0
|
Web App开发 调度 消息中间件
uC/OS-II源码分析(三)
首先来了解下实时系统的基本概念: 1) 临界区,共享资源,任务(类似于进程),任务切换,任务调度,可剥夺型内核,可重入函数,动态优先级调度, 2) 如何处理优先级反转问题。这个问题描述如下:有三个任务,优先级1高于2,2高于3,一开始1和2处于挂起,3在运行,3要使用某个共享资源,就P它的互斥信号量,3得到信号量后开始使用这个共享资源。
829 0
|
Web App开发 调度 消息中间件
uC/OS-II源码分析(六)
μC/OS-Ⅱ总是运行进入就绪态任务中优先级最高的那一个。确定哪个任务优先级最高, 下面该哪个任务运行了的工作是由调度器(Scheduler)完成的。任务级的调度是由函数 OSSched()完成的。中断级的调度是由另一个函数OSIntExt() 完成的,这个函数将在以后描 述。
884 0
|
Web App开发 调度 消息中间件
uC/OS-II源码分析(一)
下载地址:http://www.micrium.com/ 它的特点: 1)开源, 2)可移植性,绝大部分代码用C写,硬件相关部分用汇编写, 3可固化, 4)可剪裁,这通过条件编译实现,使用#define语句定义所需要的功能。
917 0
|
Web App开发
uC/OS-II源码分析(四)
内核结构 1,  临界区,OS_ENTER_CRITICAL和OS_EXIT_CRITICAL 为了处理临界区代码,必须关中断,等处理完毕后,再开中断。关中断可以避免其他任务或中断进入临界区代码。uC/OS-II定义了这两个宏来实现,但注意一条:调用uC/OS-II功能函数时,中断应该总是开着的。
939 0