uC/OS-II实验程序之三(任务管理)

本文介绍如何在uC/OS-II操作系统中使用OSTaskCreateExt创建任务,并通过自定义的TASK_USER_DATA统计栈的使用情况,利用OSTaskStatHook进行统计。实验详细解释了任务在系统中的重要性,以及如何配置和初始化相关参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【未完成】

任务(Task)对于uC/OS-II,就像进程对应于Windows一样,是系统内核的重要组成部分。

在本例中,用OSTaskCreateExt建立任务,并使用自定义的TASK_USER_DATA对栈的使用情况进行统计,统计使用自定义的统计函数OSTaskStatHook进行,这是与书中范例2的最大不同。在OS_CFG.H文件中,需要定义#define OS_CPU_HOOKS_EN    0,否则不能使用自定义的统计函数。

#include "includes.h"

/*
*********************************************************************************************************
*                                               CONSTANTS
*********************************************************************************************************
*/
#define  TASK_START_STK_SIZE           512
#define  TASK1_STK_SIZE                512
#define  TASK2_STK_SIZE                256

#define  TASK_START_PRIO                 4
#define  TASK1_PRIO                      5
#define  TASK2_PRIO                      6

#define  N_TASKS                         2       /* 除TaskStart外的任务数                             */

/*
*********************************************************************************************************
*                                                 类型
*********************************************************************************************************
*/
typedef  struct {
    INT32U  Max;
    INT32U  Min;
    INT32U  Ave;
    INT32U  Cur;
} TASK_USER_DATA;
/*
*********************************************************************************************************
*                                               VARIABLES
*********************************************************************************************************
*/

OS_STK                  TaskStartStk[TASK_START_STK_SIZE];      /* 为不同的任务定义不同的栈            */
OS_STK                  Task1Stk[TASK1_STK_SIZE];              
OS_STK                  Task2Stk[TASK2_STK_SIZE];

TASK_USER_DATA          TaskUserData[N_TASKS];                  /* 保存栈的使用情况                    */

/*
*********************************************************************************************************
*                                           FUNCTION PROTOTYPES
*******************************

一、实验目的 多道系统中,进程与进程之间存在同步与互斥关系。当就绪进程数大于处理机数时,需按照某种策略决定哪些进程先占用处理机。在可变分区管理方式下,采用首次适应算法实现主存空间的分配和回收。 本实验模拟实现处理机调度及内存分配及回收机制,以对处理机调度的工作原理以及内存管理的工作过程进行更深入的了解。 二、实验内容及要求 1.实验内容 (1)选择一个调度算法,实现处理机调度; (2)结合(1)实现主存储器空间的分配和回收。 2.实验具体要求 (1)设计一个抢占式优先权调度算法实现多处理机调度的程序,并且实现在可变分区管理方式下,采用首次适应算法实现主存空间的分配和回收。 (2)PCB内容包括:进程名/PID;要求运行时间(单位时间);优先权;状态;进程属性:独立进程、同步进程(前趋、后继)。 (3)可以随机输入若干进程,可随时添加进程,并按优先权排序; (4)从就绪队首选进程运行:优先权-1;要求运行时间-1;要求运行时间为0时,撤销该进程;一个时间片结束后重新排序,进行下轮调度; (5)考虑两个处理机,考虑同步进程的处理机分配问题,每次调度后,显示各进程状态,运行进程要显示在哪个处理机上执行。 (6)规定道数,设置后备队列和挂起状态。若内存中进程少于规定道数,可自动从后备队列调度一作业进入。被挂起进程入挂起队列,设置解挂功能用于将制定挂起进程解挂入就绪队列。 (7)结合实验一pcb增加所需主存大小,主存起始位置;采用首次适应算法分配主存空间。 (8)自行假设主存空间大小,预设操作系统所占大小并构造未分分区表。表目内容:起址、长度、状态(未分/空表目)。 (9)进程完成后,回收主存,并与相邻空闲分区合并。 (10)最好采用图形界面;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值