初学ucosII(二)

操作系统中的任务概念

任务运行时与 处理器之间的关系

处理器通过两个指针寄存器(PCSP)来与任务代码和任务堆栈建立联系并运行它。

 

运行环境包括了两部分:处理器中的运行环境和内存中的运行环境

 

多任务时任务与处理器之间关系的处理:

在内存中为每个任务创建一个虚拟的处理器(处理器部分的运行环境)

当需要运行某个任务时就把该任务的虚拟处理器复制到实际处理器中

当需要中止当前任务时,则把任务对应的虚拟处理器复制到内存

再把另一个需要运行的任务的虚拟处理器复制到实际处理器中

由操作系统的调度器按某种规则来进行这两个复制工作

也就是说,任务的切换是任务运行环境的切换

 

 那么什么是虚拟的处理器:

任务控制块结构的主要成员

typedefstructos_tcb {

    OS_STK  *OSTCBStkPtr;   //指向任务堆栈栈顶的指针

    ……

    INT8U        OSTCBStat //任务的当前状态标志

    INT8U       OSTCBPrio;   //任务的优先级别 

    ……

} OS_TCB;

 

其实,程序切换的关键是把程序的私有堆栈指针予处理器的堆栈指针SP

实质上系统是通过SP的切换来实现程序的切换的。

 

要建立一个概念:具有控制块的程序才是一个可以被系统所运行的任务。程序代码、私有堆栈、任务控制块是任务的三要件。任务控制块提供了运行环境的存储位置。

 

任务的基本概念

把一个大型任务分解成多个小任务,然后在计算机中通过运行这些小任务,最终达到完成大任务的目的。

μC/OS-II中,与上述那些小任务对应的程序实体就叫做任务实质上是一个线程),μC/OS-II就是一个能对这些小任务的运行进行管理和调度的多任务操作系统。

从应用程序设计的角度来看,μC/OS-II的任务就是一个用户编写的C函数和与之相关联的一些数据结构而构成的一个实体

 

如何获得待运行任务的任务控制块?

 

一个完整的任务应该有如下三部分:

任务代码(程序)
任务的私有堆栈(用以保护运行环境)
任务控制块(提供私有堆栈也是虚拟处理器的位置)

这些都是任务方应该提供的基本信息。

                                                                                                                              (本文转自 任哲 嵌入式实时操作系统μC/OS-II讲座,仅供学习

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值