裸机系统
裸机系统通常分为轮询系统和前后台系统。
轮询系统
轮询系统即在裸机编程时,先初始化相关硬件,然后让主程序在一个死循环里面不断循环,顺序地处理各事件。
轮询系统是一种非常简单的软件结构,通常只适用于仅需要顺序执行代码且不需要外部事件来驱动就能完成的事件。
前后台系统
相比轮询系统,前后台系统是在轮询系统的基础上加入了中断系统,外部事件的响应在中断里面完成,事件的处理还是回到轮询系统值完成。
中断在这里称为前台,main()函数中的无限循环称为后台。
在顺序执行后台程序时,如果有中断,那么中断会打断后台程序的正常执行,转而执行中断服务程序,在中断服务程序中标记事件。虽然事件的响应的处理分开了,但是事件的处理环视在后台顺序执行,但相比轮询系统,前后台系统确保了事件不会丢失,再加上中断具有可嵌套的功能,这样可以大大提高程序的实时响应能力。
多任务系统
相比前后台系统,多任务系统的事件响应也是在中断中完成的,但是事件的处理是在任务中完成的。
相比前后台系统中后台顺序执行的程序主体,在多任务系统中,这个程序主体分割成一个个独立的****、无限循环且不能返回的小程序,这个小程序我们称为任务。每个任务都是独立的、互不干扰的,且具备各自的优先级。
区别
模型 | 事件响应 | 事件处理 | 特点 |
---|---|---|---|
轮询系统 | 主程序 | 主程序 | 轮询响应事件,轮询处理事件 |
前后台系统 | 中断 | 主程序 | 实时响应事件,轮询处理事件 |
多任务系统 | 中断 | 任务 | 实时响应事件,实时处理事件 |