目录
- 多任务系统(操作系统)
- 概述
- 详述
- 总结:
多任务系统(操作系统)
概述
多任务系统是根据程序的功能,把这个程序主体分割成一个个独立的,永远死循环且无法返回的程序单元,我们把这个程序单元称为任务。
任务由操作系统统一调度管理。
详述
与前后台系统相比,多任务系统的事件响应也是在中断中完成的,但是,事件的处理是在任务中完成的。
每个任务都是独立的,互不干扰的,并且也具有执行的优先级。在多任务系统中,任务与中断一样具有优先级,优先级高的任务会被优先执行。当一个外部紧急事件在中断里被标记后,如果处理该事件的任务的优先级足够高,该事件就会被立刻处理。相比于前后台系统,多任务系统的实时性又被提高了。
举例:
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-裸核系统