gzyueqian
13352868059

嵌入式实时操作系统与通用操作系统有什么区别?

更新时间: 2021-08-20 09:44:59来源: 粤嵌教育浏览量:9974

由于嵌入式实时操作系统与通用操作系统的基本设计原则差别很大,因此在很多资源调度策略的选择上以及操作系统实现的方法上两者都具有较大的差异,这些差异主要体现在以下几点: 

(1)任务调度策略:

通用操作系统中的任务调度策略一般采用基于优先级的抢先式调度策略,对于优先级相同的进程则采用时间片轮转调度方式,用户进程可以通过系统调用动态地调整自己的优先级,操作系统也可根据情况调整某些进程的优先级。 

嵌入式实时操作系统中的任务调度策略目前使用最广泛的主要可分为两种,一种是静态表驱动方式,另一种是固定优先级抢先式调度方式。 

(2)内存管理:

通用操作系统的虚存管理机制中由于采用了LRU等页替换算法,使得大部分的访存需求能够快速地通过物理内存完成。

为解决虚存给系统带来的不可预测性,实时操作系统一般采用如下两种方式:一是在原有虚存管理机制的基础上增加页面锁功能,用户可将关键页面锁定在内存中,从而不会被swap程序将该页面交换出内存。二是采用静态内存划分的方式,为每个实时任务划分固定的内存区域。

(3)中断处理:

在通用操作系统中,大部分外部中断都是开启的,中断处理一般由设备驱动程序来完成。由于通用操作系统中的用户进程一般都没有实时性要求,而中断处理程序直接跟硬件设备交互,可能有实时性要求,因此中断处理程序的优先级被设定为高于任何用户进程。 

但对于嵌入式实时操作系统采用上述的中断处理机制是不合适的。一个实时任务在运行时被中断处理程序阻塞的时间开销也是不可预测的,从而使任务的实时性得不到保证。

(4)共享资源的互斥访问:

通用操作系统一般采用信号量机制来解决共享资源的互斥访问问题。 

对于实时操作系统,如果任务调度采用静态表驱动方式,共享资源的互斥访问问题在生成运行时间表时已经考虑到了,在运行时无需再考虑。如果任务调度采用基于优先级的方式,则传统的信号量机制在系统运行时很容易造成优先级倒置问题,为了解决这一问题,嵌入式实时操作系统往往对传统的信号量机制进行了一些扩展,引入了如优先级继承协仪、优先级顶置协议等机制。

(5)系统调用以及系统内部操作的时间开销:

为保证系统的可预测性,实时操作系统中的所有系统调用以及系统内部操作的时间开销都应是有界的,并且该界限是一个具体的量化数值。而在通用操作系统中对这些时间开销则未做如此限制。 

(6)系统的可重入性:

在通用操作系统中,核心态系统调用往往是不可重入的,当一低优先级任务调用核心态系统调用时,在该时间段内到达的高优先级任务必须等到低优先级的系统调用完成才能获得CPU,这就降低了系统的可预测性。因此,嵌入式实时操作系统中的核心态系统调用往往设计为可重入的。 

(7)辅助工具:

实时操作系统额外提供了一些辅助工具,如实时任务在最坏情况下的执行时间估算工具、系统的实时性验证工具等,可帮助工程师进行系统的实时性验证工作。 

嵌入式的这两种操作系统都有他们的用处,依靠嵌入式操作系统软件移植性大大提高网络协议更加丰富应用功能块逻辑清晰代码易读还能提供众多的开源工具、库以及软件。

免费预约试听课