目录

  • 多任务系统(操作系统)
  • 概述
  • 详述
  • 总结:


多任务系统(操作系统)

概述

多任务系统是根据程序的功能,把这个程序主体分割成一个个独立的,永远死循环且无法返回的程序单元,我们把这个程序单元称为任务。
任务由操作系统统一调度管理。

详述

与前后台系统相比,多任务系统的事件响应也是在中断中完成的,但是,事件的处理是在任务中完成的。
每个任务都是独立的,互不干扰的,并且也具有执行的优先级。在多任务系统中,任务与中断一样具有优先级,优先级高的任务会被优先执行。当一个外部紧急事件在中断里被标记后,如果处理该事件的任务的优先级足够高,该事件就会被立刻处理。相比于前后台系统,多任务系统的实时性又被提高了。

举例:

int main(void)
{
	/*系统初始化*/
	mcu_int();
	/*中断初始化*/
	Interrupt_init();
	
	RTOSInit();//系统初始化
	RTOSTaskInit();//任务初始化
	RTOSStart();//系统启动,多任务调度
}

RTOSTask1()
{
	while(1)
	{
		if(flag1)
		…..
	}
}
RTOSTask2()
{
	while(1)
	{
		if(flag2)
		…..
	}
}

...
RTOSTask_event_handle()//外部事件任务
{
	while(1)
	{
		if(flagisr)
		…..
	}
}

void interrupt_fun(void)
{
	…
}
RTOSTask_event_handle ();//是根据中断的一些信号完成某些功能的函数。

在加入操作系统后,我们在进行应用程序开发时,就不需要在花费精力去精心设计程序的执行顺序,只需根据开发需求设定任务的执行优先级,不用担心各个程序功能模块间是否存在相互干扰,这样程序开发反而会变得简单。
加入操作系统的弊端是,系统调度会存在额外的开销,占用部分的FLASH和RAM,但是现在随着嵌入式设备的硬件性能不断提升,这些不在是问题。

总结:

轮询系统、前后台系统和多任务系统并能简单的评判谁好谁坏,他们是不同时代的产物,在各自的应用领域都还在广泛使用。在进行项目开发时,使用何种系统还是要根据项目软件和硬件的具体需求来决定。

对比单片机开发1-裸核系统