UC/OSIII -2- 裸机系统与多任务系统

一、裸机系统

  • 裸机系统包括 轮询系统前后台系统

1.1 轮询系统

  • 弊端:若跑到一个时间久的循环中容易丢掉触发事件
int main(void)
{
	/* 硬件相关初始化 */
	 HardWareInit();

	 /* 无限循环 */
	 for (;;) {
		 /* 处理事情 1 */
		 DoSomethin1();
		
		 /* 处理事情 2 */
		 DoSomething2();
		
		 /* 处理事情 3 */
		 DoSomething3();
	 }
 }

1.2 前后台系统

  • 相比轮询系统,前后台系统是在轮询系统的基础上加入了中断
  • 外部事件的响应在中断里面完成,事件的处理还是回到轮询系统中完成。
  • 中断在这里我们称为前台, main 函数里面的无限循环我们称为后台。
int flag1 = 0;
int flag2 = 0;
int flag3 = 0;
int main(void)
{
	/* 硬件相关初始化 */
	HardWareInit();

	 /* 无限循环 */
	 for (;;) {
		 if (flag1) {
			/* 处理事情 1 */
			DoSomethin1();
		 }

		if (flag2) {
			/* 处理事情 2 */
			DoSomething2();
		}

		if (flag3) {
			/* 处理事情 3 */
			DoSomething3();
		}
	}
}

void ISR1(void)
{
	/* 置位标志位 */
	flag1 = 1;
	/* 如果事件处理时间很短,则在中断里面处理
	如果事件处理时间比较长,在回到前台处理 */
	DoSomethin1();
}

void ISR2(void)
{
	/* 置位标志位 */
	flag2 = 1;

	/* 如果事件处理时间很短,则在中断里面处理
	如果事件处理时间比较长,在回到前台处理 */
	DoSomethin2();
}

void ISR3(void)
{
	/* 置位标志位 */
	flag3 = 1;
	/* 如果事件处理时间很短,则在中断里面处理
	如果事件处理时间比较长,在回到前台处理 */
	DoSomethin3();
}

二、多任务系统

  • 在多任务系统中,任务跟中断一样,优先级高的任务会被优先执行
  • 如果一个紧急的时间在中断被标记之后,如果时间对应的任务的优先级足够高,就会立即得到相应
  • 实时性显著提高
  • 每个任务都是独立的,互不干扰的,且具备自身的优先级,它由操作系统调
    度管理。
int flag1 = 0;
int flag2 = 0;
int flag3 = 0;

int main(void)
{
	/* 硬件相关初始化 */
	HardWareInit();

	/* OS 初始化 */
	RTOSInit();

	/* OS 启动,开始多任务调度,不再返回 */
	RTOSStart();
}

void ISR1(void)
{
	/* 置位标志位 */
 	flag1 = 1;
}

void ISR1(void)
{
	/* 置位标志位 */
	flag1 = 2;
}

void ISR3(void)
{
	/* 置位标志位 */
	flag3 = 1;
}

void DoSomethin1(void)
{
	/* 无限循环,不能返回 */
	for (;;) {
		/* 任务实体 */
		if (flag1) {
	
		}
	}
}

void DoSomethin2(void)
{
	/* 无限循环,不能返回 */
	for (;;) {
		/* 任务实体 */
		if (flag2) {

		 }
 	}
}

void DoSomethin3(void)
{
	/* 无限循环,不能返回 */
	for (;;) {
		/* 任务实体 */
		if (flag3) {
	
		}
	}
}

三、轮询、前后台和多任务系统软件模型区别

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值