2、操作系统的任务和时钟节拍

1、 任务,通常指交派的工作,担负的责任。在现代计算机中,“任务”也是其基本工作单位的专业术语。

在设计一个较为复杂的应用程序时,也通常把一个大型的任务分解成多个小任务,然后在计算机中通过运行小任务,最终完成大任务的目的。由于这种方法可以使系统并发的运行多个任务,从而提高处理器的利用率,加快程序的执行速度。

 

2、多任务系统

(1)简单的说就是用一个处理器,并发(不是同时)的运行多个程序的计算机管理系统

(2)并发:由同一个处理器轮换地 运行多个程序。或者说是由多个 程序轮班地占用处理器这个资源。 且在占用这个资源期间,并不一 定能够把程序运行完毕。

 

3、μC/OS-II中 的任务管理

(1)任务控制块

一个任务的任务控制块的主要作用就是保存该任务的虚拟处理器的堆栈指针寄存器SP。其实,随着任务管理工作的复杂性的提高,它还应该保存一些其他信息。

a.  识别一个人任务最直接的方法就是为每一个任务起一个名称,由于uC/OS-II中的任务都有一个唯一的优先级别,因此            uC/OS-II是用任务的优先级来作为任务的标识的。所以任务控制块还要来保存任务的优先级别。

b.  另外,一个任务在不同时刻还处于不同的状态,显然,记录了任务状态的数据也应该保存到任务控制块中。

c.  因此,系统必须为每个任务创建一个保存与该任务有关的相关信息的数据结构,这个数据结构叫做该任务的任务控制块           (TCB)。

 

(2)任务在内存中的结构

 

(3)用户任务代码的一般结构

(4)系统提供的空闲任务

a.  在多任务系统运行时,系统经常会在某个时间内无用户任务课运行而处于所谓的空闲状态,为了使CPU在没有用户任务可执      行的时候有事可做,uc/OS-II提供了一个叫做空闲任务OSTaskldle()的系统任务。

b.  μC/OS-II规定,一个用户应用程序必须使用这个空闲任务,而且这个任务是不能用软件来删除的 

(5) 统计任务

 μC/OS-II提供的另一个系统任务是统计任务OSTaskStat( )。这个统计任务每秒计算一次CPU在单位时间内被使用的时间,并把计算结果以百分比的形式存放在变量OSCPUsage中,以便应用程序通过访问它来了解CPU的     利用率,所以这个系统任务OSTaskStat( )叫做统计任务

(6) 任务的优先级别

a.   uC/OS_II把任务的优先权分为64个优先级别,每一个级别都用一个数字来表示。数字0表示任务的优先级别最高,数字越       大则表示任务的优先级别越低。

b.   用户可以根据应用程序的需要,在文件OS_CFG.H中通过给表示最低优先级别的常熟OS_LOWEST_PRIO赋值的方法,来      说明应用程序中任务优先级别的数目。该常数一旦被定义,则意味着系统中可供使用的优先级别为0,1,2....,                    OS_LOWEST_PRIO,共OS_LOWEST_PRIO+1个。

c.  固定地,系统总是把最低优先级别OS_LOWEST_PRIO自动赋给空闲任务。如果应用程序中还使用了统计任务,系统则会把      优先级别OS_LOWEST_PRIO-1自动赋给统计任务,因此用户任务可以使用的优先级别是:0,1,2…                             OS_LOWEST_PRIO-2,共OS_LOWEST_PRIO-1个 

(7)任务堆栈

a.

 

b.

c.

d.

 

(8)任务堆栈的初始化

a.

b.

c.

d.

e.

(9)任务就绪表及任务调度

a.

b.

c.

d

(10)UCOS的系统时钟

a.

b.

c.

d.

 

转载于:https://www.cnblogs.com/STM32bo/p/4591469.html

以下是基于UCOSIII操作系统时钟节拍实验方法步骤: 1. 准备开发板和编程工具:需要一块支持UCOSIII操作系统的开发板,以及支持C语言开发的编程工具,如Keil MDK或IAR Embedded Workbench。 2. 创建新工程:在编程工具中创建一个新的工程,配置好开发板的硬件参数和编译选项。 3. 导入UCOSIII操作系统源代码:将UCOSIII操作系统的源代码导入到工程中,并根据开发板的硬件参数进行配置。可以参考UCOSIII操作系统的官方文档进行配置。 4. 创建任务:在工程中创建两个简单的任务,分别为`Task1`和`Task2`。可以使用C语言编写任务函数,并在任务函数中使用UCOSIII提供的时钟节拍来控制任务的执行。 5. 初始化UCOSIII操作系统:在主函数中调用`OSInit()`函数来初始化UCOSIII操作系统。 6. 创建任务:在主函数中调用`OSTaskCreate()`函数来创建任务,并指定任务优先级、堆栈大小等参数。 7. 启动UCOSIII操作系统:在主函数中调用`OSStart()`函数来启动UCOSIII操作系统,开始运行任务。 8. 编译和下载程序:使用编程工具编译程序,并将程序下载到开发板中。 9. 运行实验:将开发板上电,并观察串口输出结果。可以看到`Task1`和`Task2`交替执行,并且它们的执行时间是通过UCOSIII提供的时钟节拍来控制的。 总的来说,UCOSIII操作系统时钟节拍实验需要实现任务的创建、时钟节拍的控制以及任务的执行等功能,可以通过以上步骤来实现该实验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值